見出し画像

高校数学10分プログラミング(数学Ⅰ編 1.2次関数)4日目「2次関数の軸と頂点を描く」解説

マガジンリスト > 数学Ⅰ編 1.2次関数 > 4日目 解説

本日の課題、おつかれさまでした。

2次関数のグラフにその軸と頂点を描くプログラムを作成することができたでしょうか。

解答例

2次関数(一般形)

$$
y = ax^2 +bx + c
$$

の軸$${x = p}$$と頂点$${(p,q)}$$は、係数$${a,b,c}$$で表すと、

$$
p= -\frac{b}{2a}, \ q = -\frac{b^2-4ac}{4a}
$$

で表すことができます。詳細は記事『高校数学をプログラミングで解く(数学I編)「1-2 2次関数のグラフ」』の2次関数の軸と頂点を描くの節を見てください。
これらの式をプログラムで表すと

  // 2次関数の軸x=pと頂点(p,q)
  float p = -b/2.0/a;
  float q = -(b*b-4.0*a*c)/4.0/a;

となりますので、ソースコード2にこれを追加した上で、ソースコード2をソースコード1に追加すると、

// 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次関数の軸x=pと頂点(p,q)
  float p = -b/2.0/a;
  float q = -(b*b-4.0*a*c)/4.0/a;
  
  // 軸と頂点をキャンバス上の座標に変換
  float P, Q;
  P = width / 2.0 / x_range * p;
  Q = height / 2.0 / y_range * q;
  
  // 2次関数の軸を描画
  stroke(0,0,255);
  line(P, -height/2.0, P, height/2.0);
  
  // 2次関数の頂点を描画
  stroke(255,0,0);
  strokeWeight(5);
  point(P, Q);
  
}

// 2次関数の一般形
float quadraticfunction(
  float a, // 2次の係数
  float b, // 1次の係数
  float c, // 定数項
  float x
){
  return a*x*x + b*x + c;
}

ソースコード3 2次関数のグラフと共にその軸と頂点を描くプログラム(完成版)

スケッチ「drawQuadraticFunctionwithAxisandVertex」の「drawQuadraticFunctionwithAxisandVertex」タブを選択し、そのテキストエリアのソースコードを上記のソースコード3で書き換えます。
実行ボタン(左上の ▶ ボタン)を押すと、キャンバス上に2次関数

$$
y=x^2 - 4x + 6
$$

のグラフと共にその軸(青色)と頂点(赤色)が描かれます(図1)。

図1 キャンバス上に2次関数のグラフと共にその軸と頂点が描かれる


やってほしいこと

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

この記事が気に入ったらサポートをしてみませんか?