21xrx.com
2024-11-22 10:26:26 Friday
登录
文章检索 我的文章 写文章
C++ 实现一元三次方程求根
2023-07-01 12:20:27 深夜i     --     --
C++ 一元三次方程 求根

在数学中,一元三次方程是指由三个不同的变量所组成的方程,其中最高次幂为三次方,例如 ax³+bx²+cx+d=0 。而在计算机编程中,我们可以用 C++ 语言来实现一元三次方程的求根。

首先,我们需要输入方程中的系数 a、b、c 和 d。在 C++ 中,我们可以使用 cin 来读取输入的值。代码如下:


float a, b, c, d;

cout << "请输入一元三次方程 ax³+bx²+cx+d=0 中的系数 a、b、c 和 d:" << endl;

cin >> a >> b >> c >> d;

接下来,我们需要利用计算公式来求解方程的根。一元三次方程的求根公式比较复杂,但是我们可以使用 Cardano 公式来求解。代码如下:


float q = (3 * a * c - b * b) / (9 * a * a);

float r = (9 * a * b * c - 27 * a * a * d - 2 * b * b * b) / (54 * a * a * a);

float delta = q * q * q + r * r;

float x1, x2, x3;

if (delta > 0) {

  float s = cbrt(r + sqrt(delta) / 2);

  float t = cbrt(r - sqrt(delta) / 2);

  x1 = s + t - b / (3 * a);

  x2 = -1 / 2 * (s + t) - b / (3 * a) + I * sqrt(3) / 2 * (s - t);

  x3 = -1 / 2 * (s + t) - b / (3 * a) - I * sqrt(3) / 2 * (s - t);

} else if (delta == 0) {

  float s = cbrt(r);

  x1 = 2 * s - b / (3 * a);

  x2 = x3 = -s - b / (3 * a);

} else {

  float s = cbrt(sqrt(-delta) + I * r);

  float t = cbrt(sqrt(-delta) - I * r);

  x1 = s + t - b / (3 * a);

  x2 = -1 / 2 * (s + t) - b / (3 * a) + I * sqrt(3) / 2 * (s - t);

  x3 = -1 / 2 * (s + t) - b / (3 * a) - I * sqrt(3) / 2 * (s - t);

}

最后,我们可以将求解得到的三个根值输出到控制台上,以供查看。代码如下:


cout << "方程的三个根分别为:" << endl;

cout << "x1 = " << x1 << endl;

cout << "x2 = " << x2 << endl;

cout << "x3 = " << x3 << endl;

综上所述,我们可以使用 C++ 语言来实现一元三次方程的求根。通过输入方程的系数,利用 Cardano 公式求解方程的三个根,并将结果输出到控制台上,从而得到该方程的解答。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复