非线性微分方程边值问题打靶算法Matlab程序.doc

非线性微分方程边值问题打靶算法Matlab程序.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
非线性微分方程边值问题打靶算法Matlab程序 【非线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-828-1-1.html 【线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-827-1-1.html 【线性微分方程边值问题有限差分算法】参见 :// matlabsky /thread-829-1-1.html 下面我们讲解下【非线性微分方程边值问题打靶算法】 对于边值问题 线性边值问题时,p、q和r只是x的函数,但是非线性时它们是x,y和y的函数 我们将问题转换为如下初值问题 现在我们需要做的就是找到那个m,使得y(b)=beta,换句话说y现在由两个变量最终控制,即m和x。对于这个求m的问题,我们可以使用牛顿迭代法得到 (1)先给出一个初值m=1 (2)计算出对应的y(b)为yb,这个直接使用ode45计算,得到y(end,1)就是yb (3)根据beta和yb的差异更新m (4)将新的m带入(2)重新计算yb并更新m (5)如此迭代直到m稳定或者在允许误差范围内 下面详细描述了Matlab代码的运行过程 以下内容需要回复才能看到 复制内容到剪贴板 代码: function [t,x]=nlineshoot(funcn,funcv,tspan,bound,tol,varargin) %对微分方程y=p*y+q*y+r,atb,u(a)=alpha,u(b)=beta,其中p,q和r为x,y和y的函数 %只要对应修改p,q,r并将y用x(2)替换,y用x(1)替换,就可以了 %funcn=@(t,x)[x(2);p*x(2)+q*x(1)+r]; %funcv=@(t,x)[x(2);p*x(2)+q*x(1)+r;x(4);x(3)*dF/dy+x(4)*dF/y]; % %% Example %F=y=2y*y,y(0)=-1,y(pi/2)=1 % %由方程有p=2y=2*x(1),q=r=0 %dF/dy=2*y=2*x(2) %y用x(2)替换,y用x(1)替换 %dF/dy=2*y=2*x(1) % %funcn=@(t,x)[x(2);2*x(1)*x(2)]; %funcv=@(t,x)[x(2);2*x(1)*x(2);x(4);2*x(2)*x(3)+2*x(1)*x(4)]; %tspan=[0 pi/2]; %bound=[-1 1]; %tol=1e-8; %[t,y]=nlineshoot(funcn,funcv,tspan,bound,tol); %plot(t,y) %legend(x1,x2) % %by dynamic %see also :// matlabsky %2009.3.12 %% lb=bound(1); ub=bound(2); m0=0; m=1; while norm(m-m0)tol ? ? m0=m; ? ? [t,x]=ode45(funcv,tspan,[lb;m;0;1],varargin); ? ? m=m0-(x(end,1)-ub)/x(end,3); end [t,x]=ode45(funcn,tspan,[lb;m]); 下面的图形是代码中附带实例的运行结果 线性微分方程边值问题打靶算法Matlab程序 【非线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-828-1-1.html 【线性微分方程边值问题打靶算法】参见 :// matlabsky /thread-827-1-1.html 【线性微分方程边值问题有限差分算法】参见 :// matlabsky /thread-829-1-1.html 注意该算法只能完成二阶常微分方程双边值问题求解,至于其他形式的边值问题必须先转换到二阶形式 对于下面的二阶常微分方程 利用上面方程的线性结果和两个特殊的初值问题,我们可以构造两个等效的常微分初值方程初值问题,对于初值问题我们就可以直接使用ode**计算器或者龙哥库塔算法求解了。构造的两个初值问题为 此时我们可以构造原微分方程的解为 有上面的基础那我们很容编写直接边值问题的线性打靶算法,下面我写了一个供大家参考(参见附件),函数内部调用了自己编写的rk4()函数 %线性方程边值问题的打靶算法 %对微分方程y=p*y+q*y+r,atb,u(a)=alpha,u(b)=beta,其中y,p,q和r都是x的函数 %构造成两个等效的初值

您可能关注的文档

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档