見出し画像

高校数学10分プログラミング(数学Ⅰ編 1.2次関数)12日目「2次方程式の実数解を求める」解説

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

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

2次方程式$${ax^2+bx+c=0}$$の実数解を求めるプログラムを作成することができたでしょうか。

解答例

2次方程式$${ax^2+bx+c=0}$$の実数解を求めるプログラムは以下のソースコード2のようになります。なお、ソースコード2は、2次方程式(1)$${x^2-2x=0}$$を例に作成しています。

// 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;
    x1 = (-b + sqrt(D))/2.0/a;
    x2 = (-b - sqrt(D))/2.0/a;
    print("異なる2つの実数解をもつ: ");
    println(x1, x2);
  } else if( D == 0 ){
    float x1;
    x1 = -b/2.0/a;
    print("ただ1つの実数解(重解)をもつ: ");
    println(x1);
  } else {
    println("実数解を持たない");
  }   
}

ソースコード2 2次方程式の実数解を求めるプログラム

このソースコード2を、Processingの開発環境ウィンドウを開いて(スケッチ名を「solveQuadraticEquation」としています)、テキストエディタ部分に書いて実行すると、図1のように、コンソールに課題(1)の解として「異なる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 課題(2)の解
図3 課題(3)の解


2次方程式の実数解を求めることについては、記事『高校数学をプログラミングで解く(数学I編)「1-5 2次方程式」』で扱っていますので、そちらも一度読んでおいてください。


本日は以上です。
明日は、2次関数のグラフと2次方程式の実数解の関係を考えていきたいと思います。

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

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

MK’s papa

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