环境系统工程vb编程:非线性最优化程序
(编写:矿大环工12-2班黄金07123097)
(仅供交流学习,请勿乱传;请大家自行练习)Dimx()AsSingle
Dimy()AsSingle
DimnAsInteger
DimaAsSingle
DimbAsSingle
DimcAsSingle
PublicSubForm_Load()
n=Val(InputBox("请输入数据组数"))
a=Val(InputBox("请输入模型参数Kd上限"))
b=Val(InputBox("请输入模型参数Kd下限"))
c=Val(InputBox("请输入迭代精度"))
EndSub
PrivateSubCommand1_Click()
Picture1.Print"模型参数Kd的取值范围为:["&a&","&b&"]"Picture1.Print"迭代精度为:"&Format(c,"0.#####")
DimiAsInteger
ReDimx(1Ton)AsSingle
Picture1.Print"时间T(d):"
Fori=1Ton
x(i)=Val(InputBox("请输入时间T(d)"))
Picture1.PrintSpc(2);Format(x(i),"0.00");
Nexti
Picture1.Print
EndSub
PrivateSubCommand2_Click()
DimiAsInteger
ReDimy(1Ton)AsSingle
Picture1.Print"浓度Y(mg/L):"
Fori=1Ton
y(i)=Val(InputBox("请输入浓度Y(mg/L)"))
Picture1.PrintSpc(2);Format(y(i),"0.000");
Nexti
Picture1.Print
EndSub
PrivateSubCommand3_Click()
Dimf()AsSingle
Dimh()AsSingle
DimdAsSingle
DimeAsSingle
DimzAsSingle
d=a+0.618*(b-a)
e=b-0.618*(b-a)
Dimi1AsInteger
ReDimf(1Ton)AsSingle
ReDimh(1Ton)AsSingle
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
Dimi2AsInteger
DimgAsSingle
DimjAsSingle
Fori2=1Ton
g=g+f(i2)
j=j+h(i2)
Nexti2
Do
IfAbs(b-a)
z=(b+a)/2
ExitDo
ElseIfg>jThen
b=d
d=e
g=j
e=b-0.618*(b-a)
i1=1
Fori1=1Ton
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
i2=1
j=0
Fori2=1Ton
j=j+h(i2)
Nexti2
ElseIfg=jThen
b=d
a=e
d=a+0.618*(b-a)
e=b-0.618*(b-a)
i1=1
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
i2=1
g=0
j=0
Fori2=1Ton
g=g+f(i2)
j=j+h(i2)
Nexti2
ElseIfg
a=e
e=d
j=g
d=a+0.618*(b-a)
i1=1
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
Nexti1
i2=1
g=0
Fori2=1Ton
g=g+f(i2)
Nexti2
EndIf
Loop
Picture1.Print"模型参数Kd为:";Format(z,"0.00")
Picture1.Print"模型为:"&"Y=0.202*exp(-"&Format(z,"0.00")&"T)"EndSub
环境系统工程vb编程:非线性最优化程序
(编写:矿大环工12-2班黄金07123097)
(仅供交流学习,请勿乱传;请大家自行练习)Dimx()AsSingle
Dimy()AsSingle
DimnAsInteger
DimaAsSingle
DimbAsSingle
DimcAsSingle
PublicSubForm_Load()
n=Val(InputBox("请输入数据组数"))
a=Val(InputBox("请输入模型参数Kd上限"))
b=Val(InputBox("请输入模型参数Kd下限"))
c=Val(InputBox("请输入迭代精度"))
EndSub
PrivateSubCommand1_Click()
Picture1.Print"模型参数Kd的取值范围为:["&a&","&b&"]"Picture1.Print"迭代精度为:"&Format(c,"0.#####")
DimiAsInteger
ReDimx(1Ton)AsSingle
Picture1.Print"时间T(d):"
Fori=1Ton
x(i)=Val(InputBox("请输入时间T(d)"))
Picture1.PrintSpc(2);Format(x(i),"0.00");
Nexti
Picture1.Print
EndSub
PrivateSubCommand2_Click()
DimiAsInteger
ReDimy(1Ton)AsSingle
Picture1.Print"浓度Y(mg/L):"
Fori=1Ton
y(i)=Val(InputBox("请输入浓度Y(mg/L)"))
Picture1.PrintSpc(2);Format(y(i),"0.000");
Nexti
Picture1.Print
EndSub
PrivateSubCommand3_Click()
Dimf()AsSingle
Dimh()AsSingle
DimdAsSingle
DimeAsSingle
DimzAsSingle
d=a+0.618*(b-a)
e=b-0.618*(b-a)
Dimi1AsInteger
ReDimf(1Ton)AsSingle
ReDimh(1Ton)AsSingle
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
Dimi2AsInteger
DimgAsSingle
DimjAsSingle
Fori2=1Ton
g=g+f(i2)
j=j+h(i2)
Nexti2
Do
IfAbs(b-a)
z=(b+a)/2
ExitDo
ElseIfg>jThen
b=d
d=e
g=j
e=b-0.618*(b-a)
i1=1
Fori1=1Ton
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
i2=1
j=0
Fori2=1Ton
j=j+h(i2)
Nexti2
ElseIfg=jThen
b=d
a=e
d=a+0.618*(b-a)
e=b-0.618*(b-a)
i1=1
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
h(i1)=(y(i1)-0.202*Exp((-e)*x(i1)))^2
Nexti1
i2=1
g=0
j=0
Fori2=1Ton
g=g+f(i2)
j=j+h(i2)
Nexti2
ElseIfg
a=e
e=d
j=g
d=a+0.618*(b-a)
i1=1
Fori1=1Ton
f(i1)=(y(i1)-0.202*Exp((-d)*x(i1)))^2
Nexti1
i2=1
g=0
Fori2=1Ton
g=g+f(i2)
Nexti2
EndIf
Loop
Picture1.Print"模型参数Kd为:";Format(z,"0.00")
Picture1.Print"模型为:"&"Y=0.202*exp(-"&Format(z,"0.00")&"T)"EndSub