C#求解一元二次方程的根
数学知识
方程 a x 2 + b x + c = 0 ax^2 + bx + c = 0 ax2+bx+c=0 的解有以下几种情况:
- a = 0 a = 0 a=0 且 b = 0 b = 0 b=0 ,无解。
- a = 0 a = 0 a=0 且 b ≠ 0 b \neq 0 b=0 ,有一个实数解: x = − c b x = -\frac c b x=−bc.
- Δ = b 2 − 4 a c = 0 \Delta = b^2 - 4ac = 0 Δ=b2−4ac=0,有两个相等的实数根: x 1 = x 2 = − b 2 a x_1 = x_2 = -\frac{b}{2a} x1=x2=−2ab.
- Δ = b 2 − 4 a c > 0 \Delta = b^2 - 4ac > 0 Δ=b2−4ac>0,有两个不相等的实数根: x 1 = − b + b 2 − 4 a c 2 a , x 2 = − b − b 2 − 4 a c 2 a x_1 = \frac{-b + \sqrt{b^2 - 4ac}}{2a},x_2 = \frac{-b - \sqrt{b^2 - 4ac}}{2a} x1=2a−b+b2−4ac,x2=2a−b−b2−4ac.
- Δ = b 2 − 4 a c < 0 \Delta = b^2 - 4ac < 0 Δ=b2−4ac<0,有两个不相等的复数解: x 1 = − b 2 a + 4 a c − b 2 2 a i , x_1 = -\frac{b}{2a} + \frac{4ac-b^2}{2a}\mathrm{i}, x1=−2ab+2a4ac−b2i,
代码实现
using System;
namespace T
{
class EquationSolve
{
static void Main(string[] args)
{
var a = double.Parse(Console.ReadLine());
var b = double.Parse(Console.ReadLine());
var c = double.Parse(Console.ReadLine());
var d = b * b - 4 * a * c;
if (a == 0 && b == 0)
{
Console.WriteLine("无解");
} else if (a == 0)
{
Console.WriteLine($"有一个实根:x={-c/b:F}");
} else if (d == 0)
{
Console.WriteLine($"有两个相同的实根:x1=x2={-b/(2*a):F}");
} else if (d > 0)
{
Console.WriteLine($"有两个不同的实根:x1={(-b+Math.Sqrt(d))/(2*a):F},x2={(-b-Math.Sqrt(d))/(2*a):F}");
} else
{
Console.WriteLine("有两个不同的复数解:x1={0:F}+{1:F}i,x2={0:F}-{1:F}i", -b / (2 * a), Math.Sqrt(-d) / (2 * a));
}
}
}
}