本篇参考于:中国大学慕课,专题六,“6.4MATLAB---非线性方程求解与应用”
1.单变量非线性方程求解fzero
2.非线性方程组求解fsolve
3.求函数极值
无约束条件最优化求解fminbnd,fminsearch,fiminunc
有约束条件最优化求解fmincon
1.单变量非线性方程求解
注:fzero执行的是一个数值搜索的过程,搜索结果依赖于函数特性和指定的初始值。
2.非线性方程组求解fzero
使用fssolve求解时,赋初值0.1会得到正确结果 ,fzero函数无法得到正确结果,因为不同函数的实现方法不同,适用的场合也不同,多角度选择和分析是必要的。 display设置为off为不显示中间结果。
3.求函数极值
matlab不直接提供求极大值,但是可以通过求极小值来求极大值-f(x)
3.1无约束最优化问题
第一个格式求x1到x2的极小值xmin和最小值fmin是求一元函数,第二个格式是基于单纯性算法,求多元函数求x0的极小值xmin和最小值fmin,第三个格式是基于拟牛顿法求多元函数的x0的极小值xmin和最小值fmin。
3.2有约束最优化问题
f=@(x) 0.4.*x(2)+x(1).^2+x(2).^2-x(1).*x(2)+1./30*x(1).^3
x0=[0.5;0.5]%f([0.5,0.5]) %调用函数,fsolve的f0处为[0.5,0.5]
A=[-1,-0.5;-0.5,-1] %不等式约束A(左)
b=[-0.4;-0.5] %不等式约束B(右)
lb=[0;0] %该题只有x下界
option=optimset('Display','off')
[xmin,fmin]=fmincon(f,x0,A,b,[],[],lb,[],[],option)