mathematica 发表于 2013-2-24 09:36:58

维基百科!

无心人 发表于 2013-3-15 23:01:00

http://baike.baidu.com/view/460155.htm

看看盛金公式

好吧,貌似一不小心就发现了某几个业余数学家的争论点,那个盛金公式貌似有大量非议。。。而且那个作者 范盛金 本人声称尝试去求一元五次方程的根式解去,难道是民科????

云梦 发表于 2013-5-19 12:56:09

我有一套解一元四次以下方程的方法:

282842712474 发表于 2013-5-19 19:53:56


卡丹公式提供了虚数开立方,这个就不利于编程,不是吗?
你知道虚数如何开立方吗?
matlab 发表于 2013-2-17 09:06 http://bbs.emath.ac.cn/images/common/back.gif
那你编写一个求虚数开立方的函数不行吗?如果你说有利于,我还是同意郭老大的说法,迭代最容易,毕竟你只是代数方程,性态很良好,很少出现什么死循环等坏情况

无心人 发表于 2013-5-20 08:09:47

虚数开立方很容易吧

ysr 发表于 2013-5-21 11:54:47

云梦 发表于 2013-5-27 16:44:24

虚数的开立方是很简单的事。
例如:(a+bi)^(1/3)=c+di
a+bi=(c+di)^3
展开后逐项比较哦。

云梦 发表于 2013-5-27 17:02:52

Function JFC13()
Dim FH1, FH2 As String
'标准形式 x3+b0x2+c0x+d0=0
Xn1(0).Bz = ""
Xn1(0).St = "0"
Xn1(0).Zs = 0

Xn1(1) = Xn1(0)
Xn1(2) = Xn1(0)

Xn2(0) = Xn1(0)
Xn2(1) = Xn1(0)
Xn2(2) = Xn1(0)

Command45.Visible = True
Command46.Visible = False

An = SToo(0)
Cx = SToo(1)
Ax = An
Call Multx_
Bn = Cx
Cx = SToo(2)
Ax = An
Call Multx_
Cn = Cx
Cx = SToo(3)
Ax = An
Call Multx_
Dn = Cx
An.Bz = ""
An.St = "1"
An.Zs = 0

If Left(Bn.St, 1) = "0" And Left(Cn.St, 1) = "0" Then
'1.x^3+d0=0
    Ax = Dn
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    FH1 = Ax.Bz   '记住其标志
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
    Ax = Cx
    Call Exp
    Ax.Bz = FH1'还原标志
    Xn1(0) = Ax    'x1=3√-d
   
    '一对共轭虚根
    Cx = Dn
    Ax.Bz = ""
    Ax.St = "125"
    Ax.Zs = -1
    Call Mults_'d/8
    Ax = Cx
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
    Ax = Cx
    Call Exp      'x2,3=3√(-d/8)
    Xn1(1) = Ax
    Xn1(2) = Ax
    Cx.Bz = ""
    Cx.St = Eng(0).Tag
    Cx.Zs = 0
    Call Mult_
    Xn2(1) = Cx
    Xn2(2) = Cx
    Xn2(2).Bz = "-"
Else

'2.x3+b0x2+c0x+d0=0
   
    'A=b^2-3ac
    Ax = Bn
    Cx = Bn
    Call Mult_
    Px = Cx
    Ax = An
    Cx = Cn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    A1n = Ax   'A=

    'B=bc-9ad
    Ax = Bn
    Cx = Cn
    Call Mult_
    Px = Cx
    Ax = An
    Cx = Dn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "9"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    B1n = Ax   'B=
      
    'C=c^2-3bd
    Ax = Cn
    Cx = Cn
    Call Mult_
    Px = Cx
    Ax = Bn
    Cx = Dn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    C1n = Ax'C=

    '判别式 B^2-4AC
    Ax = B1n
    Cx = B1n
    Call Mult_
    Px = Cx
    Ax = A1n
    Cx = C1n
    Call Mult_
    Ax.Bz = ""
    Ax.St = "4"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    ux = Ax
If Ax.Bz = "-" Then'当 B2-4AC<0 时,有三个不同的实数根
      't = (2Ab - 3aB)/(2 A^(3/2)) 角度
      Ax = A1n
      Cx = Bn
      Call Mult_
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Call Mults_
      Px = Cx      '2Ab
      
      Ax = An
      Cx = B1n
      Call Mult_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Mults_    '3aB
      Ax = Px
      Bx = Cx
      hsfx = "-"
      Call Addition
      Px = Ax   '(2Ab - 3aB)
      
      Ax = A1n
      Call Lnx
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "15"
      Ax.Zs = 0
      Call Mults_
      Call Exp      'A^(3/2)
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Call Mults_'2A^(3/2)
      
      Ax = Cx
      Cx = Px
      Call Multx_   '(2Ab - 3aB)/2A^(3/2)
      Ax = Cx
      DEG = 1
      Call ArcCosx   '角度t
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multxs_
      tx = Cx      'ArcCos(t)/3
      
      '-b - 2*A^(1/2)
      Ax = A1n
      Call Lnx
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "5"
      Ax.Zs = -1
      Call Mults_
      Call Exp      'A^(1/2)
      
      Bx = Ax
      hsfx = "+"
      Call Addition
      Qx = Ax      '2*A^(1/2)
      
      Cx = An
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Mults_
      Rx = Cx      '3a
      
      'Cos(t)
      Ax = tx
      DEG = 1
      Call Cosx
      Cx = Qx
      Call Mult_    '2A^(1/2)Cos(t)
      
      Ax = Bn
      Ax.Bz = IIf(Ax.Bz = "-", "", "-")
      Bx = Cx
      hsfx = "-"
      Call Addition   '-b-2A^(1/2)Cos(t)
      Cx = Ax
      Ax = Rx
      Call Multx_   '(-b-2A^(1/2)Cos(t))/3a
      Xn1(0) = Cx   'x1=
      
   
      'Cos(t-2Pi/3)
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Cx.Bz = ""
      Cx.St = Pi.Tag
      Cx.Zs = 0
      Call Mults_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multxs_   '2Pi/3
      Ox = Cx
      
      Ax = tx
      Bx = Cx
      hsfx = "-"
      Call Addition   't-2Pi/3
      DEG = 1
      Call Cosx       'Cos(t-2Pi/3)
      Cx = Qx
      Call Mult_      '
      Ax = Bn
      Ax.Bz = IIf(Ax.Bz = "-", "", "-")
      Bx = Cx
      hsfx = "-"
      Call Addition   '-b-cos(t-2Pi/3)
      Cx = Ax
      Ax = Rx
      Call Multx_   '(-b-cos(t-2Pi/3))/3a
      Xn1(1) = Cx
      
         Ax = tx
         Bx = Ox
         hsfx = "+"
         Call Addition't+2Pi/3
         
         DEG = 1
         Call Cosx      'Cos(t+2Pi/3)
         Cx = Qx
         Call Mult_   '2ACos(t+2Pi/3)
         Ax = Bn
         Ax.Bz = IIf(Ax.Bz = "-", "", "-")
         Bx = Cx
         hsfx = "-"
         Call Addition    '-b-2ACos(t+2Pi/3)
         Cx = Ax
         Ax = Rx
         Call Multx_      '(-b-2ACos(t+2Pi/3))/3a
         Xn1(2) = Cx
      ' Text12.Text = "有三个不同的实数根,x1,x2,x3"
Else
'v=0 时,有三个实数根(两个相同)
If Left(ux.St, 1) = "0" Then
    'X1=-b/a+K;X2=X3=-K/2,其中K=B/A,(A≠0)。
    Ax = A1n
    Cx = B1n
    Call Multx_
    Px = Cx
    Ax = An
    Cx = Bn
    Call Multx_
    Bx = Cx
    Ax = Px
    hsfx = "-"
    Call Addition
    Xn1(0) = Ax
    Cx = Px
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Xn1(1) = Ax
    Xn1(2) = Ax
    'Text12.Text = "有三个实数根(其中有两个重根x2=x3)"
End If
If Left(ux.St, 1) > "0" Then
    'v>0 有一个实数根
    Ax = ux
    Call Lnx
   Cx = Ax
   Ax.Bz = ""
   Ax.St = "5"
   Ax.Zs = -1
    Call Mult_
    Call Exp
    tx = Ax
    Ax = B1n
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = tx
    hsfx = "+"
    Call Addition
    'Y1,Y2=Ab+3a(-B±(B^2-4AC)^(1/2))/2,i^2=-1。
    Cx = An
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multxs_
    Yn1 = Cx
   
    Ax = A1n
    Cx = Bn
    Call Mult_
    Ax = Yn1
    Bx = Cx
    hsfx = "+"
    Call Addition
    FH1 = Ax.Bz
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
   
    Ax = Cx
    Call Exp
    Yn1 = Ax
   
   
    Ax = B1n
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = tx
    hsfx = "-"
    Call Addition
    Cx = An
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mult_
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multx_
    Yn2 = Cx
    Ax = A1n
    Cx = Bn
    Call Mult_
    Ax = Yn2
    Bx = Cx
    hsfx = "+"
    Call Addition
    FH2 = Ax.Bz
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    Call Exp
    Yn2 = Ax
   
    Ax = Bn
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = Yn1
    Bx.Bz = FH1
    hsfx = "-"
    Call Addition
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "-"
    Call Addition
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    Xn1(0) = Ax
    '虚数计算
    Ax = Bn   '(-2b+(Y1)^(1/3)+(Y2)^(1/3))/(6a)
    Bx = Bn
    hsfx = "+"
    Call Addition
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Px = Ax
    Bx = Yn1
    Bx.Bz = FH1
    hsfx = "+"
    Call Addition
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "+"
    Call Addition
    Cx = Ax
    Ax = An
    Call Multx_
    Ax.Bz = ""
    Ax.St = "6"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx'x2=实数部分
    Xn1(1) = Ax
    Xn1(2) = Ax

    Ax = Yn1    '3^(1/2)((Y1)^(1/3)-(Y2)^(1/3))i/(6a)
    Ax.Bz = FH1
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "-"
    Call Addition
    Cx = Ax
    Ax = An
    Call Multx_
    Ax.Bz = ""
    Ax.St = "6"
    Ax.Zs = 0
    Call Multx_
    Ax.Bz = ""
    Ax.St = Eng(0).Tag   '3^(1/2)
    Ax.Zs = 0
    Call Mult_
    Ax = Cx   'x2=虚数部分
    Xn2(1) = Ax
    Xn2(2) = Ax
    Xn2(2).Bz = "-"
    'Text12.Text = "有一个实数根 x1和一对共轭虚根"
    End If
    If Left(A1n.St, 1) = "0" And Left(B1n.St, 1) = "0" Then
      Cx = Bn
      Ax = An
      Call Multx_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multx_
      Ax = Cx
      Ax.Bz = IIf(Ax.Bz = "", "-", "")
      Xn1(0) = Ax
      Xn1(1) = Ax
      Xn1(2) = Ax
      'Text12.Text = "有三个实数根( 是一个三重根x1=x2=x3)"
    End If
End If
End If
End Function
Function JFC130()
Dim FH1, FH2 As String
'标准形式 x3+b0x2+c0x+d0=0

If Left(Bn.St, 1) = "0" And Left(Cn.St, 1) = "0" Then
'1.x^3+d0=0
    Ax = Dn
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    FH1 = Ax.Bz   '记住其标志
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
    Ax = Cx
    Call Exp
    Ax.Bz = FH1'还原标志
    SToo(31) = Ax    'x1=3√-d
   
    '一对共轭虚根
    Cx = Dn
    Ax.Bz = ""
    Ax.St = "125"
    Ax.Zs = -1
    Call Mults_'d/8
    Ax = Cx
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
    Ax = Cx
    Call Exp      'x2,3=3√(-d/8)
    Xn1(0) = Ax
    Cx.Bz = ""
    Cx.St = Eng(0).Tag
    Cx.Zs = 0
    Call Mult_
    Xn1(1) = Cx
    Xsbz(0) = 3
    Ax = SToo(31)
    Call sc(Ax.Bz, Ax.St, Ax.Zs)
Else

'2.x3+b0x2+c0x+d0=0
   
    'A=b^2-3ac
    Ax = Bn
    Cx = Bn
    Call Mult_
    Px = Cx
    Ax = An
    Cx = Cn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    A1n = Ax   'A=

    'B=bc-9ad
    Ax = Bn
    Cx = Cn
    Call Mult_
    Px = Cx
    Ax = An
    Cx = Dn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "9"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    B1n = Ax   'B=
      
    'C=c^2-3bd
    Ax = Cn
    Cx = Cn
    Call Mult_
    Px = Cx
    Ax = Bn
    Cx = Dn
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    C1n = Ax'C=

    '判别式 B^2-4AC
    Ax = B1n
    Cx = B1n
    Call Mult_
    Px = Cx
    Ax = A1n
    Cx = C1n
    Call Mult_
    Ax.Bz = ""
    Ax.St = "4"
    Ax.Zs = 0
    Call Mults_
    Ax = Px
    Bx = Cx
    hsfx = "-"
    Call Addition
    ux = Ax
If Ax.Bz = "-" Then'当 B2-4AC<0 时,有三个不同的实数根
      't = (2Ab - 3aB)/(2 A^(3/2)) 角度
      Ax = A1n
      Cx = Bn
      Call Mult_
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Call Mults_
      Px = Cx      '2Ab
      
      Ax = An
      Cx = B1n
      Call Mult_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Mults_    '3aB
      Ax = Px
      Bx = Cx
      hsfx = "-"
      Call Addition
      Px = Ax   '(2Ab - 3aB)
      
      Ax = A1n
      Call Lnx
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "15"
      Ax.Zs = 0
      Call Mults_
      Call Exp      'A^(3/2)
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Call Mult_'2A^(3/2)
      
      Ax = Cx
      Cx = Px
      Call Multx_   '(2Ab - 3aB)/2A^(3/2)
      Ax = Cx
      DEG = 1
      Call ArcCosx   '角度t
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multxs_
      tx = Cx      'ArcCos(t)/3
      
      '-b - 2*A^(1/2)
      Ax = A1n
      Call Lnx
      Cx = Ax
      Ax.Bz = ""
      Ax.St = "5"
      Ax.Zs = -1
      Call Mults_
      Call Exp      'A^(1/2)
      
      Bx = Ax
      hsfx = "+"
      Call Addition
      Qx = Ax      '2*A^(1/2)
      
      Cx = An
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Mults_
      Rx = Cx      '3a
      
      'Cos(t)
      Ax = tx
      DEG = 1
      Call Cosx
      Cx = Qx
      Call Mult_    '2A^(1/2)Cos(t)
      
      Ax = Bn
      Ax.Bz = IIf(Ax.Bz = "-", "", "-")
      Bx = Cx
      hsfx = "-"
      Call Addition   '-b-2A^(1/2)Cos(t)
      Cx = Ax
      Ax = Rx
      Call Multx_   '(-b-2A^(1/2)Cos(t))/3a
      SToo(31) = Cx   'x1=
      
   
      'Cos(t-2Pi/3)
      Ax.Bz = ""
      Ax.St = "2"
      Ax.Zs = 0
      Cx.Bz = ""
      Cx.St = Pi.Tag
      Cx.Zs = 0
      Call Mults_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multxs_   '2Pi/3
      Ox = Cx
      
      Ax = tx
      Bx = Cx
      hsfx = "-"
      Call Addition   't-2Pi/3
      DEG = 1
      Call Cosx       'Cos(t-2Pi/3)
      Cx = Qx
      Call Mult_      '
      Ax = Bn
      Ax.Bz = IIf(Ax.Bz = "-", "", "-")
      Bx = Cx
      hsfx = "-"
      Call Addition   '-b-cos(t-2Pi/3)
      Cx = Ax
      Ax = Rx
      Call Multx_   '(-b-cos(t-2Pi/3))/3a
      SToo(32) = Cx
      
         Ax = tx
         Bx = Ox
         hsfx = "+"
         Call Addition't+2Pi/3
         
         DEG = 1
         Call Cosx      'Cos(t+2Pi/3)
         Cx = Qx
         Call Mult_   '2ACos(t+2Pi/3)
         Ax = Bn
         Ax.Bz = IIf(Ax.Bz = "-", "", "-")
         Bx = Cx
         hsfx = "-"
         Call Addition    '-b-2ACos(t+2Pi/3)
         Cx = Ax
         Ax = Rx
         Call Multx_      '(-b-2ACos(t+2Pi/3))/3a
         SToo(33) = Cx
      ' Text12.Text = "有三个不同的实数根,x1,x2,x3"
Else
'v=0 时,有三个实数根(两个相同)
If Left(ux.St, 1) = "0" Then
    'X1=-b/a+K;X2=X3=-K/2,其中K=B/A,(A≠0)。
    Ax = A1n
    Cx = B1n
    Call Multx_
    Px = Cx
    Ax = An
    Cx = Bn
    Call Multx_
    Bx = Cx
    Ax = Px
    hsfx = "-"
    Call Addition
    SToo(31) = Ax
    Cx = Px
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    SToo(32) = Ax
    SToo(33) = Ax
    'Text12.Text = "有三个实数根(其中有两个重根x2=x3)"
End If
If Left(ux.St, 1) > "0" Then
    'v>0 有一个实数根
    Ax = ux
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "5"
    Ax.Zs = -1
    Call Mult_
    Call Exp
    tx = Ax
   
    Ax = B1n
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = tx
    hsfx = "+"
    Call Addition
    'Y1,Y2=Ab+3a(-B±(B^2-4AC)^(1/2))/2,i^2=-1。
    Cx = An
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mults_
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multxs_
    Yn1 = Cx
    Ax = A1n
    Cx = Bn
    Call Mult_
    Ax = Yn1
    Bx = Cx
    hsfx = "+"
    Call Addition
    FH1 = Ax.Bz
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multxs_
    Ax = Cx
    Call Exp
    Yn1 = Ax
    'Yn1.bz = FH1
   
    Ax = B1n
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = tx
    hsfx = "-"
    Call Addition
    Cx = An
    Call Mult_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Mult_
    Ax.Bz = ""
    Ax.St = "2"
    Ax.Zs = 0
    Call Multx_
    Yn2 = Cx
    Ax = A1n
    Cx = Bn
    Call Mult_
    Ax = Yn2
    Bx = Cx
    hsfx = "+"
    Call Addition
    FH2 = Ax.Bz
    Ax.Bz = ""
    Call Lnx
    Cx = Ax
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    Call Exp
    Yn2 = Ax
    'Yn2.bz = FH2
   
    Ax = Bn
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Bx = Yn1
    Bx.Bz = FH1
    hsfx = "-"
    Call Addition
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "-"
    Call Addition
    Cx = Ax
    Ax = An
    Call Multx_
    Ax.Bz = ""
    Ax.St = "3"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx
    SToo(31) = Ax
    '虚数计算
    Ax = Bn   '(-2b+(Y1)^(1/3)+(Y2)^(1/3))/(6a)
    Bx = Bn
    hsfx = "+"
    Call Addition
    Ax.Bz = IIf(Ax.Bz = "", "-", "")
    Px = Ax
    Bx = Yn1
    Bx.Bz = FH1
    hsfx = "+"
    Call Addition
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "+"
    Call Addition
    Cx = Ax
    Ax = An
    Call Multx_
    Ax.Bz = ""
    Ax.St = "6"
    Ax.Zs = 0
    Call Multx_
    Ax = Cx'x2=实数部分
    Xn1(0) = Ax
   

    Ax = Yn1    '3^(1/2)((Y1)^(1/3)-(Y2)^(1/3))i/(6a)
    Ax.Bz = FH1
    Bx = Yn2
    Bx.Bz = FH2
    hsfx = "-"
    Call Addition
    Cx = Ax
    Ax = An
    Call Multx_
    Ax.Bz = ""
    Ax.St = "6"
    Ax.Zs = 0
    Call Multx_
    Ax.Bz = ""
    Ax.St = Eng(0).Tag   '3^(1/2)
    Ax.Zs = 0
    Call Mult_
    Ax = Cx   'x2=虚数部分
    Xn1(1) = Ax
    Xsbz(0) = 1
    'Text12.Text = "有一个实数根 x1和一对共轭虚根"
    End If
    If Left(A1n.St, 1) = "0" And Left(B1n.St, 1) = "0" Then
      Cx = Bn
      Ax = An
      Call Multx_
      Ax.Bz = ""
      Ax.St = "3"
      Ax.Zs = 0
      Call Multx_
      Ax = Cx
      Ax.Bz = IIf(Ax.Bz = "", "-", "")
      SToo(31) = Ax
      SToo(32) = Ax
      'Text12.Text = "有三个实数根( 是一个三重根x1=x2=x3)"
    End If
End If
End If
End Function

ysr 发表于 2013-5-29 13:16:40

ysr 发表于 2013-6-1 12:49:51

页: 1 [2] 3
查看完整版本: 求有利于编程的一元三次与一元四次方程的求根公式