![見出し画像](https://assets.st-note.com/production/uploads/images/150664891/rectangle_large_type_2_6f565f9d183f22cdc2eb20c191ebe321.jpeg?width=1200)
高校数学10分プログラミング(数学Ⅰ編 1.2次関数)5日目「2次関数(標準形)のグラフを描く」解説
マガジンリスト > 数学Ⅰ編 1.2次関数 > 5日目 解説
本日の課題、おつかれさまでした。
2次関数(標準形)のグラフを描くプログラムを作成することができたでしょうか。
解答例
2次関数(標準形)
$$
y = a(x-p)^2 + q
$$
のグラフを描くプログラムはまずスケッチ「drawQuadraticFunctionVertexForm」の「drawQuadraticFunctionVertexForm」タブのテキストエディタに書かれた quadraticfunction 関数の部分に
// 2次関数の標準形
float quadraticfunction(
float a, // 2次の係数
float p, // 2次関数の軸
float q, // 頂点のy座標
float x
){
return a*(x-p)*(x-p) + q;
}
を書き加えます。また、今回の課題は標準形の2次関数$${y=(x-2)^2+2}$$を描くことですので、2次関数の係数として
// 2次関数(標準形)の係数
float a = 1.0;
float p = 2.0;
float q = 2.0;
と設定します。その結果、ソースコード全体は下記のソースコード2となります。
// 2次関数の標準形y=a(x-p)^2+qのグラフを描く
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 p = 2.0;
float q = 2.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, p, q, 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 p, // 2次関数の軸
float q, // 頂点のy座標
float x
){
return a*(x-p)*(x-p) + q;
}
ソースコード2 2次関数(標準形)のグラフを描くプログラム
実行ボタン(左上の ▶ ボタン)を押すと、キャンバス上に2次関数
$$
y=(x-2)^2 + 2
$$
のグラフが描かれます(図1)。
![](https://assets.st-note.com/img/1722366805499-524ukteu63.png)
やってほしいこと
2次関数(標準形)の係数$${a, p, q}$$を置き換えて、他の2次関数も描いてみてください。例えば、$${y = (x+2)^2 -1}$$であれば、ソースコード2の
// 2次関数(標準形)の係数
float a = 1.0;
float p = 2.0;
float q = 2.0;
の部分を
// 2次関数(標準形)の係数
float a = 1.0;
float p = -2.0;
float q = -1.0;
に変更して、実行ボタンを押すだけでグラフを描くことができます。
本日は以上です。
明日は、2次関数の平行移動を行うプログラムを考えます。
明日もよろしくお願いします。
※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。
MK’s papa
この記事が気に入ったらサポートをしてみませんか?