![見出し画像](https://assets.st-note.com/production/uploads/images/150670337/rectangle_large_type_2_e8660c7778d25df289dc4d9a274c5b41.jpeg?width=1200)
高校数学10分プログラミング(数学Ⅰ編 1.2次関数)14日目「2次関数のグラフと2次不等式」
マガジンリスト > 数学Ⅰ編 1.2次関数 > 14日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学I編 1.2次関数)の14日目です。
本日の課題は、2次不等式を考えるための2次関数のグラフを描くプログラムを作成することです。
2次不等式をグラフを用いて解く
たとえば、2次不等式
$$
x^2 - 2x > 0
$$
を解くことを考えます。このとき、2次関数
$$
f(x) = x^2 - 2x
$$
のグラフを図1のように、$${f(x)>0}$$の領域を赤色、$${f(x)=0}$$の点を緑色、$${f(x)<0}$$の領域を青色で描くと、2次不等式の解が考えやすくなります。
![](https://assets.st-note.com/img/1723148370798-3AiX7rrA6M.jpg)
$${f(x)=x^2-2x=0}$$の解は$${x=0,2}$$であるので、2次不等式$${f(x)=x^2-2x>0}$$の解は、図1の赤色の領域をみて、$${x < 0, \ x > 2}$$であることがわかります。
課題
図1のグラフを描くプログラムを作成してください。
ヒント
今回の課題のプログラムの作成にあたり、前回の課題『高校数学10分プログラミング(数学Ⅰ編)13日目「2次関数のグラフと2次方程式の実数解の関係」』で作成したスケッチ「drawQuadraticFunctionwithCommonPoint」のソースコードが参考になります。以下の zip ファイルをダウンロードして展開または解凍してご利用ください。
展開または解凍して得られるスケッチ「solveQuadraticInequality」の中のpdeファイル「solveQuadraticInequality.pde」をダブルクリックしてスケッチ「solveQuadraticInequality」の開発環境ウィンドウを立ち上げます。開発環境ウィンドウのタブ欄で「solveQuadraticInequality」タブを選択すると、そのテキストエリアに以下のソースコードが書かれています。
// 2次不等式を2次関数のグラフを描いて考える
void setup(){
size(500,500);
noLoop();
float x_range = 10.0; // x軸の表示範囲 -x_rangeからx_rangeまで
float y_range = 10.0; // y軸の表示範囲 -y_rangeからy_rangeまで
setAxes(x_range, y_range); // 座標軸の準備
noFill();
stroke(0,0,0);
// グラフの定義域
float x_l = -x_range; // 定義域の左端
float x_r = x_range; // 定義域の右端
int plot_num = 200; // グラフを描くための頂点の個数
// 2次関数の係数
float a = 1.0;
float b = -2.0;
float c = 0.0;
// 2次方程式の解を求める
float x1, x2; // x1 < x2
x1 = (-b - sqrt(b*b-4.0*a*c))/2.0/a;
x2 = (-b + sqrt(b*b-4.0*a*c))/2.0/a;
// グラフを描画
float x, y; // 関数の座標
float X, Y; // キャンバス上の座標
// f(x)>0の領域は赤色で描く
stroke(255,0,0);
// 定義域 x_l < x < x1 のグラフを描く
// 定義域 x2 < x < x_r のグラフを描く
// f(x)<0の領域は青色で描く
stroke(0,0,255);
// 定義域 x1 < x < x2 のグラフを描く
// f(x)=0の点は緑色で描く
stroke(0,255,0);
strokeWeight(5);
}
// 2次関数の一般形
float quadraticfunction(
float a, // 2次の係数
float b, // 1次の係数
float c, // 定数項
float x
){
return a*x*x + b*x + c;
}
ソースコード1 2次関数を描くプログラム(未完成)
ソースコード1に記載している以下のコメント
// 定義域 x_l < x < x1 のグラフを描く
// 定義域 x2 < x < x_r のグラフを描く
// 定義域 x1 < x < x2 のグラフを描く
// f(x)=0の点は緑色で描く
stroke(0,255,0);
strokeWeight(5);
の下に、それぞれコードを追記してプログラムを完成させてください。
それでは、よろしくお願いします。
MK's papa
この記事が気に入ったらサポートをしてみませんか?