Private Sub Form_Click()
Dim x() As Single, y() AsSingle, a() As Single, b() As Single, c() As Single
ReDim x(11, 3), y(11, 3), a(11, 3), b(11, 3), c(11, 3)
x(0, 0) = 1.0026: y(0, 0) = 0: x(0, 1) = 1.145: y(0, 1) = -0.0059: x(0, 2) = 1.2299: y(0, 2) = -0.0094
x(1, 0) = 0.9712: y(1, 0) = -0.0052: x(1, 2) = 0.9872: y(1, 2) = -0.1242
x(2, 0) = 0.6792: y(2, 0) = -0.0386: x(2, 2) = 0.6907: y(2, 2) = -0.1581
x(3, 0) = 0.4473: y(3, 0) = -0.0559: x(3, 2) = 0.4538: y(3, 2) = -0.1759
x(4, 0) = 0.1654: y(4, 0) = -0.0549: x(4, 2) = 0.154: y(4, 2) = -0.1744
x(5, 0) = 0: y(4, 0) = 0: x(5, 2) = -0.12: y(5, 2) = 0
x(6, 0) = 0.1654: y(6, 0) = 0.0549: x(6, 2) = 0.154: y(6, 2) = 0.1744
x(7, 0) = 0.4473: y(7, 0) = 0.0559: x(7, 2) = 0.4538: y(7, 2) = 0.1759
x(8, 0) = 0.6792: y(8, 0) = 0.0386: x(8, 2) = 0.6907: y(8, 2) = 0.1581
x(9, 0) = 0.9712: y(9, 0) = 0.0052: x(9, 2) = 0.9872: y(9, 2) = 0.1242
x(10, 0) = 1.0026: y(10, 0) = 0: x(10, 1) = 1.145: y(10, 1) = -0.0059: x(10, 2) = 1.2299: y(10, 2) = -0.0094
x(1, 1) = 1: x(2, 1) = 1: x(3, 1) = 1: x(4, 1) = 1: x(5, 1) = 1: x(6, 1) = 1: x(7, 1) = 1: x(8, 1) = 1: x(9, 1) = 1:
y(1, 1) = 1: y(2, 1) = 1: y(3, 1) = 1: y(4, 1) = 1: y(5, 1) = 1: y(6, 1) = 1: y(7, 1) = 1: y(8, 1) = 1: y(9, 1) = 1:
Do
For i = 1 To 9
j = 1
a(i, j) = (x(i, j + 1) - x(i, j - 1)) ^ 2 / 0.32 + (y(i, j + 1) - y(i, j - 1)) ^ 2 / 0.32
b(i, j) = (x(i + 1, j) - x(i - 1, j)) * (x(i, j + 1) - x(i, j - 1)) / 0.32 + (y(i + 1, j) - y(i - 1, j)) * (y(i, j + 1) - y(i, j - 1)) / 0.32
c(i, j) = (x(i + 1, j) - x(i - 1, j)) ^ 2 / 0.08 + (y(i + 1, j) - y(i - 1, j)) ^ 2 / 0.08
bw = be = a(i, j) / 0.04
bs = bn = c(i, j) / 0.16
bp = a(i, j) / 0.02 + c(i, j) / 0.08
cpx = -b(i, j) * (x(i + 1, j + 1) - x(i + 1, j - 1) - x(i - 1, j + 1) + x(i - 1, j - 1)) / 0.16
cpy = -b(i, j) * (y(i + 1, j + 1) - y(i + 1, j - 1) - y(i - 1, j + 1) + y(i - 1, j - 1)) / 0.16
x(i, j) = (bw * x(i - 1, j) + be * x(i + 1, j) + bs * x(i, j - 1) + bn * x(i, j + 1) + cpx) / bp
y(i, j) = (bw * y(i - 1, j) + be * y(i + 1, j) + bs * y(i, j - 1) + bn * y(i, j + 1) + cpy) / bp
Next i
Loop While x(i, j) - (bw * x(i - 1, j) + be * x(i + 1, j) + bs * x(i, j - 1) + bn * x(i, j + 1) + cpx) / bp > 0.0001 And y(i, j) - (bw * y(i - 1, j) + be * y(i + 1, j) + bs * y(i, j - 1) + bn * y(i, j + 1) + cpy) / bp > 0.0001
For i = 1 To 9
j = 1
Print x(i, j), x(i, j)
Next i
End Sub
要求解的是18個方程,18個未知數的方程組的解。
利用迭代,給出初始值,Do loop回圈,當上一個值減去下一個值達到一個極小量時,跳出回圈。
可以先不管這些,看看語法有錯嗎,相當于二維陣列x(i,j),其中j是1.用FOr陳述句寫出18個方程,然后用DO陳述句回圈迭代解這18個方程,最上面給出的是已知條件和初始迭代值(全選為1),可是最后輸出的是很小的數,明顯不對,這是怎么回事?
uj5u.com熱心網友回復:
這是演算法問題,語法問題的話程式根本運行不起來uj5u.com熱心網友回復:
加Debug.Print輸出中間結果輔助除錯。uj5u.com熱心網友回復:
x(5, 0) = 0: y(4, 0) = 0: x(5, 2) = -0.12: y(5, 2) = 0只發現這里y寫錯了
uj5u.com熱心網友回復:
眼夠尖!佩服!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/78308.html
標籤:網絡編程
下一篇:新人求問,有什么推薦的入門書籍?
