2 次方程式の解を求める

CBeginner
オンラインで実践に進む

はじめに

2 次方程式は、ab、およびcが定数である形の方程式ax²+bx+c=0です。この実験では、2 次方程式の解を求めるプログラムを書く方法を学びます。

2 次方程式を解くには、次の式を使用します。

x = (-b ± sqrt(b² - 4ac)) / 2a

注:コーディングを練習し、gcc を使ってコンパイルと実行方法を学ぶには、自分で~/project/main.cファイルを作成する必要があります。

cd ~/project
## main.cを作成する
touch main.c
## main.cをコンパイルする
gcc main.c -o main
## mainを実行する
./main

入力係数を取得する

2 次方程式の係数 a、b、および c について、ユーザーからの入力を受け取ります。これらの係数は、2 次方程式の解を計算するために使用されます。

float a, b, c, determinant, r1, r2, real, imag;
printf("\nEnter coefficients a, b and c: ");
scanf("%f%f%f", &a, &b, &c);

判別式を計算する

次に、2 次方程式の判別式の値を、次の式を使って計算します。

判別式 = b*b - 4*a*c;

判別式 = b*b - 4*a*c;

解の性質を確認する

次に、ステップ 2 で計算した判別式の値に基づいて、2 次方程式の解の性質を確認します。判別式が 0 より大きい場合、解は実数で異なります。判別式が 0 に等しい場合、解は実数で等しくなります。判別式が 0 未満の場合、解は複素数で虚数です。

if(判別式 > 0)    // 両方の解は実数
{
    r1 = (-b + sqrt(判別式))/2*a;  // 括弧が重要
    r2 = (-b - sqrt(判別式))/2*a;
    printf("\n\n\n解は:%.2f と %.2f ", r1, r2);
}
else if(判別式 == 0)   // 両方の解は実数で等しい
{
    r1 = r2 = -b/(2*a); // 括弧が重要
    printf("\n\n\n解は:%.2f と %.2f ", r1, r2);
}
/*
    判別式 < 0 - 両方の解は虚数で、
    real + i*imaginary の形
*/
else
{
    real = -b/(2*a);
    imag = sqrt(-判別式)/(2*a);
    printf("\n\n\n解は %.2f + i%.2f と %.2f - i%.2f ", real, imag, real, imag);
}

解を出力する

最後に、ステップ 3 で計算した解の性質に基づいて、2 次方程式の解を出力します。

完全なコードを書く

#include<stdio.h>
#include<math.h>  // sqrt() 関数を使用するために必要
int main()
{
    float a, b, c, 判別式, r1, r2, real, imag;
    printf("\n係数 a、b、c を入力してください:");
    scanf("%f%f%f", &a, &b, &c);

    判別式 = b*b - 4*a*c;

    if(判別式 > 0)    // 両方の解は実数
    {
        r1 = (-b + sqrt(判別式))/2*a;  // 括弧が重要
        r2 = (-b - sqrt(判別式))/2*a;
        printf("\n\n\n解は:%.2f と %.2f ", r1, r2);
    }
    else if(判別式 == 0)   // 両方の解は実数で等しい
    {
        r1 = r2 = -b/(2*a); // 括弧が重要
        printf("\n\n\n解は:%.2f と %.2f ", r1, r2);
    }
    /*
        判別式 < 0 - 両方の解は虚数で、
        real + i*imaginary の形
    */
    else
    {
        real = -b/(2*a);
        imag = sqrt(-判別式)/(2*a);
        printf("\n\n\n解は %.2f + i%.2f と %.2f - i%.2f ", real, imag, real, imag);
    }
    printf("\n\n\n\n\t\t\tコーディングは楽しい!\n\n\n");
    return 0;
}

まとめ

この実験では、2 次方程式の解を求めるための C 言語プログラムを書く方法を学びました。ユーザーから 2 次方程式の係数を入力し、判別式の値に基づいて解の性質を判定して解を計算しました。そして、解の性質に基づいて 2 次方程式の解を出力しました。