永发信息网

vb.net 索引超过数组界限

答案:2  悬赏:70  手机版
解决时间 2021-02-19 22:06
我用vb.net编了一段程序,用步长加速法求min (1-x)*(1-x),但运行时老出现索引超过数组界限,因为是初学,也不知是哪里出现错误,请各位高手帮忙改改,多谢!
源代码如下:
Dim K, ac As Integer 'K:迭代次数 h:步长 ac:加速步长因子
Dim x, Y, Z, h As Double
Dim F0, F1, F2, F3, F4, F(x) As Double
Dim ε As Double '迭代精度

ε = Val(TextBox1.Text)
x = Val(TextBox2.Text)

ac = 1 : h = 0.5 : K = 1

F(x) = (1 - x) * (1 - x)

Do '步长加速循环

Y = x

F0 = F(x)
F1 = F(Y)
Do
'正步长试探:+ h

Y = Y + h
F2 = F(Y)
If F2 < F1 Then '正步长试探成功

Y = Y + h

Else '正步长试探失败 (探测移动)

'负步长试探:- h
Y = Y - 2 * h
F3 = F(Y)

If F3 < F1 Then

Y = Y - 2 * h

Else
Y = Y
End If
End If
F4 = F(Y)

'判断试探是否成功

ac = 1 'ac:加速因子

If F4 < F0 Then '试探成功
Z = Y

Y = Z + ac * (Z - x) '(模式移动)

x = Z
End If
'判断加速是否成功

If F(x) < F0 Then '加速成功
F0 = F(x)
End If

Loop Until (F4 >= F0)

If F4 > F0 Then '试探失败
h = h / 2

K = K + 1
End If

Loop Until (h <= ε)

我按提示已经对程序做了修改,但是运行时没有响应,请各位高手再帮忙看看程序还有什么问题。多谢!
最佳答案
F(X)数据定义有问题。X此时为0。

解决方法:使用动态数组。
Dim F0, F1, F2, F3, F4, F() As Double 'F为动态数组
x = Val(TextBox2.Text)
REDIM F(x) '重新定义
全部回答
你在 max 函数中的这句 if varray(i) > min() then 错了,应该是 > max then 你写成 min() 就会误调用 min() 函数,但是没有参数,结果执行 min() 中的 min = varray(0) 时就会产生错误。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
信用卡现在有预期一个月,固定加临时九千,请
做环保设备的销售好做吗
金盏邮政所在什么地方啊,我要过去处理事情
已知:x的平方减5x=14,(x-1)(2x-1)-(x+1)*2+
全网通手机连锁诸暨·凤凰城店地址有知道的么
根据《水工混凝土施工规范》SDJ207-82,下列
有谁告诉我温岭中学高二一班的微信群,谢谢
你不爱我,怎能懂我。你不懂我,怎么爱我。
车载充电器没有降压装置的吗??
卧室门没反锁啊,关上怎么打不开了 是压把锁
苹果山路/S304(旧)(路口)怎么去啊,有知道地
《凉州词》这首诗的中心葡萄美酒夜光杯,欲饮
车子借给朋友闯了红灯
广友水泥制品厂我想知道这个在什么地方
新蒙备用钥匙可以发动吗,怎么发
推荐资讯
问题:使用ogg for bigdata实现数据传输到kaf
帝国时代3中,花4000茶叶明治维新会不会把三
七不离床,棺不离八啥意思
日元今天到过119.65了,短期能否看到118.5,
假的避孕套有什么危害
工商管理课程哪家有
NBA年薪最高是谁?
京顺科目三 明天考的是A段还是B段
广东揭阳普宁黑石技术学校厨师要读几年
苹果6splus微信怎么设置位置
房贷组合贷款还到中期(已还款3年),如何提
一个人无聊时除了玩手机,不玩手机还能干点什
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?