ysr 发表于 2021-1-8 11:49

本帖最后由 ysr 于 2021-4-18 13:08 编辑

天山草@ 发表于 2021-1-5 12:54
实系数一元四次方程的公式解:

天山草@老师老师您好!修改了一下这个程序,这回对了,是我在网上抄录的vb程序本身不完整且有错误(总算是补充完整了,这就是蝶形算法,快速变换)。

实际值:12.9+10.9i, 2+7i, 3.1-1.1i, 7, 3.1+1.1i, 2-7i, 12.9-10.9i, 21
输入:80607000,程序结果:12.9497474683058+10.9497474683058i1.99999999999999+7i3.05025253169417+-1.05025253169417i
7+0i3.05025253169417+1.05025253169415i2.00000000000001+-7i12.9497474683058+-10.9497474683058i21+0i

代码如下:
Private Sub Command1_Click()
Dim xr() As Double, a As String
a = Trim(Text1)
ReDim xr(0 To Len(a) - 1)
For i1 = 0 To Len(a) - 1
xr(i1) = Mid(a, i1 + 1, 1)
Next
Dim l As Long, le As Long, le1 As Long, n As Long, r As Long, p As Long, q As Long, m As Byte
Dim wr As Double, w1 As Double, wlr As Double, wl1 As Double, tr As Double, t1 As Double
Dim pi As Double, t As Double
Dim xi()
n = Len(a) '求数组大小,其值必须是2的幂
m = 0
l = 2
pi = 3.14159265358979
Do
l = l + l
m = m + 1
Loop Until l > n
n = l / 2
ReDim xi(n - 1)

l = 1
Do
le = 2 ^ l
le1 = le / 2
wr = 1
wi = 0
If l = 1 Then
t = 0
Else
t = pi / le1
End If
w1r = Cos(t)
w1i = -Sin(t)
Print l
r = 0
Do
p = r
Do
   q = p + le1
   
   tr = xr(q) * wr - xi(q) * wi
   ti = xr(q) * wi + xi(q) * wr
   
   xr(q) = xr(p) - tr
   xi(q) = xi(p) - ti
   xr(p) = xr(p) + tr
   xi(p) = xi(p) + ti
   Print p, q
   
   Print xr(p), xr(q)
   
   
   p = p + le
Loop Until p > n - 2


wr2 = wr * w1r - wi * w1i
wi2 = wr * w1i + wi * w1r
wr = wr2
wi = wi2
r = r + 1
Loop Until r > le1 - 1
l = l + 1
Loop Until l > m

For i = 0 To n - 1 '仅输出模
   Text2 = xr(i) & "+" & xi(i) & "i" & "" & Text2
   Next

End Sub

Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub

ysr 发表于 2021-1-28 13:34

两种方法理论上应该是一致的一样的,精确度好象不一样,下午上班,有空再计算一下,并代入方程验证一下,或者编程验证一下,那个结果精确度高?

drc2000再来 发表于 2021-4-18 17:32

谢谢各位老师!辛苦了!
x(x+1)(x+2)(x+3)(x+4)=120的根除了x=1,其余的那么复杂,简直没天理!

llshs好石 发表于 2021-4-18 20:30

drc2000再来 发表于 2021-4-18 17:32
谢谢各位老师!辛苦了!
x(x+1)(x+2)(x+3)(x+4)=120的根除了x=1,其余的那么复杂,简直没天理!

zhuanlan.zhihu.com/p/345101278
一元四次方程解法全集
请多多指教,谢谢:lol

风花飘飘 发表于 2021-4-20 15:15

ysr 发表于 2022-7-2 22:07

本帖最后由 ysr 于 2022-7-2 15:08 编辑

一元4次方程的系数依次为:1,11,46,96,120,结果:
-4.4147314911+ -1.2945834215i

-1.0852685089+ -2.1193668017i
顶一下,研究解方程的程序

ysr 发表于 2022-7-6 12:18

Public Function jie2cifc(a2 As String, b2 As String, c2 As String, sd As String) As String '2次方程
Dim d, y
d = mbc2(Trim(b2), Trim(b2), Val(sd))
D1 = mpc2(Trim(d), mbc2(4 & String(sd, "0"), mbc2(Trim(a2), Trim(c2), Val(sd)), Val(sd)))
d3 = qdfh(Trim(D1))
D2 = mbbc2(Trim(d3), Val(sd))
y = mcc2(Trim(b2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
sf = fhys(Trim(y))
sf = Val(-1 * sf)
y = tjfh(qdfh(Trim(y)), Val(sf))
y = shuchujg(Trim(y), Val(sd))
If mbjc2(Trim(D1), 0) >= 0 Then
d3 = mcc2(Trim(D2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
d3 = shuchujg(Trim(d3), Val(sd))
Else
d3 = mcc2(Trim(D2), mbc2(2 & String(sd, "0"), Trim(a2), Val(sd)), Val(sd))
d3 = shuchujg(Trim(d3), Val(sd)) & "i"
End If
jie2cifc = y & "+ -" & d3
End Function

ysr 发表于 2022-7-6 12:21

本帖最后由 ysr 于 2022-7-6 05:55 编辑

输入1:a=1,b=-2,c=3,d=4,e=5;输出结果1:    x1,2=-0.5795978599+ -0.7253449538i,x3,4=1.5795978599+ -1.8179487826i

这种情况应该是对的,求A的时候,根号里面是正值

代码如下:
Private Sub Command1_Click()
Dim a, b, c, d, f, g
Dim ja, jb, jc
k = DeleteSpace(Text1.Text)
ja = DeleteSpace(Text2.Text)
jb = DeleteSpace(Text3.Text)
jc = DeleteSpace(Text4.Text)
jd = DeleteSpace(Text5.Text)
sd1 = DeleteSpace(Text15.Text)
If Abs(Val(sd1)) <= 10 Then
sd = 10 + 2
Else
If Len(sd1) > 3 And Abs(Val(sd1)) > 300 Then
sd = 300 + 2
Else
sd = Int(Abs(Val(sd1))) + 2
End If
End If

a2 = zhengliys2(Trim(ja), Val(sd))
b2 = zhengliys2(Trim(jb), Val(sd))

c2 = zhengliys2(Trim(jc), Val(sd))
D2 = zhengliys2(Trim(jd), Val(sd))
k2 = zhengliys2(Trim(k), Val(sd))
If MBJC(Trim(k2), 0) = 0 Then
Text4.Text = "a 不能为 0"
   Text5.Text = "a 为 0可能已不是1元4次方程"
Else
   
a3 = mcc2(Trim(a2), Trim(k2), Val(sd))
b3 = mcc2(Trim(b2), Trim(k2), Val(sd))
c3 = mcc2(Trim(c2), Trim(k2), Val(sd))
d3 = mcc2(Trim(D2), Trim(k2), Val(sd))
jk = 8 & String(sd, "0")
ja1 = mbc2("-4" & String(sd, "0"), Trim(b3), Val(sd))
jb1 = mpc2(mbc2(2 & String(sd, "0"), mbc2(Trim(a3), Trim(c3), Val(sd)), Val(sd)), mbc2(8 & String(sd, "0"), Trim(d3), Val(sd)))
jc1 = mpc2(mbc2(Trim(d3), mpc2(mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), Val(sd)), mbc2(Trim(c3), Trim(c3), Val(sd)))
y = jie3cifc(Trim(ja1), Trim(jb1), Trim(jc1), Trim(jk), Val(sd))
Y1 = zhengliys2(Trim(y), Val(sd))
End If
Text6 = zhengliys2(Trim(y), Val(sd))
Text8 = y
za = 1 & String(sd, "0")
z2 = mpc2(mpc3(mbc2(8 & String(sd, "0"), Trim(Y1), Val(sd)), mbc2(Trim(a3), Trim(a3), Val(sd))), mbc2(4 & String(sd, "0"), Trim(b3), Val(sd)))
z2 = mbbc2(qdfh(Trim(z2)), Val(sd))
zb1 = mcc2(mpc3(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zb2 = mcc2(mpc2(Trim(a3), Trim(z2)), 2 & String(sd, "0"), Val(sd))
zc1 = mpc3(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
zc2 = mpc2(Trim(Y1), mcc2(mpc2(mbc2(Trim(a3), Trim(Y1), Val(sd)), Trim(c3)), Trim(z2), Val(sd)))
y3 = jie2cifc(Trim(za), Trim(zb1), Trim(zc1), Val(sd))
y4 = jie2cifc(Trim(za), Trim(zb2), Trim(zc2), Val(sd))
Text9 = y3
Text10 = y4
Label1.Caption = Val(Label1.Caption) + 1
Text14.Text = Text14.Text & "输入" & Label1.Caption & ":" & "a=" & k & ",b=" & ja & ",c=" & jb & ",d=" & jc _
& ",e=" & jd & ";输出结果" & Label1.Caption & ":    " & "x1,2=" & Text9.Text & ",x3,4=" & Text10.Text
End Sub

ysr 发表于 2022-7-6 12:26

输入1:a=1,b=2,c=3,d=4,e=-5;输出结果1:    x1,2=-0.687509062557641972761017201778+ -1.371633382010711683016399697636,x3,4=-0.312490937442358027238982798221+ -1.857874439171989445346701282261i

输入2:a=1,b=11,c=46,d=96,e=120;输出结果2:    x1,2=-4.414731491148088975319044433426+ -1.294583421496928798415482164043i,x3,4=-1.085268508851911024680955566574+ -2.119366801671099328593384848563i

ysr 发表于 2022-7-7 18:39

主楼的方程是有根式解的,如下是朋友给出的根式解:(看上去有点复杂)
解 0
x = 1


解 1
x = (-sqrt(225/(2*sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)))-((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)-388/(9*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))-5/6)/2)-sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))/12-11/4

   
解 2
x = sqrt(225/(2*sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)))-((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)-388/(9*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))-5/6)/2-sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))/12-11/4

   
解 3
x = (-sqrt((-225/(2*sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))))-((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)-388/(9*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))-5/6)/2)+sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))/12-11/4

   
解 4
x = sqrt((-225/(2*sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))))-((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)-388/(9*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3))-5/6)/2+sqrt((36*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(2/3)-15*((4*sqrt(14969)*%i)/sqrt(3)+460/27)^(1/3)+1552)/(…………
页: 1 2 3 4 [5] 6
查看完整版本: 求下列五次方程的根式解:x(x+1)(x+2)(x+3)(x+4)=120