見出し画像

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

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

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

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

解答例

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

// 2次方程式の解の個数を判別式で分類する
void setup(){

  // 2次方程式ax^2+bx+cの係数
  float a = 1.0;
  float b = -2.0;
  float c = 0.0;
  
  // 判別式
  float D = b*b-4.0*a*c;
  
  // 2次方程式の解の個数を分類
  if( D > 0 ){
    println("異なる2つの実数解をもつ");
  } else if( D == 0 ){
    println("ただ1つの実数解(重解)をもつ");
  } else {
    println("実数解を持たない");
  }   
}

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

このソースコード1を、Processingの開発環境ウィンドウを開いて(スケッチ名を「discriminantQuadraticEquation」としています)、テキストエディタ部分に書いて実行すると、$${D=4}$$となるので、図1のように、コンソールに課題(1)の実数解の個数の算出結果として「異なる2つの実数解をもつ」と表示されます。

図1 課題(1)の実数解の個数

また、ソースコード1の2次方程式の係数の部分を課題(2)に合わせて、$${a=1, b=-2, c=1}$$として実行すると、$${D=0}$$となるので、図2のように、コンソールに課題(2)の実数解の個数の算出結果として「ただ1つの実数解(重解)をもつ」と表示され、課題(3)に合わせて、$${a=1, b=-2, c=2}$$として実行すると、$${D=-4}$$となるので、図3のように、コンソールに課題(3)の実数解の個数の算出結果として「実数解を持たない」と表示されます。

図2 課題(2)の実数解の個数


図3 課題(3)の実数解の個数


プログラムの解説

2次方程式は、判別式$${D}$$を計算して、その値によって条件分岐をすることで実数解の個数を分類することができます。条件分岐については、記事『高校数学をプログラミングで解く(準備編)「1-4 条件分岐、繰り返し処理」』の条件分岐の節で説明していますので、必要であれば、改めて見直しておいてください。


本日は以上です。
明日は、2次方程式の実数解を求めるプログラムを考えていきたいと思います。

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

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

MK’s papa

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