2次方程式の解を計算する
当ページのリンクには広告が含まれています。
スポンサーリンク
ここでは「2次方程式の解」を計算するサンプルプログラムを紹介します。
2次方程式の解の公式
まずは2次方程式の解を求める「解の公式」の復習をしておきましょう。
2次方程式(\(a\neq0\))
\[ ax^2 + bx + c = 0 \]の解は
\[ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} \]で与えられます。
それではサンプルプログラムをみてみましょう。
サンプルプログラム
2次方程式の解を計算するサンプルプログラムです。
/*
* C言語のサンプルプログラム - Webkaru
* - 2次方程式の解を計算 -
*/
#include <stdio.h>
#include <math.h>
int main(void)
{
/* 2次方程式の定数 */
float a, b, c;
/* 判別式 */
float discriminant;
/* 2次方程式の解 */
float kai1, kai2;
/* 解が複素数を含む場合 */
float real, imag;
/* 2次方程式の定数を入力 */
printf("2次方程式の定数を入力してください。\n");
printf("a = ");
scanf("%f", &a);
printf("b = ");
scanf("%f", &b);
printf("c = ");
scanf("%f", &c);
/* 判別式を計算 */
discriminant = b * b - 4 * a * c;
/* 判別式に数値による条件分岐 */
if ( discriminant > 0 ) {
// 解の計算
kai1 = ( -b + sqrt(discriminant) ) / (2*a) ;
kai2 = ( -b - sqrt(discriminant) ) / (2*a);
// 解の出力
printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);
} else if ( discriminant == 0 ) {
// 解の計算
kai1 = kai2 = -b / ( 2 * a );
// 解の出力
printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);
} else {
// 解の計算
real = -b / (2*a);
imag = sqrt(-discriminant) / (2*a);
// 解の出力
printf("2次方程式の解: %.2f+%.2fi, %.2f-%.2fi\n", real, imag, real, imag);
}
return 0;
}
このサンプルでは判別式
\[ D = \sqrt{b^2-4ac} \]を使って条件分岐し、2次方程式の解を計算・出力しています。判別式の平方根(sqrt)を計算するためにヘッダーファイル「math.h」を読み込んでいます。
それではいくつかの実行結果をみてみましょう。
2次方程式の定数を入力してください。 a = 1 b = 2 c = 3 2次方程式の解: -1.00+1.41i, -1.00-1.41i
2次方程式の定数を入力してください。 a = 6.2 b = 12 c = 3.4 2次方程式の解: x = -0.34, -1.59
2次方程式の定数を入力してください。 a = 4 b = 4 c = 1 2次方程式の解: x = -0.50, -0.50