试射法差分法.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
试射法

边值问题的数值解法 ----试射法和差分法 摘要 本文运用边值问题的两种解法,试射法和差分法,解二阶微分方程。以一个实例进行matlab编程实现,对这两种解法进行进一步的了解和比较。 关键词:常微分方程边值问题,试射法,差分法 问题分析 对于二阶微分方程 边界条件可分为三类:① ② ③ (,) 分别称为第一、二、三类边界条件。不同边界条件对用的微分方程求解问题分别称为第一、二、三边值问题。本文讨论第一边值问题。边值问题解的存在性不仅与方程有关,也与边界条件有关,所以我们始终假定边值问题有解,且解具有所需的光滑性。 1.1试射法 1、基本思想: 将第一边值问题 的求解转化为初值问题的求解。但初始条件无法确定,因此考虑用一组参数逐步逼近,即考虑初值问题使其解满足。这样,对给定的允许误差,当或时,即可作为所求之近似解。 2、实用方法选择: (1)根据对边值问题性质的分析及问题的实际背景,对提供一个初始估计值,例如可取 然后解初值问题,得解,记。 (2)取使满足即取,再解初值问题,得,记。若,则为所求解,否则进行下一步。 (3)利用线性插值法由、求得,再取进行试射,得新解,记。若,则为所求解;否则令,,,重复此步计算过程,直至达到目的为止。 1.2差分法 1、基本思想: 接编制问题的差分方法是一种常用方法,用差商代导数,将微分方程离散化为差分方程,然后用适当的方法求解。 2、具体步骤: 将求解区间分成等分,步长,分点称为节点,在内节点上将导数,用差商表示 在点列出方程 代入上式整理得到近似方程 其中,,。 此外,由边界条件得 将两式联立在一起恰好构成个方程、个未知量的线性方程组,称为边值问题的差分方程,其解称为边值问题的差分解,称为阶段误差。整理两式可得三对角方程组 其中 此方程组可用追赶法求解。 算法实现及结果 例题 用有限差分法解例题2.1中的边值问题: 2.1试射法 利用RK方法计算二阶线性微分方程的边值问题,由微分方程知识可以知道,对于二阶微分方程可以化为一阶微分方程组,func1为第一个微分方程组第二个函数,func2为第二个微分方程组第二个函数,初始时刻为a,结束时为b,初始端点函数值为ya,末端点函数值yb,N为分成的区间数目。 用matlab实现算法的程序: function [x,y]=lsh(func1,func2,a,b,ya,yb,N) h=(b-a)/N; u(1,1)=ya; u(1,2)=0; v(1,1)=0; v(1,2)=1; for i=1:N x(i,:)=a+(i-1)*h; K1=h*u(i,2); L1=h*feval(func1,x(i,:),u(i,1),u(i,2)); K2=h*(u(i,2)+1/2*L1); L2=h*feval(func1,x(i,:)+1/2*h,u(i,1)+1/2*K1,u(i,2)+1/2*L1); K3=h*(u(i,2)+1/2*L2); L3=h*feval(func1,x(i,:)+1/2*h,u(i,1)+1/2*K2,u(i,2)+1/2*L2); K4=h*(u(i,2)+L3); L4=h*feval(func1,x(i,:)+h,u(i,1)+K3,u(i,2)+L3); u(i+1,1)=u(i,1)+1/6*(K1+2*K2+2*K3+K4); u(i+1,2)=u(i,2)+1/6*(L1+2*L2+2*L3+L4); k1=h*v(i,2); l1=h*feval(func2,x(i,:),v(i,1),v(i,2)); k2=h*(v(i,2)+1/2*l1); l2=h*feval(func2,x(i,:)+1/2*h,v(i,1)+1/2*k1,v(i,2)+1/2*l1); k3=h*(v(i,2)+1/2*l2); l3=h*feval(func2,x(i,:)+1/2*h,v(i,1)+1/2*k2,v(i,2)+1/2*l2); k4=h*(v(i,2)+l3); l4=h*feval(func2,x(i,:)+h,v(i,1)+k3,v(i,2)+l3); v(i+1,1)=v(i,1)+1/6*(k1+2*k2+2*k3+k4); v(i+1,2)=v

文档评论(0)

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

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

1亿VIP精品文档

相关文档