数学实验“微分程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序).docVIP

  • 18
  • 0
  • 约1.33万字
  • 约 5页
  • 2016-10-12 发布于贵州
  • 举报

数学实验“微分程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序).doc

数学实验“微分程组边值问题数值算法(打靶法,有限差分法)”实验报告(内含matlab程序)

西京学数学软件实验任务书 课程名称 数学软件实验 班级 数0901 学号 0912020107 姓名 李亚强 实验课题 微分方程组边值问题数值算法(打靶法,有限差分法) 实验目的 熟悉微分方程组边值问题数值算法(打靶法,有限差分法) 实验要求 运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成 实验内容 微分方程组边值问题数值算法(打靶法,有限差分法) 成绩 教师 实验二十七实验报告 实验名称:微分方程组边值问题数值算法(打靶法,有限差分法)。 实验目的:进一步熟悉微分方程组边值问题数值算法(打靶法,有限差分法)。 实验要求:运用Matlab/C/C++/Java/Maple/Mathematica等其中一种语言完成程序设计。 实验原理: 打靶法: 对于线性边值问题 (1) 假设是一个微分算子使: 则可得到两个微分方程: ,, ,, (2) ,, ,, (3) 方程(2),(3)是两个二阶初值问题.假设是问题(2)的解,是问题(3)的解,且,则线性边值问题(1)的解为: 。 有限差分法: 基本思想是把连续的定解区域用有限个离散点构成的网格来代替,这些离散点称作网格的节点;把连续定解区域上的连续变量的函数用在网格上定义的离散变量函数来近似;把原方程和定解条件中的微商用差商来近似, 积分用积分和来近似,于是原微分方程和定解条件就近似地代之以代数方程组,即有限差分方程组 , 解此方程组就可以得到原问题在离散点上的近似解。然后再利用插值方法便可以从离散解得到定解问题在整个区域上的近似解。 实验内容: %线性打靶法 function [k,X,Y,wucha,P]=xxdb(dydx1,dydx2,a,b,alpha,beta,h) n=fix((b-a)/h); X=zeros(n+1,1); CT1=[alpha,0]; Y=zeros(n+1,length(CT1)); Y1=zeros(n+1,length(CT1)); Y2=zeros(n+1,length(CT1)); X=a:h:b; Y1(1,:)= CT1; CT2=[0,1];Y2(1,:)= CT2; for k=1:n k1=feval(dydx1,X(k),Y1(k,:)) x2=X(k)+h/2;y2=Y1(k,:)+k1*h/2; k2=feval(dydx1,x2,y2); k3=feval(dydx1,x2,Y1(k,:)+k2*h/2); k4=feval(dydx1, X(k)+h,Y1(k,:)+k3*h); Y1(k+1,:)=Y1(k,:)+h*(k1+2*k2+2*k3+k4)/6,k=k+1; end u=Y1(:,1) for k=1:n k1=feval(dydx2,X(k),Y2(k,:)) x2=X(k)+h/2;y2=Y2(k,:)+k1*h/2; k2=feval(dydx2,x2,y2); k3=feval(dydx2,x2,Y2(k,:)+k2*h/2); k4=feval(dydx2, X(k)+h,Y2(k,:)+k3*h); Y2(k+1,:)=Y2(k,:)+h*(k1+2*k2+2*k3+k4)/6,k=k+1; end v=Y2(:,1) Y=u+(beta-u(n+1))*v/v(n+1) for k=2:n+1 wucha(k)=norm(Y(k)-Y(k-1)); k=k+1; end X=X(1:n+1);Y=Y(1:n+1,:);k=1:n+1;wucha=wucha(1:k,:); P=[k,X,Y,wucha]; plot(X,Y(:,1),ro,X,Y1(:,1),g*,X,Y2(:,1),mp) xlabel(轴\it x); ylabel(轴\it y) legend(是边值问题的数值解y(x)的曲线,是初值问题1的数值解u(x)的曲线, 是初值问题2的数值解v(x)的曲线) title(用线性打靶法求线性边值问题的数值解的图形) %有限差分法 function [k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h) n=fix((b-a)/h); X=zeros(n+1,1); Y=zeros(n+1,1); A1=zeros(n,n); A2=zeros(n,n); A3=zeros(n,n); A=zeros(n,n);B= zeros(n,1); for k=1:n X=a:h:b; k1(k)=feval(q1,X(k)); A1(k+1,k)=1+h*k1(k)/2; k2(k)=fev

文档评论(0)

1亿VIP精品文档

相关文档