24小时热门版块排行榜    

CyRhmU.jpeg
查看: 621  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

zyj8119

木虫 (著名写手)

[交流] 【求助】请教一个VB程序

CODE:
Private Sub Commmand1_Click()
'PROGRAM D2R11
'DRIVER for routine SPLIN2
M = 10
N = 10
Dim X1(10), X2(10), Y(10, 10), Y2(10, 10)
For I = 1 To M
    X1(I) = 0.2 * I
Next I
For I = 1 To N
    X2(I) = 0.2 * I
Next I
For I = 1 To M
  For J = 1 To N
  X1X2 = X1(I) * X2(J)
  Y(I, J) = X1X2 * Exp(-X1X2)
  Next J
Next I
Call SPLIE2(X1(), X2(), Y(), M, N, Y2())
Print
Print Tab(5); "X1 X2 SPLIN2 ACTUAL'"
For I = 1 To 10
   XX1 = 0.1 * I
   XX2 = XX1 ^ 2
   Call SPLIN2(X1(), X2(), Y(), Y2(), M, N, XX1, XX2, F)
   X1X2 = XX1 * XX2
   FF = X1X2 * Exp(-X1X2)
   Print Tab(3); Format$(XX1, "0.###000"),
   Print Format$(F, "0.###000"),
   Print Format$(FF, "0.###000")
Next I
End Sub
Sub SPLIE2(X1A(), X2A(), YA(), M, N, Y2A())
Dim YTMP(100), Y2TMP(100)
For J = 1 To M
  For K = 1 To N
   YTMP(K) = YA(J, K)
   Next K
  Call SPLINE(X2A(), YTMP(), N, 1E+30, 1E+30, Y2TMP())
  For K = 1 To N
    Y2A(A, K) = Y2TMP(K)
  Next K
Next J
End Sub
Sub SPLIN2(X1A(), X2A(), YA(), Y2A(), M, N, X1, X2, Y)
Dim YTMP(100), Y2TMP(100), YYTMP(100)
For J = 1 To M
For K = 1 To N
  YTMP(K) = YA(J, K)
  Y2TMP(K) = Y2A(J, K)
Next K
Call SPLINT(X2A(), YTMP, Y2TMP, N, X2, YYTMP(J))
Next J
Call SPLINE(X1A, YYTMP, M, 1E+30, 1E+30, Y2TMP)
Call SPLINT(X1A, YYTMP, Y2TMP, M, X1, Y)
End Sub
Sub SPLINT(XA(), YA(), Y2A(), N, X, Y)
KLO = 1
KHI = N
1 If KHI - KLO > 1 Then
  K = (KHI + KLO) / 2
  If XA(K) > X Then
    KHI = K
  Else
    KLO = K
  End If
  GoTo 1
End If
H = XA(KHI) - XA(KLO)
If H = 0 Then
   Print "PAUSE 'BAD XA INPUT'"
   Exit Sub
End If
A = (XA(KHI) - X) / H
B = (X - XA(KLO)) / H
AAA = A * YA(KLO) + B * YA(KHI)
BBB = (A ^ 3 - A) * Y2A(KLO) + (B ^ 3 - B) * Y2A(KHI)
Y = AAA + BBB * (H ^ 2) / 6#
End Sub
Sub SPLINE(X(), Y(), N, YP1, YPN, Y2())
Dim U(100)
If YP1 > 9.9E+29 Then
   Y2(1) = 0
   U(1) = 0
Else
  Y2(1) = -0.5
  AAA = (Y(2) - Y(1)) / (X(2) - X(1))
  U(1) = (3# / (X(2) - X(1))) * (AAA - YP1)
End If
For I = 2 To N - 1
  SIG = (X(I) - X(I - 1)) / (X(I + 1) - X(I - 1))
  P = SIG * Y2(I - 1) + 2#
  Y2(I) = (SIG - 1#) / P
  AAA = (Y(I + 1) - Y(I)) / (X(I + 1) - X(I))
  BBB = (Y(I) - Y(I - 1)) / (X(I) - X(I - 1))
  CCC = X(I + 1) - X(I - 1)
  U(1) = (6# * (AAA - BBB) / CCC - SIG * U(I - 1)) / P
Next I
If YPN > 9.9E+29 Then
  QN = 0#
  UN = 0#
Else
  QN = 0.5
  AAA = YPN - (Y(N) - Y(N - 1)) / (X(N) - X(N - 1))
  UN = (3# / (X(N) - X(N - 1))) * AAA
End If
Y2(N) = (UN - QN * U(N - 1)) / (QN * Y2(N - 1) + 1#)
For K = N - 1 To 1 Step -1
    Y2(K) = Y2(K) * Y2(K + 1) + U(K)
Next K
End Sub

此程序编译,没有错误,但是也还是运行不出来,是双三次样条插值。
回复此楼
好好学习,天天向上。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shihao231

金虫 (小有名气)


余泽成(金币+1):欢迎新虫,常来程序软件版! 2010-08-26 17:27:05
zyj8119(金币+5):但是我单击什么也得不到。 2010-08-26 17:51:01
引用回帖:
Originally posted by zyj8119 at 2010-08-26 12:34:09:
运行的时候,是要先在界面上画一个COMMAND CLICK吗?然后运行程序,点击这个COMMAND CLICK?

VB先界面,后程序,从上面看你编写的是命令按钮的单击事件,也就是说运行时只需要单击命令按钮即可有结果了!!!
3楼2010-08-26 16:35:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

zyj8119

木虫 (著名写手)

运行的时候,是要先在界面上画一个COMMAND CLICK吗?然后运行程序,点击这个COMMAND CLICK?
好好学习,天天向上。
2楼2010-08-26 12:34:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xj544

木虫 (小有名气)

zyj8119(金币+5):谢谢! 2010-12-29 15:22:41
打开VB界面,在上面画一个CommandButton,双击,将代码拷进去,按F5,运行,就出来了。
4楼2010-12-29 15:05:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xj544

木虫 (小有名气)

打开VB界面,在上面画一个CommandButton,双击,将代码拷进去,按F5,运行,就出来了。
5楼2010-12-29 15:08:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见