📄 padebijin.m
字号:
%本程序是用来求解微分方程数值解的,是一种半离散的方法,结合了pade逼近,是误差达到四阶!
format long
tic
clear
%for i1=1:50
t =0.1;
h =pi/30;
a=2;
b=2^(1/2);
r=t*t/(h*h);
nt =200/t;
nh = round(pi/h);
u(1,1)=0;
u(nh+1,1)=0;
B=zeros(2*nh-2,2*nh-2);
x0=zeros(2*nh-2,nt+1);
for i = 2:nh
u(i,1) = sin((i-1)*h);
end
x0(1:nh-1,1)=u(2:nh,1);
x0(nh:2*nh-2,1)=-u(2:nh,1);
for j = 1:nh-1
if j ~= nh-1
A(j,j) = 10;
D(j,j)=-2;
A(j+1,j) =1;
D(j+1,j)=1;
A(j,j+1) =1;
D(j,j+1)=1;
else
A(j,j) = 10;
D(j,j)= -2;
end
end
A=12/(h*h)*A^(-1)*D;
A=A-b*b*diag(diag(ones(nh-1,nh-1)));
B(nh:2*nh-2,1:nh-1)=-A;
B(1:nh-1,nh:2*nh-2)=-diag(diag(ones(nh-1,nh-1)));
B(nh:2*nh-2,nh:2*nh-2)=2*a*diag(diag(ones(nh-1,nh-1)));
C=(120*diag(diag(ones(2*nh-2,2*nh-2)))-60*t*B+12*t*t*B*B-t^3*B^3)*(120*diag(diag(ones(2*nh-2,2*nh-2)))+60*t*B+12*t*t*B*B+t^3*B^3)^(-1);
for j=1:nt
x0(:,j+1)=C*x0(:,j);
end
nh
U=x0(1:nh-1,:);
x = h:h:pi-h;
y = 0:t:200;
[X,Y] = meshgrid(x,y);
Z=sin(X).*exp(-Y);
G2=Z'-U;
mesh(Z'-U)
G2(1:7:29,21)
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -