大佬们,初学,写的程序如下,为什么随着时间步长减小误差会变大
matlab吧
全部回复
仅看楼主
level 1
大佬们,初学,写的程序如下,为什么随着时间步长减小误差会变大?
clear all;close all;clc;options={'dT','T'};topic='赋值';lines=1;def={'0.00004','0.1'};p=inputdlg(options,topic,lines,def);dt=eval(p{1});t=eval(p{2});dx=1/50; %离散空间x步长 %离散时间t步长x=0:dx:1; j=length(x); % x方向坐标数N=0:dt:t; n=length(N); % t方向坐标数u=zeros(j,n); %波动方程的数值解u(:,1)=sin(pi*x);u(1,:)=0;u(j,:)=0;r=1;a=r*dt/(2*(dx)^2);A=zeros(j);B=zeros(j);for k=2:j-1A(k,k)=1+2*a;A(k,k-1)=-a;A(k,k+1)=-a;B(k,k)=1-2*a;B(k,k-1)=a;B(k,k+1)=a;end%输入边界条件A(1,1)=1;A(j,j)=1;B(1,1)=1;B(j,j)=1;Q=inv(A)*B;%方程求解for d=1:n-1 u(:,d+1)= Q*u(:,d);endplot(0:dx:1,u(:,n),'r','linewidth',1)hold onx=0:dx:1;ue(:,1)=(exp(-t*pi^2))*sin(pi*x);plot(x,ue,'o') e=norm(u(:,n)-ue(:,1))xlabel('x')ylabel('u')legend('数值解','解析解','Location','northEast');title('Crank-Nicolson 格式')
2019年07月04日 01点07分 1
level 1
有人吗
2019年07月04日 01点07分 2
level 7
这个是解决啥的呀
2019年07月04日 03点07分 3
大佬看我发的图
2019年07月04日 03点07分
level 1
2019年07月04日 03点07分 4
1