見出し画像

高校数学10分プログラミング(数学Ⅱ編 1.複素数と方程式)4日目「2次方程式の解を求める」解説

マガジンリスト > 数学Ⅱ編 1.複素数と方程式 > 4日目 解説

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

2次方程式の解を求めるプログラムを作成することができたでしょうか。

解答例

課題(1)について、2次方程式$${ax^2+bx+c=0}$$の解の個数を判別した上で、2次方程式の解を求めて、その結果をコンソールに出力するプログラムはソースコード2のようになります。

// 2次方程式の解を求める
void setup(){

  // 2次方程式ax^2+bx+c=0の係数
  float a = 1.0;
  float b = -2.0;
  float c = 0.0;  
  
  // 判別式
  float D = b*b-4.0*a*c;
  
  // 2次方程式の解の個数を求め、その解も求める
  if( D > 0 ){
    float x1, x2;
    // 1つ目の実数解
    x1 = (-b + sqrt(D))/2.0/a;
    // 2つ目の実数解
    x2 = (-b - sqrt(D))/2.0/a;
    print("異なる2つの実数解をもつ: ");
    println(x1, x2);
  } else if( D == 0 ){
    float x1;
    // 1つの実数解(重解)
    x1 = -b/2.0/a;
    print("ただ1つの実数解(重解)をもつ: ");
    println(x1);
  } else {
    float x_r, x_i;
    // 2つの虚数解の実部
    x_r = -b/2.0/a;
    // 2つの虚数解の虚部
    x_i = sqrt(-D)/2.0/a;
    print("異なる2つの虚数解をもつ: ");
    println(x_r + "+" + abs(x_i) + "i",x_r + "-" + abs(x_i) + "i"); 
  }   
}

ソースコード2 2次方程式$${ax^2+bx+c=0}$$の解を求めるプログラム(完成版)

開発環境ウィンドウを開いて(スケッチ名を「solveQuadraticEquation」としています)、ソースコード2をそのテキストエディタ部分に記述して、実行してみると、コンソールに

異なる2つの実数解をもつ: 2.0 0.0

と出力されます(図1)。これは、課題(1)の2次方程式の係数が$${a=1, b=-2, c=0}$$となっているため$${D=4}$$となり、「異なる2つの実数解をもつ」という結果で、解の公式から2つの実数解は$${2.0}$$と$${0.0}$$となります。

図1 課題(1)の結果

また、ソースコード2の2次方程式の係数の部分を課題(2)に合わせて、$${a=1, b=-2, c=1}$$として実行すると、図2のように、コンソールに課題(2)の解として「ただ1つの実数解(重解)をもつ: 1.0」と表示され、課題(3)に合わせて、$${a=1, b=-2, c=2}$$として実行すると、図3のように、コンソールに課題(3)の解として「異なる2つの虚数解をもつ: 1.0+1.0i 1.0-1.0i」と表示されます。

図2 課題(2)の結果
図3 課題(3)の結果


本日は以上です。
明日は、解と係数の関係に関する問題を考えます。

明日もよろしくお願いします。

※今回の課題とその解答例について質問や疑問がある方は、本記事の下部にあるコメント欄からお願いします。

MK’s papa

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