![見出し画像](https://assets.st-note.com/production/uploads/images/150666655/rectangle_large_type_2_369cf61f9747d33f2fcd23f95a24b244.jpeg?width=1200)
高校数学10分プログラミング(数学Ⅰ編 1.2次関数)8日目「2次関数の最大値と最小値を計算する」
マガジンリスト > 数学Ⅰ編 1.2次関数 > 8日目 課題
おはようございます。
本日は、高校数学10分プログラミング(数学I編 1.2次関数)の8日目です。
本日の課題は、閉じた定義域で2次関数の最大値と最小値を計算するプログラムを作成することです。
閉じた定義域
閉じた定義域とは、定義域の両端が定義域に含まれているときにそのように言います。例えば、定義域$${-1 \leq x \leq 1}$$は両端の$${x=-1}$$と$${x=1}$$とが定義域に含まれていますので、閉じた定義域と言えます。
課題
次の関数の最大値と最小値を計算し、開発環境ウィンドウのコンソールに出力するプログラムを作成してください。
$$
y=x^2 \ (-2 \leq x \leq 3)
$$
ヒント
今回、2次関数の最大値と最小値を計算するための手順は次のようにしてみてください。
最大値を算出するアルゴリズム
① 最大値を格納するfloat型の変数$${y_{\mathrm{max}}}$$を準備し、できるだけ小さな値で初期化しておきます。
② 定義域$${x_l \leq x \leq x_r}$$をplot_num個に分割し、小さい方から順にその$${x}$$での関数の値をもとめ、その関数の値が$${y_{\mathrm{max}}}$$の値より大きければ、$${y_{\mathrm{max}}}$$をその時の関数の値で更新します。また同時に、関数が最大値を取るときの$${x}$$の値$${x_{\mathrm{max}}}$$を更新します。
③ 定義域全体で②を行った結果、最後に残った$${y_{\mathrm{max}}}$$の値が最大値となります。
最小値を算出するアルゴリズム
① 最小値を格納するfloat型の変数$${y_{\mathrm{min}}}$$を準備し、できるだけ大きな値で初期化しておきます。
② 定義域$${x_l \leq x \leq x_r}$$をplot_num個に分割し、小さい方から順にその$${x}$$での関数の値をもとめ、その関数の値が$${y_{\mathrm{min}}}$$の値より小さければ、$${y_{\mathrm{min}}}$$をその時の関数の値で更新します。また同時に、関数が最小値を取るときの$${x}$$の値$${x_{\mathrm{min}}}$$を更新します。
③ 定義域全体で②を行った結果、最後に残った$${y_{\mathrm{min}}}$$の値が最小値となります。
2次関数の最大値と最小値を計算するプログラム
2次関数の最大値と最小値を計算するプログラムは、以下のソースコード1のようになります。ただし、肝心の最大値と最小値を計算する処理は記述されておらず、未完成となっています。
// 2次関数の最大値と最小値を計算する
void setup(){
// 2次関数の係数
float a = 1.0;
float b = 0.0;
float c = 0.0;
// 定義域
float x_l = -2.0; // 定義域の左端
float x_r = 3.0; // 定義域の右端
int plot_num = 200; // 定義域を分割するための個数
float x, y; // 関数の座標
float y_max = MIN_FLOAT; // 最大値 float型の最大値で初期化
float x_max = 0.0; // 関数が最大値を取るときのxの値
float y_min = MAX_FLOAT; // 最小値 float型の最大値で初期化
float x_min = 0.0; // 関数が最小値を取るときのxの値
// 2次関数の最大値と最小値を計算する処理
// 2次関数の最大値と最小値をコンソールに出力する
println("最大値 ", x_max, y_max);
println("最小値 ", x_min, y_min);
}
// 2次関数の一般形
float quadraticfunction(
float a, // 2次の係数
float b, // 1次の係数
float c, // 定数項
float x
){
return a*x*x + b*x + c;
}
ソースコード1 2次関数の最大値と最小値を計算するプログラム(未完成)
ソースコード1の
// 2次関数の最大値と最小値を計算する処理
の部分の下に、上記最大値を算出するアルゴリズムや最小値を算出するアルゴリズムを参考にして、2次関数の最大値と最小値を計算する処理を記述し、プログラムを完成させてください。
その後、スケッチ名を「max_min_QuadraticFunction」として開発環境ウィンドウを立ち上げて、実行してみてください。
それでは、よろしくお願いします。
MK's papa
この記事が気に入ったらサポートをしてみませんか?