|

楼主 |
发表于 2022-7-6 12:03
|
显示全部楼层
本帖最后由 ysr 于 2022-7-12 13:30 编辑
如下结果就是按484#楼的方法算的: 输入1: a=1, b=2, c=3, d=4,e=5; 输出结果1: x1,2=-0.7790981610+ -1.3540192270, x3,4=-0.2209018390+ -1.6929245011i.
不知道对不对,此方程求A的时候,根号里面的值是负的(已经修改解一元3次方程的可调用程序,保证输出结果选择的是正值,这样求A的时候可能根号里面的都是正值),所以变成了绝对值,结果按实数代入下一步了,不知道这样做对否?
修改了一下代码,结果如上不知道是否对
修改后的代码如下:(可调用解一元3次方程的代码)
Public Function jie3cifc(a2 As String, b2 As String, c2 As String, k2 As String, sd As String) As String '3次方程
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(c2), Trim(k2), Val(sd))
' m = 36 * Val(ja) * Val(jb) - 8 * Val(ja) ^ 3 - 108 * Val(jc)
If mbjc2(Trim(a3), 0) = 0 And mbjc2(Trim(b3), 0) = 0 Then
m = mbc2(-108 & String(sd, "0"), Trim(c3), Val(sd))
n4 = qdfh(mbc2(Trim(m), Trim(m), Val(sd)))
Else
m1 = mbc2(mbc2(Trim(a3), Trim(b3), Trim(sd)), Val(36) & String(sd, "0"), Val(sd))
m2 = mbc2(mbc2(mbc2(Trim(a3), Trim(a3), Trim(sd)), Trim(a3), Val(sd)), Val(8) & String(sd, "0"), Val(sd))
m3 = mbc2(Trim(c3), Val(108) & String(sd, "0"), Val(sd))
m = mpc2(mpc2(Trim(m1), Trim(m2)), Trim(m3))
Print "m="; m
'n1 = Val(m) ^ 2 + (12 * Val(B) - 4 * Val(A) ^ 2) ^ 3
n1 = mbc2(Trim(m), Trim(m), Val(sd))
n2 = mpc2(mbc2(Trim(b3), Val(12) & String(sd, "0"), Val(sd)), mbc2(mbc2(Trim(a3), Trim(a3), Val(sd)), Val(4) & String(sd, "0"), Val(sd)))
n3 = mbc2(mbc2(Trim(n2), Trim(n2), Val(sd)), Trim(n2), Val(sd))
n4 = mpc3(Trim(n1), Trim(n3))
End If
fn4 = fhys(Trim(n4))
n5 = mbbc2(qqdl(qdfh(Trim(n4))), Val(sd))
Print "n5="; n5
'If n1 < 0 And m < 0 Then
If Val(fn4) < 0 And Val(fhys(Trim(m))) < 0 Then
'n=(93312R^6+311040R^5+285120R^4+221824R^3+27020R^2+3712R+320)^(1/2)
'a=-(2+81k)
'm=216r^3+360r^2+128r-8
'k=(n^2/m^2)/27
''a1=(M/8*(9t-1))^(1/3),,b1=a1*(t)^(1/2)
'令m=19683N^6+1215N^4M^2+17N^2M^4-M^6,
'm1=243N^4+3N^2M^2+M^4,
'n=(m^2-m1^3)^(1/2),
'则:t=(((m+n)^(1/3)+(m-n)^(1/3))+(2*M^2+3*N^2))/(3*M^2),
''其中M≠m,N≠n,
jq = mbbc3(mbbc2(qqdl(MPC1(mbc2(qdfh(Trim(m)), qdfh(Trim(m)), Val(sd)), mbc2(qdfh(Trim(n5)), qdfh(Trim(n5)), Val(sd)))), Val(sd)), Val(sd))
jq3 = mcc2(Trim(n5), Trim(m), Val(sd))
jq1 = jsfanzq(mcc2(Trim(n5), Trim(m), Val(sd)), Val(sd))
Print "jq3="; jq3
Print "jq1="; jq1
q1 = mbc2(Trim(jq), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), Val(sd))
Print "q1="; q1
If Val(fhys(Trim(q1))) > 0 Then
q = tjfh(Trim(q1), Val(-1))
Else
q = qdfh(Trim(q1))
End If
jq3 = mbbc2(MPC(1 & String(sd, "0"), mbc2(jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), _
Val(sd))), Val(sd))
jq2 = tjfh(Trim(jq3), Val(-1))
Print "jq2="; jq2
qa = mbc2(Trim(jq), Trim(jq2), Val(sd))
p = q
pa = qa
Else
'If n1 < 0 And m > 0 Then
If Val(fn4) < 0 And MBJC(qdfh(Trim(m)), 0) > 0 Then
jq = mbbc3(mbbc2(qqdl(MPC1(mbc2(qdfh(Trim(m)), qdfh(Trim(m)), Val(sd)), mbc2(qdfh(Trim(n5)), qdfh(Trim(n5)), Val(sd)))), Val(sd)), Val(sd))
jq1 = jsfanzq(mcc2(Trim(n5), Trim(m), Val(sd)), Val(sd))
jq3 = mcc2(Trim(n5), Trim(m), Val(sd))
q = mbc2(Trim(jq), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), Val(sd))
jq2 = mbbc2(MPC(1 & String(sd, "0"), mbc2(jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), jsyuxian(mcc2(Trim(jq1), 3 & String(sd, "0"), Val(sd)), Val(sd)), _
Val(sd))), Val(sd))
Print "jq3="; jq3
Print "jq1="; jq1
Print "q"; q
Print "jq2="; jq2
qa = mbc2(Trim(jq), Trim(jq2), Val(sd))
p = q
pa = qa
Else
'If Val(m) + Val(n2) < 0 Then
If fhys(mpc3(Trim(m), Trim(n5))) = -1 Then
p = "-" & mbbc3(qdfh(mpc3(Trim(m), Trim(n5))), Val(sd))
Else
p = mbbc3(mpc3(Trim(m), Trim(n5)), Val(sd))
End If
'If Val(m) < Val(n2) Then
If mbjc2(Trim(m), Trim(n5)) = -1 Then
'q = -(Val(n2) - Val(m)) ^ (1 / 3)
q = "-" & mbbc3(qdfh(mpc2(Trim(n5), Trim(m))), Val(sd))
Else
q = mbbc3(mpc2(Trim(m), Trim(n5)), Val(sd))
End If
End If
End If
'If a = 0 And b = 0 Then
If Val(fn4) > 0 And mbjc2(Trim(n4), 0) <> 0 Then 'Val(n4) > 0 Or mbjc2(Trim(n4), 0) = 0
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
tx3 = zhengchuqy(MCC1(qdfh(mbc2(mpc2(Trim(p), Trim(q)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd))), 12))
jie3cifc = shuchujg(Trim(tx1), Val(sd))
Else
If Mid(fn4, 1, 1) = "-" And Trim(m) = 0 Or Trim(n5) = 0 Then
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
tx3 = mcc2(mbc2(mpc2(Trim(p), Trim(q)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd)), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
tx1 = shuchujg(Trim(tx1), Val(sd))
tx12 = shuchujg(mpc3(Trim(tx2), Trim(tx3)), Val(sd))
tx13 = shuchujg(mpc2(Trim(tx2), Trim(tx3)), Val(sd))
If fhys(Trim(tx1)) >= 0 Then
jie3cifc = tx1
ElseIf fhys(Trim(tx12)) >= 0 Then
jie3cifc = tx12
Else
jie3cifc = tx13
End If
Else
'd = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
'd = mcc2(MPC(qdfh(mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), mpc3(Trim(p), Trim(q))), 6 & String(sd, "0"), Val(sd))
'mpc2减法器有问题?
'fd = fhys(Trim(d))
tx1 = mcc2(mpc2(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 2 & String(sd, "0"), Val(sd))), 6 & String(sd, "0"), Val(sd))
ftx1 = fhys(Trim(tx1))
tx4 = mcc2(mpc3(mpc3(Trim(p), Trim(q)), mbc2(Trim(a3), 4 & String(sd, "0"), Val(sd))), 12 & String(sd, "0"), Val(sd))
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
' -(Val(p) + Val(q) + 4 * Val(A)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
tx3 = mcc2(mbc2(mpc3(Trim(pa), Trim(qa)), zhengchuqy(MBBC(3 & String(2 * Val(sd), "0"))), Val(sd)), 12 & String(sd, "0"), Val(sd))
If Val(fhys(Trim(tx4))) > 0 Then
tx2 = tjfh(Trim(tx4), Val(-1))
Else
tx2 = qdfh(Trim(tx4))
End If
tx1 = shuchujg(Trim(tx1), Val(sd))
tx12 = shuchujg(mpc3(Trim(tx2), Trim(tx3)), Val(sd))
tx13 = shuchujg(mpc2(Trim(tx2), Trim(tx3)), Val(sd))
If fhys(Trim(tx1)) >= 0 Then
jie3cifc = tx1
ElseIf fhys(Trim(tx12)) >= 0 Then
jie3cifc = tx12
Else
jie3cifc = tx13
End If
End If
End If
End Function
|
|