紧致差分的matlab程序,一维抛物方程紧致差分MATLAB(时间二阶空间四阶

本文详细介绍了使用MATLAB求解一维抛物方程的过程,采用二阶时间差分和四阶空间差分方法。代码实现了一个边界条件为0,初始条件为正弦函数的示例问题,并计算了精确解与数值解的误差。通过图形展示了解的表面分布,同时提供了L2误差的计算。
摘要由CSDN通过智能技术生成

41528d3028836879cd698677c3999917.gif一维抛物方程紧致差分MATLAB(时间二阶空间四阶

精品资料 欢迎下载 %%%%%Parabolic equation u_t-Laplace(u)=f (x,t) [0,1]*[0,1]%%% %%%%% u(x,0)=0 %%% %%%%% u(0,t)=u(1,t)= 0 %%%% %%%%% genuine solution u(x,t)=sin(pi*x)*sin(t) %%% %%%%% f(x,t)=sin(pi*x)*cos(t)+pi^2*sin(pi*x)*sin(t) %%%%% N=40; h=1/N; x=0:h:1; M=80; d=1/M; t=0:d:1; r=d/(2*h^2); A=zeros(N-1,N-1); B=zeros(N-1,N-1); u=zeros(N+1,M+1); for i=1 A(i,i)=5/6; A(i,i+1)=1/12; B(i,i)=2*r; B(i,i+1)=-r; end for i=N-1 A(i,i-1)=1/12; A(i,i)=5/6; B(i,i-1)=-r; B(i,i)=2*r; end for i=2:N-2 A(i,i-1)=1/12; A(i,i)=5/6; A(i,i+1)=1/12; B(i,i-1)=-r; B(i,i)=2*r; B(i,i+1)=-r; end f=zeros(N+1,M+1); for i=1:N+1 u(i,2)=sin(pi*(i-1)*h)*cos(d)*d; end for j=3:M+1 for i=2:N; f(i,j-1)=sin(pi*(i-1)*h)*cos((j-2)*d)+pi^2*sin(pi*(i-1)*h)*sin((j-2)*d); end u(2:N,j)=(A+B)\(2*d*A*f(2:N,j-1)-2*B*u(2:N,j-1)+(A-B)*u(2:N,j-2)); end u_exact=zeros(N+1,M+1); for i=1:N+1 for j=1:M+1 u_exact(i,j)=sin(pi*(i-1)*h)*sin((j-1)*d); end end [x,t]=meshgrid(x,t); subplot(1,2,1) surf(u) subplot(1,2,2) surf(u_exact) % subplot(1,2,1) % plot(x,u(:,M+1)) % subplot(1,2,2) % plot(x,u_exact(:,M+1)) Err=max(abs(u-u_exact)); L2_err=norm(u-u_exact)*h^(1/2)*d^(1/2); % Err=max(abs(u(:,M+1)-u_exact(:,M+1))); % L2_err=norm(u(:,M+1)-u_exact(:,M+1))*h^(1/2); Err L2_err %L2_err(j)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值