|
|
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ wangen994(金币+5):辛苦了 2010-04-20 17:38 liangzidou(金币+28):我之前没学过编程语言,现在学习热力学用到这些知识了,很是抓狂,多谢大侠帮忙,我试了试大侠给编的程序,解立方型方程很好用。太感谢了,辛苦了,呵呵。 2010-04-20 23:10 wangen994(金币+10, 程序强帖+1):辛苦了,呵呵 2010-04-21 08:30
或者:
Private Sub Command1_Click()
Dim a, b, c, d, aa, bb, cc, delta, y1, y2, k, theta, t, x, x1, x2, x3, tt, tt1, xx2, xx3
'az^3+bz^2+cz+d=0
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)
aa = Round((b ^ 2 - 3 * a * c), 4)
bb = Round((b * c - 9 * a * d), 4)
cc = Round((c * c - 3 * b * d), 4)
delta = Round((bb * bb - 4 * aa * cc), 4)
If (aa = 0) And (bb = 0) Then
x = -b / (3 * a)
Label1.Caption = "X1=X2=X3=:" & x
Else
Select Case delta
Case Is > 0
y1 = aa * b + 3 * a * (-bb + Sqr(delta)) / 2
If y1 > 0 Then
y1 = y1 ^ (1 / 3)
Else
y1 = y1 * (-1)
y1 = y1 ^ (1 / 3) * (-1)
End If
y2 = aa * b + 3 * a * (-bb - Sqr(delta)) / 2
If y2 > 0 Then
y2 = y2 ^ (1 / 3)
Else
y2 = y2 * (-1)
y2 = y2 ^ (1 / 3) * (-1)
End If
tt = y1 + y2
tt1 = 3 ^ (1 / 3) * (y1 - y2) / (6 * a)
s = (-2 * b + tt) / (6 * a)
x1 = (-b - tt) / (3 * a)
x2 = s & "+" & tt1 & "i"
x3 = s & "-" & tt1 & "i"
Label1.Caption = "X1=" & x1
Label2.Caption = "X2=" & x2
Label3.Caption = "X3=" & x3
Case Is = 0
k = bb / aa
x1 = -b / a + k
x = Str(-k / 2)
Label1.Caption = "X1=" & x1
Label2.Caption = "X2=" & x
Label3.Caption = "X3=" & x
Case Is < 0
t = (2 * aa * b - 3 * a * bb) / (2 * aa ^ (3 / 2))
theta = Atn(-t / Sqr(-t * t + 1)) + 2 * Atn(1)
theta = theta / 3
tt = aa ^ (1 / 2) * Cos(theta)
tt1 = 3 ^ (1 / 2) * Sin(theta)
x1 = (-b - 2 * tt) / (3 * a)
xx2 = (-b + tt + tt1) / (3 * a)
xx3 = (-b + tt - tt1) / (3 * a)
Label1.Caption = "X1=" & x1
Label2.Caption = "X2=" & xx2
Label3.Caption = "X3=" & xx3
End Select
End If
End Sub
Private Sub Text1_Click()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Text2_Click()
Text2.SelStart = 0
Text2.SelLength = Len(Text2)
End Sub
Private Sub Text3_Click()
Text3.SelStart = 0
Text3.SelLength = Len(Text3)
End Sub
Private Sub Text4_Click()
Text4.SelStart = 0
Text4.SelLength = Len(Text4)
End Sub

[ Last edited by jjdg on 2010-4-20 at 14:40 ] |
|