一节双曲型方程基于MATLAB的求解,双曲方程基于matlab的数值解法

《双曲方程基于matlab的数值解法》由会员分享,可在线阅读,更多相关《双曲方程基于matlab的数值解法(9页珍藏版)》请在人人文库网上搜索。

1、双曲型方程基于MATLAB的数值解法(数学1201,陈晓云,)一:一阶双曲型微分方程的初边值问题精确解为 二:数值解法思想和步骤2.1:网格剖分为了用差分方法求解上述问题,将求解区域作剖分。将空间区间作等分,将时间区间作等分,并记。分别称和为空间和时间步长。用两簇平行直线将分割成矩形网格。2.2:差分格式的建立2.2.1:Lax-Friedrichs方法对时间、空间采用中心差分使得则由上式得到Lax-Friedrichs格式截断误差为所以Lax-Friedrichs格式的截断误差的阶式令:则可得差分格式为其传播因子为:化简可得:所以当时,,格式稳定。* 2.2.2:LaxWendroff方法用。

2、牛顿二次插值公式可以得到LaxWendroff的差分格式,在此不详细分析,它的截断误差为,是二阶精度;当时,格式稳定。在这里主要用它与上面一阶精度的Lax-Friedrichs 方法进行简单对比。2.3差分格式的求解因为时格式稳定,不妨取 ,则s=0.9差分格式写成如下矩阵形式:则需要通过对k时间层进行矩阵作用求出k+1时间层。对上面的矩阵形式通过matlab编出如附录的程序求出数值解、真实解和误差。2.5 算法以及结果function P U E x t=PDEHyperbolic(uX,uT,M,N,C,type)format long%一阶双曲型方程的差分格式 %P U E x t=PD。

3、EHyperbolic(uX,uT,M,N,C,phi,psi1,psi2,type) %方程:u_t+C*u_x=0 0 1 disp(|C*r|1,Lax-Friedrichs差分格式不稳定!) end%逐层求解 for j=1:N for i=2:M U(i,j+1)=(U(i+1,j)+U(i-1,j)/2-C*r*(U(i+1,j)-U(i-1,j)/2; P(i,j+1)=cos(pi*(x(i)+t(j+1);E(i,j+1)=abs(U(i,j+1)-cos(pi*(x(i)+t(j+1);endend%Lax-Wendroff差分格式 case LaxWendroff if 。

4、abs(C*r)1 disp(|C*r|1,Lax-Wendroff差分格式不稳定!) end%逐层求解 for j=1:N for i=2:M U(i,j+1)=U(i,j)-C*r*(U(i+1,j)-U(i-1,j)/2+C2*r2*(U(i+1,j)-2*U(i,j)+U(i-1,j)/2; P(i,j+1)=cos(pi*(x(i)+t(j+1);E(i,j+1)=abs(U(i,j+1)-cos(pi*(x(i)+t(j+1);endendotherwisedisp(差分格式类型输入有误!) return; endU=U;P=P;E=E;%作出图形 精确解mesh(x,t,P); 。

5、title(一阶双曲型方程的精确解图像); xlabel(空间变量 x); ylabel(时间变量 t); zlabel(一阶双曲型方程的解 P)%作出图形 数值解mesh(x,t,U); title(type 格式求解一阶双曲型方程的解的图像); xlabel(空间变量 x); ylabel(时间变量 t); zlabel(一阶双曲型方程的解 U)return;命令窗口输入:uX=1;uT=1;M=90;N=100;C=-1;phi=inline(cos(pi*x);psi1=inline(cos(pi*t);psi2=inline(-cos(pi*t);type=LaxFriedrichs。

6、或type=LaxWendroff;P U E x t=PDEHyperbolic(uX,uT,M,N,C,type)从 matlab的数值解法结果中抽出一部分数据进行比较表1LaxFriedrichs格式jk(x,t)数值解真实解误差4611(0.5,0.1)-0.-0.0.4621(0.5,0.2)-0.-0.0.4631(0.5,0.3)-0.-0.0.4641(0.5,0.4)-0.-0.0.4651(0.5,0.5)-0.-1.0.4661(0.5,0.6)-0.-0.0.4671(0.5,0.7)-0.-0.0.4681(0.5,0.8)-0.-0.0.4691(0.5,0.9)-。

7、0.-0.0.46101(0.5,1.0)-0.-0.0.表2LaxWendroff格式jk(x,t)数值解真实解误差4611(0.5,0.1)-0.-0.0.4621(0.5,0.2)-0.-0.0.4631(0.5,0.3)-0.-0.0.4641(0.5,0.4)-0.-0.0.4651(0.5,0.5)-0.-1.0.4661(0.5,0.6)-0.-0.0.4671(0.5,0.7)-0.-0.0.4681(0.5,0.8)-0.-0.0.4691(0.5,0.9)-0.-0.0.46101(0.5,1.0)-0.-0.0.备注:本来,但是由于matlab中下标必须从大于0开始,所以在程序中图像分析:结果分析:从表1和表2可以看出LaxFriedrichs格式和LaxWendroff格式的真值得误差都比较小,而LaxWendroff格式虽然精度比LaxFriedrichs的精度高,但是在网格点划分比较细的情况下,二者的差别不大。从三个图像的结果看出,二者都拟合的相当好,并且结果都稳定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值