【Linux C编程】第二十三章 如何编写C程序来找到二次方程的根?
计算二次方程的根是我们在童年时期学到的东西。然而,二次方程的复杂性随着时间的推移而增加。处理这个问题的方法也得到了发展。在本文中,我们将研究一种编写 C 程序以求二次方程根的方法。
以下是本文要介绍的要点:
- What is a quadratic equation?
- Types of roots
- Understanding the Algorithm
- C program to find the roots of a Quadratic Equation
让我们开始。
什么是二次方程?
在深入探讨本文的编码部分之前,让我们先了解一下什么是二次方程?本节将使您对二次方程有很好的理解,这将有助于理解算法。所以,让我们回到解决方案。2 次方程称为二次方程。如果您不熟悉术语“度”,它是一个方程的阶,其值等于方程中存在的最大指数。
Degree | Equation |
1 | Linear |
2 | Quadratic |
3 | Cubic |
标准格式
让我们看看二次方程的标准形式是什么,这将有助于您快速识别它们。
ax 2 + bx + c = 0是二次方程的标准形式,其中变量 a、b、c 的值是已知的。x 的值未知且 a 不等于0。
当您在图形上绘制二次方程时,您将得到一条曲线(抛物线)。这个方程切轴的点是它的根。通常,二次方程有 2 个根。让我们讨论二次方程根的细节。
根的类型
有几种不同的方法可以找到给定二次方程的根。例如,对给定的二次方程进行运算,使用完整的平方公式,最后一种方法涉及使用二次公式求根。我将坚持最后一种方法,因为与其他方法相比,它的缺点更少。
让我们考虑一下我们的二次方程是标准形式ax 2 + bx + c = 0,那么我们可以使用的公式是 –
现在,让我们谈谈根。基本上,分子中平方根 (b 2 – 4ac) 内的项也称为判别式。它可以告诉您更多关于二次方程根的性质的信息。我们来看一下
- 如果判别式的值为正,则意味着我们有 2 个本质上是实数的根。
- 如果它的值为负,则您有一对本质上是复数的根(例如- 5i, 8i)。
- 如果它是 0,你会得到 2 个具有相等价值和实数的根。
现在您对二次方程及其根有了深入的了解,我们很高兴从算法开始,当您将在实际问题中学到的知识付诸实践时,感觉真的很棒。
理解算法
让我们一步一步地了解如何编写一个程序来求二次方程的根。
-
- 首先,我们将询问用户 a、b 和 c 的值以形成二次方程。
- 一旦你有了这些值,你需要检查输入的 a 的值是否不是 0。如果它是 0,我们的 x 2项将是 0,我们的方程将不再是二次方程。
- 现在,您有一个有效的二次方程,因此您可以计算其判别值。
- 得到判别值后,可以检查上面讨论的3个条件,以了解根的性质。
- 知道了性质之后,就可以算出它的根了。
求二次方程根的C程序
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
/*Function to know the nature of roots and calculate the roots of given quadratic equation*/
void RootsofQuadratic(int a, int b, int c)
{
if (a == 0) /*Checking for value of a*/
{
printf("The value of a cannot be 0");
return;
}
int d = b*b - 4*a*c;
double SquarerootDescriminant = sqrt(abs(d));
if (d > 0)
{
printf("The Roots are Real in Nature n");
printf("%fn%f",(double)(-b + SquarerootDescriminant)/(2*a)
, (double)(-b - SquarerootDescriminant)/(2*a));
}
else if (d == 0)
{
printf("The roots are equal and Real in Nature n");
printf("%f",-(double)b / (2*a));
}
else // d < 0
{
printf("The Roots are Complex in Nature n");
printf("%f + i%fn%f - i%f", -(double)b / (2*a),SquarerootDescriminant
,-(double)b / (2*a), SquarerootDescriminant);
}
}
int main()
{
int a;
int b;
int c;
printf("For a quadratic equation of form ax2 + bx + c = 0 enter values of a, b, cn");
scanf("%d%d%d", &a, &b, &c); /*Asking for input*/
RootsofQuadratic(a, b, c);
return 0;
}
输出:
我们收到了输入值的 2 个复根。下次如果你有一个复杂的二次方程要解,这个程序肯定会为你节省一些时间。
这就是本文的全部内容。我希望你已经理解了找到二次方程根的概念和 C 程序。
- 点赞
- 收藏
- 关注作者
评论(0)