发布时间 : 星期五 文章MATLAB 鍑芥暟瑙d紭鍖栭棶棰?- 鐧惧害鏂囧簱更新完毕开始阅读34d5b3679b6648d7c1c7460c
fval =
5.4234e-031
exitflag =
1
2. minsearch函数
调用格式: x=fminsearch(fun,x0) x=fminsearch(fun,x0,options) x=fminsearch(fun,x0,options,P1,P2) [x,fval]=fminsearch(…) [x,fval, exitflag]=fminsearch(…) [x,fval, exitflag,output]=fminsearch(…)
[x,fval, exitflag,output,grad]=fminsearch(…) [x,fval, exitflag,output,grad,hessian]=fminsearch(…)
说明:参数及返回变量同上一函数。对求解二次以上的问题,fminsearch函数比fminunc函数有效。
3. 多元非线性最小二乘问题:
非线线性最小二乘问题的数学模型为:
其中L为常数。
调用格式: x=lsqnonlin(fun,x0) x=lsqnonlin(fun,x0,lb,ub)
x=lsqnonlin(fun,x0,options)
x=lsqnonlin(fun,x0,options,P1,P2)
[x,resnorm]=lsqnonlin(…)
[x,resnorm, residual,exitflag]=lsqnonlin(…)
[x,resnorm, residual , exitflag,output]=lsqnonlin(…)
[x,resnorm, residual,exitflag, output,lambda]=lsqnonlin(…)
[x,resnorm, r esidual,exitflag, output,lambda,jacobian]=lsqnonlin(…)
说明:x返回解向量;resnorm返回x处残差的平方范数值:sum(fun(x).^2);residual返回x处的残差值fun(x);lambda返回包含x处拉格朗日乘子的结构参数;jacobian返回解x处的fun函数的雅可比矩阵。
lsqnonlin默认时选择大型优化算法。Lsqnonlin通过将options.LargeScale设置为’off’来作中型优化算法。其采用一维搜索法。
例4.求 minf=4(x2-x1)2+(x2-4)2 ,选择初始点x0(1,1) 程序:
f ='4*(x(2)-x(1))^2+(x(2)-4)^2' [x,reshorm]=lsqnonlin(f,[1,1]) 结果: x =
3.9896 3.9912
reshorm =
5.0037e-009
例5:求
求解:先编辑ff5.m文件: function f=ff5(x) k=1:10;
f=2+2*k-exp(k*x(1))-exp(k*x(2)); 然后作程序:x0=[0.2,0.3];
[x,resnorm]=lsqnonlin(@ff5,x0)
选择初始点,x0(0.2,0.3)
结果 : x =
0.2578 0.2578
resnorm =
124.3622
二. 有约束非线性规划问题:
数学模型: min F(x)
s.t Gi (x) ≤0 i=1,…,m Gj (x) =0 j=m+1,…,n xl≤x≤xu
其中:F(x)为多元实值函数,G(x)为向量值函数,
在有约束非线性规划问题中,通常要将该问题转换为更简单的子问题,这些子问题可以求并作为迭代过程的基础。其基于K-T方程解的方法。它的K-T方程可表达为:
方程第一行描述了目标函数和约束条件在解处梯度的取消。由于梯度取消,需要用拉格朗日乘子λi来平衡目标函数与约束梯度间大小的差异。
调用格式: x=fmincon(f,x0,A,b)
x=fmincon(f,x0,A,b,Aeq,beq) x=fmincon(f,x0,A,b,Aeq,beq,lb,ub) x=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon) x=fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) [x,fval]=fmincon(…)
[x, fval, exitflag]=fmincon(…) [x, fval, exitflag, output]=fmincon(…)
[x, fval, exitflag, output, lambda]=fmincon(…)
说明:x=fmincon(f,x0,A,b)返回值x为最优解向量。其中:x0为初始点。A,b为不等式约束的系数矩阵和右端列向量。
x=fmincon(f,x0,A,b,Aeq,beq) 作有等式约束的问题。若没有不等式约束,则令A=[ ]、b=[ ] 。
x=fmincon(f, x0,A,b,Aeq,beq,lb,ub, nonlcon ,options) 中lb ,ub为变量x的下界和上界;nonlcon=@fun,由M文件fun.m给定非线性不等式约束c (x) ≤0和等式约束g(x)=0;options为指定优化参数进行最小化。
例6:求解:min 100(x2-x12 )2+(1-x1)2 s.t x1≤2;
x2≤2
程序:首先建立ff6.m文件:
function f=ff6(x)
f=100*(x(2)-x(2)^2)^2+(1-x(1))^2;
然后在工作空间键入程序:
x0=[1.1,1.1]; A=[1 0;0 1]; b=[2;2];
[x,fval]=fmincon(@ff6,x0,A,b) 结果: x = 1.0000 1.0000
fval =
3.1936e-011
例7:求解: