Matlab--优化工具箱

优化工具箱
优化工具箱(Optimization Toolbox)是对MATLAB数值计算环境扩展得一组函数,它包括以下最优化方法的内容:
1.无约束非线性最小化(Unconstrained nonlinear minimization)
2.有约束非线性最小化(Constrained nonlinear minimization)
3.二次规划和线性规划(Quadratic and linear programming)
4.最小二乘和曲线拟合(Nonlinear least squares and curve-fitting)
5.非线性系统的方程求解(Nonlinear system of equation solving)
6.有约束线性最小二乘(Constrained linear least squares)
所有功能都是M文件实现,你可以扩展这些函数。
关于下表的变量说明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一元非线性方程求根
语法:
x = fzero(fun,x0)
x = fzero(fun,x0,options)
x = fzero(fun,x0,options,P1,P2,…)
[x,fval] = fzero(…)
[x,fval,exitflag] = fzero(…)
[x,fval,exitflag,output] = fzero(…)
说明:
[X,FVAL,EXITFLAG,OUTPUT] = FZERO(FUN,X0,OPTIONS,P1,P2,…)
参数X0表示搜索的起点,一个函数可能有多个零点,但该命令只给出离X0最近的那个零点。
结构OPTIONS只有两个域:Display 和TolX。
输出参数EXITFLAG大于0表示找到了零点,小于0表示没有找到零点或者在搜索过程中遇到了无穷大的函数值。

例子:寻找函数sin(x)在3附近的零点
输入:x = fzero('sin',3)
输出:
x =
3.1416
例子:寻找函数在1到2之间的零点
输入:x = fzero('cos',[1 2])
输出:
x =
     1.5708
例子:解方程
方法1:编写一个M文件f.m
function y = f(x)
y = x.^3-2*x-5;
输入: 
z = fzero('f',2)
输出:
z =
2.0946
方法2:
输入:
f=inline(‘x.^3-2*x-5’,’x’)   %定义内联函数
z=fzero(f,2)
注意:2种定义函数在调用时的差异,一个有引号,一个没有引号。

非线性方程组求解
语法:
x = fsolve(fun,x0)
x = fsolve(fun,x0,options)
x = fsolve(fun,x0,options,P1,P2, … )
[x,fval] = fsolve(…)
[x,fval,exitflag] = fsolve(…)
[x,fval,exitflag,output] = fsolve(…)
[x,fval,exitflag,output,jacobian] = fsolve(…)
说明:
例子:求解方程组
在这里插入图片描述
搜索起点: x0 = [-5 -5]
第一步:写一个M-文件计算在x处F:

function F = myfun(x)
F = [2*x(1) - x(2) - exp(-x(1));
      -x(1) + 2*x(2) - exp(-x(2))];

第二步:调用优化函数

x0 = [-5; -5];       % Make a starting guess at the solution
options=optimset('Display','iter');   % Option to display output
[x,fval] = fsolve('myfun',x0,options)    % call optimizer

第三步:输出结果

x =
    0.5671
    0.5671
fval =
   1.0e-08 *
    -0.5320
    -0.5320

无约束非线性最小化

fminbnd求单变量函数最小值点
fminbnd
语法:
x = fminbnd(fun,x1,x2)
x = fminbnd(fun,x1,x2,options)
x = fminbnd(fun,x1,x2,options,P1,P2,…)
[x,fval] = fminbnd(…)
[x,fval,exitflag] = fminbnd(…)
[x,fval,exitflag,output] = fminbnd(…)

说明:fminbnd用于求单变量函数的最小值点,它采用黄金分割查找和抛物线插值算法。
调用格式:
[X,FVAL,EXITFLAG,OUTPUT] = FMINBND(FUN,x1,x2,OPTIONS,P1,P2,…)
输入参数fun,x1,x2是必须的,其余参数允许缺省。fun为被计算的最小值点的单变量函数(目标函数)名的字符串,x1,x2为目标函数的自变量的取值范围。Fun可以为MATLAB系统内嵌的函数(如sin,cos等等),也可以为自定义函数。自定义函数可以通过MATLAB文件定义,也可以通过内联函数定义。
其它参数:P1,P2,…是向目标函数传递的附加参数;options是一个结构型的变量,用于指定优化参数,可通过optimset函数设置。
目标函数内嵌函数࿱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿妮妮

嘻嘻嘻

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值