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