%实验八
%六点对称格式求解抛物型方程
function Err=C_N(h,tau)
T=10;
l=1;
a=1;
r=a*tau/(h*h);
x=0:h:l;
t=0:tau:T;
J=l/h;
N=T/tau;
u=zeros(N+1,J+1); %% 边值定义为0
u(1,:)=sin(pi*x); %% 初值条件
%%C_N格式
row=[1:J-1,1:J-2,2:J-1];
col=[1:J-1,2:J-1,1:J-2];
val=[(1+r)*ones(1,J-1),-r/2*ones(1,J-2),-r/2*ones(1,J-2)];
A=sparse(row,col,val);
row2=[1:J-1,1:J-2,2:J-1];
col2=[1:J-1,2:J-1,1:J-2];
val2=[(1-r)*ones(1,J-1),r/2*ones(1,J-2),r/2*ones(1,J-2)];
B=sparse(row2,col2,val2);
for n=1:N
u(n+1,2:end-1)=A\(B*u(n,2:end-1)');
end
[X,T]=meshgrid(x,t);
%subplot(1,2,1)
%mesh(X,T,u)%数值解图像
%subplot(1,2,2)
%mesh(X,T,uu(X,T))%真解图像
Eh=uu(X,T)-u;%误差
%mesh(X,T,Eh)%误差函数图像
u1=uu(0.5,1/2);%t=0.5,x=0.1时刻的真解
u2=u(end,0.5*J+1);%t=0.5,x=0.1时刻的数值解
eh=abs(u1-u2);%t=0.5,x=0.1时刻数值解与真解的误差
err=max(abs(Eh(end,:)));%t=1/2时的最大误差||e_h^N||_C
errs=max((abs(Eh'))); %% 不同时间层上的误差范数
plot(t,errs)
Err=max(max((abs(Eh'))));%||e_τ||_C
function y=uu(x,t)
y=exp(-pi*pi*t).*sin(pi*x);
C-N_matlab_CrankNicolson_
5星 · 超过95%的资源 65 浏览量
2021-09-29
14:35:32
上传
评论 3
收藏 2KB ZIP 举报
爱牛仕
- 粉丝: 93
- 资源: 4716
最新资源
- 基于c++的个人收支管理系统设计
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论2