一维优化进退法c语言程序,进退法确定一维优化区间C语言程序

匿名用户

1级

2011-03-24 回答

Private n As Integer

'(程序头部)

Private X0() As Double

Private S() As Double

Private A As Double, B As Double

Dim kf As Integer

Public Sub JinTui(X0() As Double, S() As Double, n As Integer, T0 As Double, A As Double, B As Double)

'(进退法子程序)

Dim A1 As Double, A2 As Double, T As Double

Dim f1 As Double, f2 As Double

Dim i As Integer

Dim X() As Double

Dim bestf As Double

ReDim X(n)

T = T0

A1 = 0

A2 = T

f1 = F(X0())

For i = 1 To n

X(i) = X0(i) + A2 * S(i)

Next i

f2 = F(X())

If f2 < f1 Then

Do

T = 2 * T

A2 = A2 + T

f1 = f2

For i = 1 To n

X(i) = X0(i) + A2 * S(i)

Next i

f2 = F(X())

If f2 < f1 Then

A1 = A2 - T

End If

Loop Until f2 > f1

Else

'(学生自编程序段)

T = -T

Do

A1 = A1 + T

f2 = f1

For i = 1 To n

X(i) = X0(i) + A1 * S(i)

Next i

f1 = F(X())

If f2 > f1 Then

A2 = A1 - T

T = 2 * T

End If

Loop Until f2 < f1

End If

A = A1

B = A2

End Sub

Private Sub command1_Click() '主程序

Dim T0 As Double

Dim X0(1) As Double

Dim S(1) As Double

X0(1) = 0

'若X0(1) = 1.8 ?

S(1) = 1

T0 = 0.1

n = 1

Call JinTui(X0(), S(), n, T0, A, B)

MsgBox "A=" & A & " , B=" & B & " , 进退法"

End Sub

Public Function F(X() As Double)

'(目标函数子程序)

F = 3 * X(1) ^ 3 - 8 * X(1) + 9

End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值