![見出し画像](https://assets.st-note.com/production/uploads/images/150663362/rectangle_large_type_2_9ba7ccf2afdcc30a262c5147dd4adb76.jpeg?width=1200)
高校数学10分プログラミング(数学Ⅰ編 1.2次関数)3日目「2次関数(一般形)のグラフを描く」
マガジンリスト > 数学Ⅰ編 1.2次関数 > 3日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学I編 1.2次関数)の3日目です。
本日の課題は、2次関数(一般形)のグラフを描くプログラムを作成することです。
課題
一般形の2次関数
$$
y = a x^2 +bx + c
$$
のグラフを描くプログラムを準備した上で、2次関数
$$
y = x^2 - 4x + 6
$$
のグラフを実行ウィンドウのキャンバス上に描いてください。
ヒント
座標軸を描くための関数 setAxes を利用して2次関数(一般形)のグラフを描くスケッチ「drawQuadraticFunctionStandardForm」を準備しました。以下の zip ファイルをダウンロードして展開または解凍してご利用ください。
展開または解凍して得られるスケッチ「drawQuadraticFunctionStandardForm」の中のpdeファイル「drawQuadraticFunctionStandardForm.pde」をダブルクリックしてスケッチ「drawQuadraticFunctionStandardForm」の開発環境ウィンドウを立ち上げます。開発環境ウィンドウのタブ欄で「drawQuadraticFunctionStandardForm」タブを選択すると、そのテキストエリアに以下のソースコードが書かれています。
// 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 =
float b =
float c =
// グラフを描画
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
}
ソースコード1 スケッチ「drawQuadraticFunctionStandardForm」の 「drawQuadraticFunctionStandardForm」タブに書かれているコード
まず、このソースコード1の中の
// 2次関数の一般形
float quadraticfunction(
float a, // 2次の係数
float b, // 1次の係数
float c, // 定数項
float x
){
return
}
の部分に、課題の2次関数(一般形)を書き加えてみてください。そして、ソースコード1の
// 2次関数の係数
float a =
float b =
float c =
の部分に、2次関数$${y = x^2 - 4x + 6}$$の係数を設定してください。その結果、実行ボタンを押すと、キャンバス上に座標軸とともに2次関数が描かれるはずです。
それでは、よろしくお願いします。
MK's papa
この記事が気に入ったらサポートをしてみませんか?