C++
 Computer >> コンピューター >  >> プログラミング >> C++

C++で二次方程式の解の個数を求めるプログラム

はじめに

本記事では、定数 a、b、c を係数とする二次方程式 ax2 + bx + c が与えられたとき、その実数解の個数を求めるC++プログラムの作成方法を解説します。

問題の概要

二次方程式は最大で2つの解を持ちます。与えられた方程式がいくつの解を持つのかを、判別式を用いて判定するのがこの課題の目的です。

例1

入力: 3x2 + 7x + 4

出力: 2

説明: 方程式を因数分解すると (3x + 4)(x + 1) = 0 となり、解は x = −4/3 と x = −1 の2つです。

例2

入力: x2 − 4x + 4

出力: 1

説明: (x − 2)2 = 0 となり、重解 x = 2 のみを持つため、解は1つです。

例3

入力: 2x2 + 2x + 2

出力: 0

説明: 実数解が存在しないため、解の個数は0です。

解法のアプローチ

解の個数を求めるには、二次方程式の解の性質を調べる必要があります。これは判別式 D の値から判断できます。

二次方程式の解は、次の解の公式で表されます。

x = (−b ± √(b2 − 4ac)) / 2a

ここで、判別式は次のように定義されます。

D = b2 − 4ac

判別式の値によって、二次方程式の解の個数は以下のように決まります。

  • D = 0 の場合:解は1つ(重解)

  • D > 0 の場合:解は2つ

  • D < 0 の場合:解は0つ(負の数の平方根は虚数になるため)

アルゴリズム

  • ステップ1: 判別式 D = b2 − 4ac を計算する

  • ステップ2: D > 0 なら「2つの解」と出力する

  • ステップ3: D = 0 なら「1つの解」と出力する

  • ステップ4: D < 0 なら「0個の解」と出力する

C++による実装例

#include <iostream>
using namespace std;

int checkSolution(int a, int b, int c) {
    int d = (b * b) - (4 * a * c);
    if (d > 0)
        return 2;
    else if (d == 0)
        return 1;
    else
        return 0;
}

int main() {
    int a = 2, b = 2, c = 3;
    cout << "The quadratic equation is " << a << "x^2 + " << b << "x + "
         << c << " has ";
    cout << checkSolution(a, b, c) << " solutions";
    return 0;
}

実行結果

The quadratic equation is 2x^2 + 2x + 3 has 0 solutions

まとめ

判別式 D = b2 − 4ac の値を計算するだけで、二次方程式の実数解の個数を簡単に判定できます。D の符号を確認するだけのシンプルな処理で済むため、計算コストが低く、非常に効率的な手法です。

  1. C++で再帰を使って数値の階乗を求めるプログラム

    階乗とは非負整数 n の階乗(factorial)とは、n 以下のすべての正の整数を掛け合わせた積のことです。記号「!」を用いて表されます。例えば、4 の階乗は次のように計算されます。4! = 4 × 3 × 2 × 1 4! = 24整数の階乗は、再帰を使ったプログラムでも、繰り返し処理(反復)を使ったプログラムでも求めることができます。再帰を使った階乗を求めるC++プログラム以下のプログラムは、再帰処理を用いて数値の階乗を求める例です。サンプルコード#include <iostream> using namespace std; int fact(int n) { if

  2. 【C++入門】二次方程式のすべての解(根)を求めるプログラムの書き方

    二次方程式は一般に ax2 + bx + c = 0 の形で表されます。この方程式の解(根)は、以下に示す有名な「解の公式」によって求めることができます。判別式による3つの場合分け二次方程式の解の性質は、判別式 D = b2 − 4ac の値によって、次の3通りに分類されます。b2 < 4ac の場合:解は実数にならず、虚数を含む複素数になります。b2 = 4ac の場合:解は実数となり、両方の解が同じ値(重解)になります。b2 > 4ac の場合:解は実数となり、異なる2つの実数解を持ちます。それでは、これらすべての場合に対応した、二次方程式の解を求めるC++プログラムを見ていき