最优化技术:用最优化方法解决最优化问题。

(1)建立数学模型,模型中地数学关系反映了最优化问题所要达到的目标和各种约束条件;

(2)数学求解,选择合理的最优化方法进行求解。

无约束优化问题在实际应用中也比较常见,如工程中常见的参数反演问题。另外,许多有约束最优化问题可以转换为无约束最优化问题进行求解。

求解无约束最优化问题的方法有两类:直接搜索法和梯度法。在函数的导数可求的情况下,梯度法是一种更优的方法,常见的梯度法有:最速下降法、牛顿法、Marquart法、共轭梯度法和拟牛顿法等。在所有这些方法中,用的最多是拟牛顿法,这个方法在每次迭代过程中建立曲率信息,构成二次模型问题。


要求目标最小化的函数有:fminbnd、fminsearch、fminunc、fmincon、fgoalattain、fminmax、lsqnonlin

今天我们就来讲讲无约束非线性方程求解函数:fsolve和lsqnonlin。

(1)fsolve(一次模型)

函数格式:matlab优化工具箱

x = fsolve(fun,x0)
x = fsolve(fun,x0,options)
[x,fval] = fsolve(_)
[x,fval,exitflag,output] = fsolve(_)
[x,fval,exitflag,output,jacobian] = fsolve(_)

使用举例:

    options = optimset('Algorithm', 'levenberg-marquardt');
    [X,fva,exitflag] = fsolve('fun',X0,options);

(2)lsqnonlin(二次模型)

函数格式:matlab优化工具箱

x = lsqnonlin(fun,x0)
x = lsqnonlin(fun,x0,1b,ub)
x = lsqnonlin(fun,x0,1b,ub,options)
[x,resnorm] = lsqnonlin(_)
[x,resnorm,residual,exitflag,output] = lsqnonlin(_)
[x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(_)

其中:matlab优化工具箱

实际应用:PS:输入变量中的两个[]是必须得有的

    options = optimset('Algorithm', 'levenberg-marquardt');
    [X,resnorm,residual,exitflag] = lsqnonlin('fun',X0,[],[],options);

使用举例:、

命令行输入命令:optimtool 

matlab优化工具箱

相关文章: