信息化的本质分享 http://blog.sciencenet.cn/u/Babituo

博文

手工验算盛金公式

已有 10547 次阅读 2012-6-3 12:47 |个人分类:信息探索|系统分类:科研笔记| 盛金公式验算

我就不信找不出错在哪,纠结了一个月了,不搞掂它,誓不罢休。
 
盛金公式

    一元三次方程aX^3+bX^2+cX+d=0,(a,b,c,d∈R,且a≠0)。
         重根判别式
         A=b^2-3ac;
         B=bc-9ad;
         C=c^2-3bd,
         总判别式:
         Δ=B^2-4AC。
      

         当A=B=0时,盛金公式①
         X1=X2=X3=-b/(3a)=-c/b=-3d/c。
     

        当Δ=B^2-4AC>0时,盛金公式②:
        X1=(-b-((Y1)^(1/3)+(Y2)^(1/3)))/(3a);
        X2,3=(-2b+(Y1)^(1/3)+(Y2)^(1/3)±3^(1/2)((Y1)^(1/3)-(Y2)^(1/3))i)/(6a),
        其中Y1,2=Ab+3a(-B±(B^2-4AC)^(1/2))/2,i^2=-1。
     

        当Δ=B^2-4AC=0时,盛金公式③:
        X1=-b/a+K;
        X2=X3=-K/2,
        其中K=B/A,(A≠0)。
    

        当Δ=B^2-4AC<0时,盛金公式④:
        X1=(-b-2A^(1/2)cos(θ/3))/(3a);
        X2,3=(-b+A^(1/2)(cos(θ/3)±3^(1/2)sin(θ/3)))/(3a),
        其中θ=arccosT,T= (2Ab-3aB)/(2A^(3/2)),(A>0,-1<T<1)。

 

验算如下:

验算方程:x^3+3X^2+x+3=0;

a=1,b=3,c=1,d=3;

 A=b^2-3ac = 3*3-3*1*1=6;
 B=bc-9ad = 3*1-9*1*3=-24;
 C=c^2-3bd = 1*1-3*3*3=-26,
 总判别式:
 Δ=B^2-4AC = (-24)*(-24)-4 * 6*(-26)= 1200。

当Δ=B^2-4AC=1200>0时,盛金公式②:

Y1=Ab+3a(-B+(B^2-4AC)^(1/2))/2=6*3+3*1*(24+Sqrt(1200))/2=27+10*sqrt(3)~=44.32

Y2=Ab+3a(-B-(B^2-4AC)^(1/2))/2=27-10*sqrt(3)~=9.68

程序算出的Y1=65.46,Y2=-38.46,出现差异了!

发现Bug:

公式为:Y1=Ab+3a(-B+(B^2-4AC)^(1/2))/2

程序错为:Y1:= DA * Fb + 3*Fa*(-Fb+sqrt(DD))/2;应该为Y1:= DA * Fb + 3*Fa*(-DB+sqrt(DD))/2;

把-DB误用了Fb,原来错在这!

bug修复后,程序计算结果为:

-3+0i
3.70074341541719E-17+1i
3.70074341541719E-17-1i

非常正确。现在,一元三次方程在Δ>0时,能解对了。<0时也测试过了。



 



https://blog.sciencenet.cn/blog-33982-578076.html

上一篇:一元四次方程通用公式解法问题出在哪?
下一篇:又发现“费拉里”法使用的一个错误
收藏 IP: 218.13.224.*| 热度|

1 屈林

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-17 16:06

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部