matlab求解边值问题问题求解

小木虫 --- 600万学术达人喜爱的学术科研平台
热门搜索:
&&求助用MATLAB求最优解问题
求助用MATLAB求最优解问题
问题主要是三角形隶属函数参数的确定问题,具体是如何求出第1张图中t1和t2。第1张图是一个三角形隶属函数,其函数的形式为图2所示,目的是求使图3所示的函数达到最小值时的t1和t2的值,t1和t2的取值范围是(8.8,16.8)和(16.8,31.3),x取值为一系列离散值,如图5所示。我的问题是应该如何用MATLAB编程求解t1和t2,或者用其他方法可以解决,希望懂的专家不吝赐教。
能不能说详细点,谢谢
如退火算法,蚁群算法,粒子群算法,遗传算法,萤火虫算法,水滴算法。。。
都是一些优化思想
看着有点复杂,有没有简单易懂一点的方法,只需要求出这两个参数即可,谢谢
看到这句话,我想我要好好思考下了。
我说的没错吧?
实话是“不晓得”,我经验尚浅:)
& &启发式算法确是有其适用性,不过也应该是针对不同问题来说的,比如,线性规划,有精确的Simplex Method和Interior Point Method我就尽量不会用启发式算法了。:)启发式能不能解和解得是否足够好这种评价也许也是因人而异的。:)
& &anyway, thanks,
学术必备与600万学术达人在线互动!
扫描下载送金币在matlab中solve求解问题
作者:用户
浏览:499 次
在matlab中solve求解问题solve('XFDY=-xg1.*sin(wa1)+yg1.*cos(wa1)','YFDY=xg1.*cos(wa1)+yg1.*sin(wa1)','XFDY=
在matlab中solve求解问题
solve('XFDY= -xg1.*sin(wa1)+yg1.*cos(wa1)',' YFDY=xg1.*cos(wa1)+yg1.*sin(wa1)',' XFDY= 50.55*cos(u)','YFDY=50.55*sin(u)',u);
在上式中u为参数变量,wa1等于一个值,XFDY,YFDY为变量,xg1,yg1为关于u的变量,之前有公式表达。但出现以下错误:
错误使用 solve&processString (line 365)
' XFDY= -xg1.*sin(wa1)+yg1.*cos(wa1) ' is not a valid expression or equation.
出错 solve&getEqns (line 286)
eqns = processString(eqns, v, vc);
出错 solve (line 160)
[eqns,vars,options] = getEqns(varargin{:});
出错 solvefenduyuan (line 142)
solve('XFDY= -xg1.*sin(wa1)+yg1.*cos(wa1)',' YFDY=xg1.*cos(wa1)+yg1.*sin(wa1)',' XFDY= 50.55*cos(u)','YFDY=50.55*sin(u)',u);
解决方案二:
好吧这个不是很清楚,你可以百度一下
【云栖快讯】红轴机械键盘、无线鼠标等753个大奖,先到先得,云栖社区首届博主招募大赛9月21日-11月20日限时开启,为你再添一个高端技术交流场所&&
稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一
6款热门基础云产品6个月免费体验;2款产品1年体验;1款产品2年体验
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率
开发者常用软件,超百款实用软件一站式提供中国领先的IT技术网站
51CTO旗下网站
用MATLAB求解优化问题
《工程数值方法(第6版)》第15章约束优化,本章讨论带有约束条件的优化问题。首先关注目标函数和约束条件都是线性函数的情况。利用这些线性性质来求解问题的方法统称为线性规划(linear programming)方法。本节为大家介绍用MATLAB求解优化问题。
作者:于艳华等译来源:清华大学出版社| 11:31
15.3.3& 用MATLAB求解优化问题
如表15-1所示,MATLAB软件有多种内建的函数可以完成最优化求解。下面两个例子将说明它们是如何使用的。
表15-1& 实现最优化的MATLAB函数
例15.5& 使用MATLAB求解一维优化问题
问题:使用MATLAB中的fminbnd函数在[0,4]区间中求
的最大值。第13章使用了几种方法解这个问题,该问题的解为 。
解:首先新建一个M-文件来表示该函数。
因为我们关注的是最大值,而fminbnd函数是求最小值的,所以将函数取反。然后,使用fminbnd函数求解:
注意,该函数还可以设置参数。一个很有用的参数是设置优化选项,比如误差限(Error Tolerance)或最大迭代次数。设置这些参数是通过optimset函数实现的(在前面的例7.6中使用过该函数),其一般格式为:
MATLAB有许多处理多维函数的功能。第13章提到,一维搜索的图形类似于过山车,而二维搜索的图形类似于山峰和山谷。在下面的例子中,MATLAB的画图功能为可视化这类函数提供了一个方便的方式。
例15.6& 绘制二维函数的图形
问题:使用MATLAB的画图功能绘制如下函数的图形,以便以可视方式评估在区间?2 ≤ x1 ≤ 0和0 ≤ x2 ≤ 3中的最小值。
解:下面的脚本会生成函数的等高线图和网格图:
如图15-8所示,这两个图都指出,该函数在x1 = -1,x2 = 1.5处达到最小值,此时的f (x1, x2) 在 0到1之间。
标准MATLAB有一个函数fminsearch,可用于确定多维函数的最小值。它基于Nelder-Mead法,Nelder-Mead法是一个直接法,它仅使用函数值(不需要计算导数),来处理不光滑的目标函数。其语法的简单表达如下:[xmin,&fval]&=&fminsearch(function,x1,x2)&
其中xmin和fval是最小值点的位置和值,function是要计算的函数名,x1和x2是要搜索的区间。
例15.7& 使用MATLAB求解多维优化问题
问题:用MATLAB的fminsearch函数求解例15.6中的简单函数
&的最大值,初始估计值为x=-0.5,y = 0.5。
解:使用fminsearch函数求解:&f=@(x)&2+x(1)-x(2)+2*x(1)^2+2*x(1)*x(2)+x(2)^2; &&[x,fval]=fminsearch(f,[-0.5,0.5]) &x&= &&&&-1.0 &fval&= &0.7500&
这个函数与上面使用的fminbnd函数一样,也可以指定优化过程中的附加参数。比如,可以使用optimset函数限制最大迭代次数:&[x,fval]=fminsearch(f,[-0.5,0.5],optimset('MaxIter',2))&
结果为:Exiting:&Maximum&number&of&iterations&has&been&exceeded &-&increase&MaxIter&option. &Current&function&value:&1.225625 &x&= &-0.0 &fval&= &1.2256&
从结果可知,在迭代次数上的严格限制使函数没有达到最大值,而优化求解被迫终止。
【责任编辑: TEL:(010)】&&&&&&
大家都在看猜你喜欢
热点热点头条头条热点
24H热文一周话题本月最赞
讲师:97055人学习过
讲师:41627人学习过
讲师:17677人学习过
精选博文论坛热帖下载排行
在网络应用越来越复杂的今天,传统的网络应用已经不能满足企业和用户的需要,这就对网络管理员、信息管理部门提出了更高的要求。本书介绍了...
订阅51CTO邮刊温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
喜欢胡说八道的所谓宇宙学研究者
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
在工程实践中,我们经常遇到一些ODEs,其中某些解变换缓慢,另一些变化很快,且相差悬殊的微分方程,这就是所谓的刚性问题(Stiff),对于所有解的变化相当我们则称为非刚性问题(Nonstiff)。对于刚性问题一般不适合使用ode45这类函数求解。由于非刚性问题我们使用的多比较多,我们就不多说,下面主要讲解下Stiff看一个例子,考虑下面的微分方程&【解】题目中已经帮我们完成了方程组转换,下面我们就直接编程了(1)编写微分方程函数odefun=@(t,x)[0.04*(1-x(1))-(1-x(2))*x(1)+0.0001*(1-x(2))^2& & -1e4*x(1)+3000*(1-x(2))^2];x0=[0 1];tspan=[0 100];options=odeset('reltol',1e-6,'abstol',1e-8);复制代码(2)对于这个刚性问题,我们先使用ode45函数试试(反正我们是没有信心等待它,太慢了)[t,y]=ode45(odefun,tspan,x0,options);tocdisp(['ode45计算的点数' num2str(length(t))])复制代码(3)换用ode15s函数试试看看[t2,y2]=ode15s(odefun,tspan,x0,options);tocdisp(['ode15s计算的点数' num2str(length(t2))])复制代码(4)绘图看看结果figure('numbertitle','off','name','Stiff ODEs Demo—by Matlabsky')subplot(121)title('Using ode45')plot(t,y)subplot(122)plot(t2,y2)title('Using ode15s')复制代码运行的结果如下,我们可以比较下ode45和ode15s的差距Elapsed time is 171.005688 seconds.ode45计算的点数356981Elapsed time is 0.397287 seconds.ode15s计算的点数188复制代码
阅读(3638)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_095070',
blogTitle:'刚性/非刚性问题(Stiff/Nonstiff)的Matlab解法',
blogAbstract:'转自&'
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}MATLAB 求解最优化问题 - czw - CSDN博客
MATLAB 求解最优化问题
MATLAB 求解最优化问题
MATLAB 优化工具箱解线性规划
minz=cXs.t.AX≤b
命令:x=linprog(c,A,b)
minz=cXs.t.AX≤bAeq?X=beq
命令:x=linprog(c,A,b,Aeq,beq)
注意:若没有不等式:AX≤b存在,则令A=[&],b=[&]
minz=cXs.t.AX≤bAeq?X=beqVLB≤X≤VUB
命令:[1] x=linprog(c,A,b,Aeq,beq,VLB,VUB),[2] x=linprog(c,A,b,Aeq,beq,VLB,VUB,x0)
注意:[1] 若没有等式约束:Aeq?X=beq,则令Aeq=[&],beq=[&];[2] 其中x0表示初始点
命令:[x,fval]=linprog(…)
返回最优解x及x出的目标函数的值fval
求解优化问题的主要函数
1. MATLAB求解优化问题的主要函数
基本函数名
一元函数极小
min&F(x)s.t.&x1&x&x2
x=fminbnd(′F′,x1,x2)
无约束极小
X=fminunc(′F′,x0)X=fminsearch(′F′,x0)
min&cTXs.t.&AX≤b
X=linprog(c,A,b)
min&12XTHX+cTXs.t.&AX≤b
X=quadprog(H,c,A,b)
约束极小(非线性规划)
min&F(X)s.t.&G(X)≤b
X=fmincon(′FG′,x0)
达到目标问题
min&rs.t.&F(x)-wr≤goal
X=fgoalattain(′F′,x,goal,w)
极小极大问题
min&maxx&{Fi(x)}s.t.&G(x)≤0
X=fminimax(′FG′,x0)
2. 优化函数的输入变量
线性规划的目标函数f*X或二次规划的目标函数X′*H*X+f*X中线性项的系数向量
linprog, quadprog
非线性优化的目标函数。fun必须为行命令对象或M文件、嵌入函数或MEX文件的名称
fminbnd, fminsearch,fminunc, fmincon, lsqcurvefit, lsqnonlin, fgoalattain, fminimax
二次规划的目标函数X′*H*X+f*X中二次项的系数矩阵
A矩阵和b向量分别为线性不等式约束:AX≤b中的系数矩阵和右端向量
linprog, quadprog, fgoalattain, fmincon, fminimax
Aeq矩阵和beq向量分别为线性等式约束:Aeq?X=beq中的系数矩阵和右端向量
linprog, quadprog, fgoalattain, fmincon, fminimax
X的下限和上限向量:vlb≤X≤vub
linprog, quadprog, fgoalattain, fmincon, fminimax, lsqcurvefit, lsqnonlin
迭代初始点坐标
除fminbnd外所有优化函数
函数最小化的区间
优化选项参数结构,定义用于优化函数的参数
所有优化函数
3. 优化函数的输出变量表
由优化函数求得的值。若exitflag&0,则x为解;否则x不是最终解,它只是迭代终止时优化过程的值
所有优化函数
解x处的目标函数值
linprog, quadprog, fgoalattain, fmincon, fminimax, lsqcurvefit, lsqnonlin, fminbnd
描述退出条件:exitflag&0,表明目标函数收敛于解x处;exitflag0=,表明目标函数评价或迭代的最大次数;exitflag&0,表明目标函数不收敛
包含优化结果信息的输出结构:Iterations:迭代次数;Algorithm:所采用的算法;FuncCount:函数评价次数
所有优化函数
4. 控制参数options的设置
用MATLAB解无约束问题
1. 一元函数无约束优化问题
min&f(x)s.t.&x1≤x≤x2
常用格式如下
x=fminbnd(fun,x1,x2);
x=fminbnd(fun,x1,x2,options);
[x,fval]=fminbnd(...);
[x,fval,exitflag]=fminbnd(...);
[x,fval,exitflag,output]=fminbnd(...);
函数fminbnd的算法基于黄金分割法和二次插值法,它要求目标函数必须是连续函数,并可能只给出局部最优解。
2. 多元函数无约束优化问题
标准型为:min&F(X)
命令格式为:
x=fminunc(fun,X0);
x=fminunc(fun,X0,options);
[x,fval]=fminunc(...);
[x,fval,exitflag]=fminunc(...);
[x,fval,exitflag,output]=fminunc(...);
fminsearch是用单纯性法寻优
fminunc的算法:
fminunc为无约束优化提供了大型优化和中型优化算法。
由options中的参数LargeScale控制:LargeScale='on'使用大型算法,LargeScale='off'使用小型算法
fminunc为中型优化算法的搜素方向提供了4种算法,由options中的参数HessUpdate控制
HessUpdate='bfgs'(默认值),拟牛顿法的BFGS公式
HessUpdate='dfp',拟牛顿法的DFP公式
HessUpdate='steepdesc',最速下降法
fminunc为中型优化算法的步长一维搜索提供了两种算法,由options中参数LineSearchType控制:
LineSearchType='quadcubic'(缺省值),混合的二次和三次多项式插值
LineSearchType='cubicpoly',三次多项式插值
使用fminunc和fminsearch可能会得到局部最优解
用MATLAB解非线性规划
标准型为:
min&F(X)s.t.&AX≤bAeq?X=beqG(X)≤0Ceq(X)=0VLB≤X≤VUB
其中X为n维变元向量,G(X)与Ceq(X)均为非线性函数组成的向量,其他变量的含义和线性规划、二次规划相同。MATLAB求解:
首先建立M文件fun.m,定义目标函数F(X)
function f=fun(X);
若约束条件中有非线性约束:G(X)≤0或Ceq(X)=0,则建立M文件nonlcon.m定义函数G(X)与Ceq(X):
function [G,Ceq]=nonlcon(X);
建立主程序,非线性规划求解的函数是fmincon,命令的基本格式如下:
x=fmincom('fun',X0,A,b);
x=fmincon('fun',X0,A,b,Aeq,beq);
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB);
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon');
x=fmincon('fun',X0,A,b,Aeq,beq,VLB,VUB,'nonlcon',options);
[x,fval]=fmincon(...);
[x,fval,exitflag]=fmincon(...);
[x,fval,exitflag,output]=fmincon(...);
fmincon函数提供了大型优化算法和中型优化算法。默认时,若在fun函数中提供了梯度(options参数的GradObj设置为on),并且只有上下界存在或只有等式约束,fmincon函数将选择大型算法。当既有等式约束又有梯度约束时,使用中型算法。
fmincon函数的中型算法使用的是序列二次规划法。在每一步迭代中求解二次规划子问题,并用BFGS法更新拉格朗日Hessian矩阵。
fmincon函数可能会给出局部最优解,这与初值X0的选取有关。
我的热门文章

我要回帖

更多关于 matlab求解最优化问题 的文章

 

随机推荐