|
天山草@老师老师您好!您还能登录数学研发论坛吗?请您帮忙问一下高手如下程序哪里错了?是我在网上抄录的vb程序。
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
t = pi / le1
w1r = Cos(t)
w1i = -Sin(t)
r = 0
Do
p = r
Do
q = p + le1
tr = xr(q) * wr
ti = xr(q) * wi
xr(q) = xr(p) - tr
xi(q) = xi(p) - ti
xr(p) = xr(p) + tr
xi(p) = xi(p) + ti
p = p + le
Loop Until p > n - 1
wr = w1r
wi = w1i
r = r + 1
Loop Until r > le1 - 1
l = l + 1
Loop Until l > m
For i = 0 To n - 1 '仅输出模
Text2 = Text2 & " " & xr(i) & "+" & xi(i) & "i"
Next
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub
输入:Text1 =80607000,结果:
21+0i 12.9497474683058+-10.9497474683058i 6.94974746830584+-4.94974746830583i 12.9497474683058+1.05025253169417i
7+0i 3.05025253169417+-1.05025253169417i -2.94974746830584+4.94974746830583i 3.05025253169415+10.9497474683058i
与正确值比较:12.9+10.9i, 2+7i, 3.1-1.1i, 7, 3.1+1.1i, 2-7i, 12.9-10.9i, 21也是不对。 |
|