24小时热门版块排行榜    

查看: 1357  |  回复: 8

zyj8119

木虫 (著名写手)

[交流] 【求助】此VB程序怎么运行不起来? 已有4人参与

CODE:
Private Sub Command1_Click()
'PROGRAM DIR7
'Driver program for routine TOEPLZ
N = 5
N2 = 2 * N
Dim X(5), Y(5), R(10)
'输入已知方程系数矩阵的R
For I = 1 To 2 * N - 1
R(I) = 1 / I
Next I
'输入已知方程的右端向量
For I = 1 To N
   Y(I) = 0.1 * I
Next I
Print Tab(5); "已知的方程组右端向量"
Print Tab(12); Format$(Y(1), "##.##00")
Print Tab(12); Format$(Y(2), "##.##00")
Print Tab(12); Format$(Y(3), "##.##00")
Print Tab(12); Format$(Y(4), "##.##00")
Print Tab(12); Format$(Y(5), "##.##00")
Call TOEPLZ(R(), X(), Y(), N)
'输出方程组的解X
Print
Print Tab(5); "计算出方程组的解"
Print Tab(9); Format$(X(1), "#####0e+00")
Print Tab(9); Format$(X(2), "#####0e+00")
Print Tab(9); Format$(X(3), "#####0e+00")
Print Tab(9); Format$(X(4), "#####0e+00")
Print Tab(9); Format$(X(5), "#####0e+00")
'将计算出的解X乘以系数矩阵,以验证计算结果正确
Print
Print Tab(4); "将计算出的解乘以系数矩阵,以验证计算结果正确"
Print
Print Tab(5); "解乘以系数矩阵"; Tab(24); "方程的右端向量"
For I = 1 To N
    SUM1 = 0
    For J = 1 To N
     SUM1 = SUM1 + R(N + 1 - J) * X(J)
    Next J
    Print Tab(10); Format$(SUM1, "#.####0"); Tab(30); Format$(Y(I), "#.###0")
   Next I
End Sub
Sub TOEPLZ(R(), X(), Y(), N)
NMAX = 100
Dim G(100), H(100)
If R(N) = 0# Then GoTo 99
X(1) = Y(1) / R(N)
If N = 1 Then Exit Sub
G(1) = R(N - 1) / R(N)
H(1) = R(N + 1) / R(N)
For M = 1 To N
    M1 = M + 1
    SXN = -Y(M1)
    SD = -R(N)
    For J = 1 To M
    SXN = SXN + R(N + M1 - J) * X(J)
    SD = SD + R(N + M1 - J) * G(M - J + 1)
   Next J
   If SD = 0# Then GoTo 99
   X(M1) = SXN / SD
   For J = 1 To M
       X(J) = X(J) - X(M1) * G(M - J + 1)
   Next J
   If M1 = N Then Exit Sub
   SGN1 = -R(N - M1)
   SHN = -R(N + M1)
   SGD = -R(N)
   For J = 1 To N
       SGN1 = SGN1 + R(N + J - M1) * G(J)
       SHN = SHN + R(N + M1 - J) * H(J)
       SGD = SGD + R(N + J - M1) * H(M - J + 1)
   Next J
   If SD = 0# Or SGD = 0# Then GoTo 99
   G(M1) = SGN1 / SGD
   H(M1) = SHN / SD
   K = M
   M2 = (M + 1) / 2
   PP = G(M1)
   QQ = H(M1)
   For J = 1 To M2
       PT1 = G(J)
       PT2 = G(K)
       QT1 = H(J)
       QT2 = H(K)
       G(J) = PT1 - PP * QT2
       G(K) = PT2 - PP * QT1
       H(J) = QT1 - QQ * PT2
       H(K) = QT2 - QQ * PT1
       K = K - 1
     Next J
    Next M
   Print "Never get here"
99    Print "Levinson method fails:singular principal minor"
End Sub
   
   

回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

老是显示程序需要调试?
好好学习,天天向上。
2楼2010-08-23 02:24:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lbycc

木虫 (初入文坛)

★ ★
zyj8119(金币+1):谢谢参与
zyj8119(金币+4):但是那样,算法的思路就不同了啊。不知道是为什么。 2010-08-23 10:19:18
余泽成(金币+1):谢谢参与应助! 2010-08-23 12:16:45
SGD = SGD + R(N + J - M1) * H(M - J + 1)
下标超过界限了,我把R()和H()内都改成1可以运行,整个程序的思路目前没空去看。楼主看看这个两个括号内的定义是否出错了
3楼2010-08-23 09:10:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengyu027

木虫 (正式写手)


zyj8119(金币+1):谢谢参与
zyj8119(金币+1):显示的是数组越界。 2010-08-24 15:31:24
zyj8119(金币+3):全赠送给你得了。 2010-08-25 17:07:15
会有出错提示的啊  你看看是哪一行出错了
坚持就是胜利!
4楼2010-08-23 15:58:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fengyu027

木虫 (正式写手)

★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
余泽成(金币+1):谢谢参与应助! 2010-08-26 17:25:21
那你就看看你所定义的数组,都检查一遍啊
坚持就是胜利!
5楼2010-08-26 08:50:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

magic7004

金虫 (职业作家)


小木虫(金币+0.5):给个红包,谢谢回帖交流
自己慢慢调试呗,写程序调试是必需的,好好练练吧
流氓不可怕,可怕的是流氓有文化,有文化又BH的流氓无敌~~!
6楼2010-08-26 20:26:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by magic7004 at 2010-08-26 20:26:24:
自己慢慢调试呗,写程序调试是必需的,好好练练吧

只有这样了。
好好学习,天天向上。
7楼2010-08-27 12:04:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stephenliu89

银虫 (小有名气)


小木虫(金币+0.5):给个红包,谢谢回帖交流
三分编程,七分调试。调试的时间会比编程的时间长很多,而且有时候错误很难找到,楼主不要泄气,加油!
Email:stephenliu1989@163.com
8楼2010-08-29 15:59:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)

引用回帖:
Originally posted by stephenliu89 at 2010-08-29 15:59:05:
三分编程,七分调试。调试的时间会比编程的时间长很多,而且有时候错误很难找到,楼主不要泄气,加油!

是的。
好好学习,天天向上。
9楼2010-08-29 19:46:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见