高校数学10分プログラミング(数学Ⅰ編 1.2次関数)3日目「2次関数(一般形)のグラフを描く」解説
マガジンリスト > 数学Ⅰ編 1.2次関数 > 3日目 解説
本日の課題、おつかれさまでした。
2次関数(一般形)のグラフを描くプログラムを作成することができたでしょうか。
解答例
2次関数(一般形)
$$
y = ax^2 +bx + c
$$
のグラフを描くプログラムは、まずスケッチ「drawQuadraticFunctionStandardForm」の「drawQuadraticFunctionStandardForm」タブのテキストエディタに書かれた quadraticfunction 関数の部分に
// 2次関数の一般形
float quadraticfunction(
float a, // 2次の係数
float b, // 1次の係数
float c, // 定数項
float x
){
return a*x*x + b*x + c;
}
を書き加えます。また、今回の課題は一般形の2次関数$${y=x^2-4x+6}$$を描くことですので、2次関数の係数として
// 2次関数の係数
float a = 1.0;
float b = -4.0;
float c = 6.0;
と設定します。その結果、ソースコード全体は下記のソースコード2となります。
// 2次関数の一般形y=ax^2+bx+cのグラフを描く
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 = -4.0;
float c = 6.0;
// グラフを描画
float x, y; // 関数の座標
float X, Y; // キャンバス上の座標
beginShape();
for(int i=0; i<=plot_num; i++){
x = x_l + (x_r - x_l) / plot_num * i; // 関数のx座標
y = quadraticfunction(a, b, c, x); // 関数の値
// キャンバス上の座標位置に換算
X = width / 2.0 / x_range * x;
Y = height / 2.0 / y_range * y;
vertex(X, Y);
}
endShape();
}
// 2次関数の一般形
float quadraticfunction(
float a, // 2次の係数
float b, // 1次の係数
float c, // 定数項
float x
){
return a*x*x + b*x + c;
}
ソースコード2 2次関数(一般形)のグラフを描くプログラム
実行ボタン(左上の ▶ ボタン)を押すと、キャンバス上に2次関数
$$
y=x^2 - 4x + 6
$$
のグラフが描かれます(図1)。
やってほしいこと
2次関数(一般形)の係数$${a, b, c}$$を置き換えて、他の2次関数も描いてみてください。例えば、$${y = x^2 +4x+3}$$であれば、ソースコード2の
// 2次関数の係数
float a = 1.0;
float b = -4.0;
float c = 6.0;
の部分を
// 2次関数の係数
float a = 1.0;
float b = 4.0;
float c = 3.0;
に変更して、実行ボタンを押すだけでグラフを描くことができます。
本日は以上です。
明日は、2次関数の軸と頂点を描くプログラムを作成します。
明日もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa