哈哈哈!这回可能蒙对了,太激动了!!
如下是结果和程序代码:
输入:Text1=80607000,结果: 21+0i 12.9497474683058+-10.9497474683058i 2.00000000000001+-7i 3.05025253169417+1.05025253169416i 7+0i 3.05025253169417+-1.05025253169417i 1.99999999999999+7i 12.9497474683058+10.9497474683058i.
代码如下:
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
Print l
r = 0
Do
p = r
Do
q = p + le1
tr = xr(q) * Cos((-2 * pi / 2 ^ l) * r)
ti = xr(q) * Sin((-2 * pi / 2 ^ l) * r)
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); xi(p); r, xr(q); xi(q); r
p = p + le
Loop Until p > n - 2
r = r + 1
Loop Until r > le1 - 1
l = l + 1
Loop Until l > m
For i = 0 To n - 1 '仅输出模
Print xr(i), xi(i)
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 2.00000000000001+-7i 3.05025253169417+1.05025253169416i 7+0i 3.05025253169417+-1.05025253169417i 1.99999999999999+7i 12.9497474683058+10.9497474683058i.
代码如下:
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
Print l
r = 0
Do
p = r
Do
q = p + le1
tr = xr(q) * Cos((-2 * pi / 2 ^ l) * r)
ti = xr(q) * Sin((-2 * pi / 2 ^ l) * r)
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); xi(p); r, xr(q); xi(q); r
p = p + le
Loop Until p > n - 2
r = r + 1
Loop Until r > le1 - 1
l = l + 1
Loop Until l > m
For i = 0 To n - 1 '仅输出模
Print xr(i), xi(i)
Text2 = Text2 & " " & xr(i) & "+" & xi(i) & "i"
Next
End Sub
Private Sub Command2_Click()
Text1 = ""
Text2 = ""
End Sub
明天再说!!
[此贴子已经被作者于2021-3-2 01:11编辑过]