通用求根公式①

计算公式与步骤

a x 3 + b x 3 + c x + d = 0 ax^3+bx^3+cx+d =0 ax3+bx3+cx+d=0
① 计算 u u u和 v v v
u = 9 a b c − 27 a 2 d − 2 n 3 54 a 3 u =\frac {9abc-27a^2d-2n3} {54a^3} u=54a39abc−27a2d−2n3​
v = 3 ( 4 a c 3 − b 2 c 2 − 18 a b c d + 27 a 2 d 2 + 4 b 3 d ) 18 a 2 v =\frac{\sqrt{3(4ac^3-b^2c^2-18abcd+27a^2d^2+4b^3d)}} {18a^2} v=18a23(4ac3−b2c2−18abcd+27a2d2+4b3d) ​​
② 计算 m m m
当 ∣ u + v ∣ ≥ ∣ u − v ∣ |u+v|\ge|u-v| ∣u+v∣≥∣u−v∣时 m = u + v 3 m=\sqrt[3]{u+v} m=3u+v ​
当 ∣ u + v ∣ < ∣ u − v ∣ |u+v|<|u-v| ∣u+v∣<∣u−v∣时 m = u − v 3 m=\sqrt[3]{u-v} m=3u−v ​

③ 计算 n n n
当 ∣ m ∣ ≠ 0 |m|\ne0 ∣m∣=0时 n = b 2 − 3 a c 9 a 2 m n=\frac{b^2-3ac}{9a^2m} n=9a2mb2−3ac​
当 ∣ m ∣ = 0 |m|=0 ∣m∣=0时 n = 0 n=0 n=0
④计算根
其中:
w = − 1 2 + 3 2 i w=-\frac{1}{2} + \frac{\sqrt{3}}{2} i w=−21​+23 ​​i
w 2 = − 1 2 − 3 2 i w^2=-\frac{1}{2} - \frac{\sqrt{3}}{2} i w2=−21​−23 ​​i
那么根为:
x 1 = m + n − b 3 a x_1=m+n-\frac{b}{3a} x1​=m+n−3ab​
x 2 = w m + w 2 n − b 3 a x_2=wm+w^2n-\frac{b}{3a} x2​=wm+w2n−3ab​
x 3 = w 2 m + w n − b 3 a x_3=w^2m+wn-\frac{b}{3a} x3​=w2m+wn−3ab​

C#代码

using System;namespace SEUC
{class Program{static void Main(string[] args){double? x1 = 0;double? x2 = 0;double? x3 = 0;double? x2i = 0;double? x3i = 0;SolveEquation.unaryCubic(1,-3,2,-1000,out x1,out x2,out x2i,out x3,out x3i);Console.WriteLine($"x1={x1}");string symbol2 = x2i > 0 ? "+" : "";Console.WriteLine($"x2={x2}{symbol2}{x2i}i");string symbol3 = x3i > 0 ? "+" : "";Console.WriteLine($"x3={x3}{symbol3}{x3i}i");Console.ReadLine();}}/// <summary>/// 通用求根公式/// </summary>class SolveEquation{/// <summary>/// 三元一次方程/// ax^3+bx^2+cx+d=0/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <param name="c"></param>/// <param name="d"></param>/// <param name="x1">第一个根</param>/// <param name="x2">第二个根实数部分</param>/// <param name="x2i">第二个根虚数部分</param>/// <param name="x3">第三个根实数部分</param>/// <param name="x3i">第三个根虚数部分</param>public static void unaryCubic(double a, double b, double c, double d, out double? x1, out double? x2, out double? x2i, out double? x3, out double? x3i){x1 = null;x2 = null;x3 = null;double uu = 9.0 * a * b * c -27.0 * a * a * d - 2.0 * b * b * b;double ud = 54.0*a*a*a;double u = uu / ud;double vup = 3.0 * (4.0 * a * c * c * c - b * b * c * c - 18.0 * a * b * c * d + 27.0 * a * d * a * d + 4.0 * b * b * b * d);double vd = 18.0 * a * a;double vu = Math.Sqrt(vup);double v = vu / vd;double m = 0;if (Math.Abs(u+v)>= Math.Abs(u - v)){m = Math.Pow(u + v, 1.0/3.0);}else{m = Math.Pow(u - v, 1.0/3.0);}double n = 0;if (m!=0){double nu = b*b - 3.0*a* c;double nd = 9.0*a*a*m;n = nu / nd;}else{n = 0;}double t = -b / (3.0 * a);double aa = 1.0 / 2.0;double bb = Math.Sqrt(3.0) / 2.0;x1 = m + n + t;x2 = -aa * m - aa * n + t;x2i = bb * m - bb * n;x3 = -aa * m - aa * n + t;x3i = -bb * m + bb * n;}}
}

示例

例如: x ( x − 1 ) ( x − 2 ) = 1000 x(x-1)(x-2)=1000 x(x−1)(x−2)=1000 展开 x 3 − 3 x 2 + 2 x − 1000 = 1000 x^3-3x^2+2x-1000=1000 x3−3x2+2x−1000=1000

  • a = 1 a=1 a=1
  • b = − 3 b=-3 b=−3
  • c = 2 c=2 c=2
  • d = − 1000 d=-1000 d=−1000
    计算结果如下:
x1=11.03333321028806
x2=-4.01666660514403+8.631386417111793i
x3=-4.01666660514403-8.631386417111793i

一般的一元三次方程求解②

计算公式与步骤

a x 3 + b x 3 + c x + d = 0 ax^3+bx^3+cx+d =0 ax3+bx3+cx+d=0
① 计算 p p p和 q q q
p = 3 a c − b 2 3 a 2 p =\frac {3ac-b^2} {3a^2} p=3a23ac−b2​
q = 27 a 2 d − 9 a b c + 2 b 3 27 a 3 q =\frac{27a^2d-9abc+2b^3} {27a^3} q=27a327a2d−9abc+2b3​
② 计算 Δ \Delta Δ

Δ = q 2 4 + p 3 27 \Delta = \frac{q^2}{4} + \frac{p^3}{27} Δ=4q2​+27p3​

  • 当 Δ > 0 \Delta>0 Δ>0时有一个实根和两个共轭虚根
  • 当 Δ = 0 \Delta=0 Δ=0时有三个实根。如果 q = q = 0 q=q=0 q=q=0,三个实根都相等;否则三个实根中有两个相等。
  • 当 Δ < 0 \Delta<0 Δ<0时有三个不相等的实根

③ 计算 p 1 p_1 p1​、 p 2 p_2 p2​、 p 3 p_3 p3​
p 1 = − b 3 a p_1 = -\frac{b}{3a} p1​=−3ab​
p 2 = − q 2 + Δ 3 p_2 = \sqrt[3]{-\frac{q}{2}+\sqrt{\Delta}} p2​=3−2q​+Δ ​ ​
p 3 = − q 2 − Δ 3 p_3 = \sqrt[3]{-\frac{q}{2}-\sqrt{\Delta}} p3​=3−2q​−Δ ​ ​
④ 计算根
其中:
w = − 1 + 3 i 2 w=\frac{-1+\sqrt{3}i}{2} w=2−1+3 ​i​
w 2 = − 1 − 3 i 2 w^2=\frac{-1-\sqrt{3}i}{2} w2=2−1−3 ​i​
那么根为:

x 1 = p 1 + p 2 + p 3 x_1=p_1 +p_2+p_3 x1​=p1​+p2​+p3​
x 2 = p 1 + w p 2 + w 2 p 3 x_2=p_1 +wp_2+w^2p_3 x2​=p1​+wp2​+w2p3​
x 3 = p 1 + w 2 p 2 + w p 3 x_3=p_1 +w^2p_2+wp_3 x3​=p1​+w2p2​+wp3​

C#代码

using System;namespace SEUC
{class Program{static void Main(string[] args){double? x1 = 0;double? x2 = 0;double? x3 = 0;double? x2i = 0;double? x3i = 0;SolveEquation.unaryCubic(1,-3,2,-1000,out x1,out x2,out x2i,out x3,out x3i);Console.WriteLine($"x1={x1}");string symbol2 = x2i > 0 ? "+" : "";Console.WriteLine($"x2={x2}{symbol2}{x2i}i");string symbol3 = x3i > 0 ? "+" : "";Console.WriteLine($"x3={x3}{symbol3}{x3i}i");Console.ReadLine();}}/// <summary>/// 通用求根公式/// </summary>public class SolveEquation{/// <summary>/// 三元一次方程/// ax^3+bx^2+cx+d=0/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <param name="c"></param>/// <param name="d"></param>/// <param name="x1">第一个根</param>/// <param name="x2">第二个根实数部分</param>/// <param name="x2i">第二个根虚数部分</param>/// <param name="x3">第三个根实数部分</param>/// <param name="x3i">第三个根虚数部分</param>public static void unaryCubic(double a, double b, double c, double d, out double? x1, out double? x2, out double? x2i, out double? x3, out double? x3i){x1 = null;x2 = null;x3 = null;double pu = 3 * a * c - b * b;double pd = 3 * a * a;double p = pu / pd;double qu = 27 * a * a * d - 9 * a * b * c + 2 * b * b * b; ;double qd = 27 * a * a * a; ;double q = qu/qd;double p1 = - b / (3.0 * a);double delta = (q * q) / 4.0 + (p * p * p) / 27.0;double delta2 = Math.Sqrt(delta);//if (p2p3sqrt>0) //实根和两个共轭虚根。//{//    p2p3 = Math.Pow(p2p3sqrt, 0.5);//}//else if (p2p3sqrt == 0) //有三个实根//{//    p2p3 = 0;//}//else //有三个不相等的实根//{//    p2p3 = Math.Pow(p2p3sqrt,0.5);//}double p2Sqrt3 = -q / 2.0 + delta2;double p3Sqrt3 = -q / 2.0 - delta2;double p2 = Math.Pow(p2Sqrt3, 1.0/3.0);double p3 = Math.Pow(p3Sqrt3, 1.0/3.0);double w1 = -1.0 / 2.0;double w1i = Math.Sqrt(3.0) / 2.0;// 1-3-2sqrt 3double w2 = -1 / 2.0;double w2i = - Math.Sqrt(3.0) / 2.0;x1 = p1 + p2 + p3;x2 = p1 + w1 * p2 + w2 * p3;x2i =  w1i * p2 + w2i * p3;x3 = p1 + w2 * p2 + w1 * p3;x3i = w2i * p2 + w1i * p3;}}
}

示例

例如: x ( x − 1 ) ( x − 2 ) = 1000 x(x-1)(x-2)=1000 x(x−1)(x−2)=1000 展开 x 3 − 3 x 2 + 2 x − 1000 = 1000 x^3-3x^2+2x-1000=1000 x3−3x2+2x−1000=1000

  • a = 1 a=1 a=1
  • b = − 3 b=-3 b=−3
  • c = 2 c=2 c=2
  • d = − 1000 d=-1000 d=−1000
    计算结果如下:
x1=11.033333210284283
x2=-4.016666605142142+8.631386417115063i
x3=-4.016666605142142-8.631386417115063i

【数学公式】一元三次方程求解相关推荐

  1. zcmu-2116一元三次方程求解

    2116: 一元三次方程求解 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 65  Solved: 23 [Submit][Status][Web B ...

  2. 1814: 一元三次方程求解

    //很久之前写的,记录一下~ 1814: 一元三次方程求解 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 45 Solved: 28 [Submit][ ...

  3. 【luogu 1024 一元三次方程求解】二分思想

    题目出自luogu 1024 一元三次方程求解 描述: 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根( ...

  4. 信息学奥赛一本通(1238:一元三次方程求解)

    1238:一元三次方程求解 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6364     通过数: 3241 [题目描述] 形如:ax^3+bx^2+cx+d= ...

  5. 1038 一元三次方程求解

    1038 一元三次方程求解 2001年NOIP全国联赛提高组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 有形如:ax3+b ...

  6. 洛谷——P1024 [NOIP2001 提高组] 一元三次方程求解

    P1024 [NOIP2001 提高组] 一元三次方程求解 题目描述 有形如:a x^3 + b x^2 + c x + d = 0a**x3+b**x2+c**x+d=0 这样的一个一元三次方程.给 ...

  7. P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解

    P1024 [NOIP2001 提高组] 一元三次方程求解 /1238:一元三次方程求解 # [NOIP2001 提高组] 一元三次方程求解 ## 题目描述 有形如:$a x^3 + b x^2 + ...

  8. MATLAB实现一元三次方程求解/盛金公式

    MATLAB实现一元三次方程求解/盛金公式 一元三次方程求解中,1945年卡尔丹诺把冯塔纳的三次方程求根公式发表出来,但该公式形式比较复杂,直观性也较差.1989年范盛金对一元三次方程求解进行了深入的 ...

  9. 蓝桥杯 算法训练 一元三次方程求解

    算法训练 一元三次方程求解   时间限制:1.0s   内存限制:256.0MB        问题描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程.给出该方程中各项的系数(a,b, ...

最新文章

  1. 网曝某互联网大厂给员工电脑安装插件,基本等于全程监控!网友:就是监控你们划水!...
  2. 知识图谱的前世今生:为什么我们需要知识图谱?
  3. QT的QDesignerTaskMenuExtension类的使用
  4. mongodb报错一例
  5. 安装head插件依赖包grunt-cli
  6. 自动控制原理第二版王建辉_气箱脉冲布袋除尘器的工作原理
  7. 解码(四):avcodec_send_packet和avcodec_receive_frame函数讲解
  8. jquery选择器详解
  9. c# 异常处理 try-catch-finally
  10. opencore 启动总是在win_OpenCore引导开机倒计时自动进入指定系统盘,修改默认启动项教程...
  11. 计算机病毒相关参考文献,计算机病毒参考文献
  12. 卸载密码保护的瑞星网络版
  13. python相关的证书_有哪些含金量较高的Python证书?
  14. elastic search配置ik分词及pinyin分词使搜索同时支持中文和拼音搜索
  15. excel删除无尽空白行_批量删除空白行其实很简单,这3中方法都能快速搞定,简单易学...
  16. “任务管理器已被管理员禁用”如何解除?
  17. English语法_形容词/副词3级 - 原级
  18. ts快捷键 vscode_VS Code快捷键
  19. 数学建模竞赛中的两个技巧
  20. html写出带有表格标题的三行三列表格

热门文章

  1. CPU飙高,系统性能问题如何排查?
  2. 饥荒显示服务器未响应是什么意思,微软或将在本周内推送Win10 10586.71累积更新(图)...
  3. 抖音个人帐号可以直播带货吗?
  4. 视频教程-X64位游戏软件安全逆向入门-其他
  5. 搭建SFTP服务,并SSH和SFTP端口分离、用户权限控制
  6. 如何用内容进行电商运营
  7. DNS 广告劫持(属于DNS污染)
  8. 洛咕 P4556 [Vani有约会]雨天的尾巴
  9. vivooriginos和鸿蒙对比,凸显浓厚节日氛围 vivo OriginOS新春版上线
  10. PyLab绘制曲线图