この投稿では、C言語を使用して二次方程式の解を求める方法を解説します。特に、与えられた係数から実数解や虚数解を求めるプログラムを作成する方法を説明します。
1. 二次方程式とは
二次方程式は、ax² + bx + c = 0という形の方程式であり、a、b、cは定数です。この方程式を解くことで、xの値を求めることができます。解の公式は以下のようになります。
x = (-b ± √(b²-4ac)) / 2a
ここで、b²-4acは判別式と呼ばれ、解の種類(実数解か虚数解か)を決定します。
2. C言語での実装
以下のC言語プログラムは、二次方程式の解を求めるためのコードです。このプログラムでは、判別式の値に応じて解を表示します。
#include
#include // sqrt()を使うため
extern void nigi(double a, double b, double c);
void main() { nigi(1.0, 2.0, 3.0); nigi(1.0, 2.0, 1.0); nigi(2.0, 3.0, -4.0); }
void nigi(double a, double b, double c) { double d;
d = b * b - 4.0 * a * c;
if(d > 0.0) {
printf("異なる 2 実根\n");
printf("x1 = %f\n", (-b + sqrt(d)) / (2.0 * a));
printf("x2 = %f\n", (-b - sqrt(d)) / (2.0 * a));
} else if(d == 0.0) {
printf("重根\n");
printf("x = %f\n", -b / (2.0 * a));
} else {
printf("虚数\n");
printf("x1 = %f + i(%f)\n", -b / (2.0 * a), sqrt(-d) / (2.0 * a));
printf("x2 = %f - i(%f)\n", -b / (2.0 * a), sqrt(-d) / (2.0 * a));
}
}
3. プログラムの動作
このプログラムでは、nigi関数が実行され、与えられたa、b、cの値に基づいて判別式dを計算します。判別式dが正の場合、2つの異なる実数解が求められ、dが0の場合は重根が求められます。dが負の場合は虚数解が表示されます。
具体的な動作を示すために、nigi関数を3回呼び出しています。1回目は解が虚数解、2回目は重根、3回目は実数解です。
4. プログラムの改良と注意点
このプログラムは、二次方程式の解を求める基本的なものですが、以下の点に注意する必要があります。
- 入力値が不正な場合のエラーチェックを追加する。
- 非常に大きな値や小さな値を扱う場合の精度の問題に配慮する。
- ユーザーインターフェースを改善して、より直感的な操作を実現する。
まとめ
C言語を使って二次方程式の解を求める方法を学ぶことができました。再帰的な関数呼び出しを使わずに、比較的シンプルな方法で問題を解決できることが分かります。今後、複雑な方程式を扱う際にも、再帰や条件分岐を効果的に使って問題を解くことができます。


コメント