新建
上传
首页
助手
最?/div>
资料?/div>
工具

向后差分格式

MATLAB

编程?/p>

 

c

lear;clc; 

format short e 

a=input('

请输入系?/p>

a

的?/p>

'); 

l=input('

请输入长?/p>

l

的?/p>

'); 

M=input('

请输入将区间

[0,1]

等分的个?/p>

M '); 

ot=input('

请输入时间增?/p>

ot

的?/p>

'); 

n=input('

请输入运行次?/p>

n

的?/p>

'); 

ox=1/M; 

x0=zeros(M+1,1) 

for ii=1:M 

 

 

 

 

x0(ii+1)=ii*ox; 

end 

u=sin(pi*x0/l); 

r=a*ot/(ox)^2; 

for ii=1:n 

 

 

 

 

%

数据的输?/p>

 

 

 

 

 

B=zeros(M-1,1); 

 

 

 

 

A=zeros(M-2,1); 

 

 

 

 

C=zeros(M-2,1); 

 

 

 

 

S=zeros(M-1,1); 

 

 

 

 

for ii=1:M-2 

 

 

 

 

 

 

 

 

B(ii)=1+2*r;A(ii)=-r;C(ii)=-r; 

 

 

 

 

 

 

 

 

S(ii)=u(ii+1,1); 

 

 

 

 

end 

 

 

 

 

B(M-1,1)=1+2*r;S(M-1,1)=u(M,1);u(1,2)=0;u(M+1,2)=0; 

 

 

 

 

S(1,1)=S(1,1)+r*u(1,2);S(M-1,1)=S(M-1,1)+r*u(M+1,2); 

 

 

 

 

%

追赶?/p>

 

 

 

 

 

S(1)=S(1)/B(1);T=B(1);k=2; 

 

 

 

 

while k~=M 

 

 

 

 

 

 

 

 

B(k-1)=C(k-1)/T; 

 

 

 

 

 

 

 

 

T=B(k)-A(k-1)*B(k-1); 

 

 

 

 

 

 

 

 

S(k)=(S(k)-A(k-1)*S(k-1))/T; 

 

 

 

 

 

 

 

 

k=k+1 

 

 

 

 

end 

 

 

 

 

k=1; 

 

 

 

 

while k~=M-1 

 

 

 

 

 

 

 

 

S(M-1-k)=S(M-1-k)-B(M-1-k)*S(M-k); 

 

 

 

 

 

 

 

 

k=k+1; 

 

 

 

 

end 

 

 

 

 

u(2:M,2)=S; 

 

 

 

 

u(:,1)=u(:,2); 

end 

%

计算精确?/p>

 

for x=0:M 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

向后差分格式

MATLAB

编程?/p>

 

c

lear;clc; 

format short e 

a=input('

请输入系?/p>

a

的?/p>

'); 

l=input('

请输入长?/p>

l

的?/p>

'); 

M=input('

请输入将区间

[0,1]

等分的个?/p>

M '); 

ot=input('

请输入时间增?/p>

ot

的?/p>

'); 

n=input('

请输入运行次?/p>

n

的?/p>

'); 

ox=1/M; 

x0=zeros(M+1,1) 

for ii=1:M 

 

 

 

 

x0(ii+1)=ii*ox; 

end 

u=sin(pi*x0/l); 

r=a*ot/(ox)^2; 

for ii=1:n 

 

 

 

 

%

数据的输?/p>

 

 

 

 

 

B=zeros(M-1,1); 

 

 

 

 

A=zeros(M-2,1); 

 

 

 

 

C=zeros(M-2,1); 

 

 

 

 

S=zeros(M-1,1); 

 

 

 

 

for ii=1:M-2 

 

 

 

 

 

 

 

 

B(ii)=1+2*r;A(ii)=-r;C(ii)=-r; 

 

 

 

 

 

 

 

 

S(ii)=u(ii+1,1); 

 

 

 

 

end 

 

 

 

 

B(M-1,1)=1+2*r;S(M-1,1)=u(M,1);u(1,2)=0;u(M+1,2)=0; 

 

 

 

 

S(1,1)=S(1,1)+r*u(1,2);S(M-1,1)=S(M-1,1)+r*u(M+1,2); 

 

 

 

 

%

追赶?/p>

 

 

 

 

 

S(1)=S(1)/B(1);T=B(1);k=2; 

 

 

 

 

while k~=M 

 

 

 

 

 

 

 

 

B(k-1)=C(k-1)/T; 

 

 

 

 

 

 

 

 

T=B(k)-A(k-1)*B(k-1); 

 

 

 

 

 

 

 

 

S(k)=(S(k)-A(k-1)*S(k-1))/T; 

 

 

 

 

 

 

 

 

k=k+1 

 

 

 

 

end 

 

 

 

 

k=1; 

 

 

 

 

while k~=M-1 

 

 

 

 

 

 

 

 

S(M-1-k)=S(M-1-k)-B(M-1-k)*S(M-k); 

 

 

 

 

 

 

 

 

k=k+1; 

 

 

 

 

end 

 

 

 

 

u(2:M,2)=S; 

 

 

 

 

u(:,1)=u(:,2); 

end 

%

计算精确?/p>

 

for x=0:M 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

向后差分格式

MATLAB

编程?/p>

 

c

lear;clc; 

format short e 

a=input('

请输入系?/p>

a

的?/p>

'); 

l=input('

请输入长?/p>

l

的?/p>

'); 

M=input('

请输入将区间

[0,1]

等分的个?/p>

M '); 

ot=input('

请输入时间增?/p>

ot

的?/p>

'); 

n=input('

请输入运行次?/p>

n

的?/p>

'); 

ox=1/M; 

x0=zeros(M+1,1) 

for ii=1:M 

 

 

 

 

x0(ii+1)=ii*ox; 

end 

u=sin(pi*x0/l); 

r=a*ot/(ox)^2; 

for ii=1:n 

 

 

 

 

%

数据的输?/p>

 

 

 

 

 

B=zeros(M-1,1); 

 

 

 

 

A=zeros(M-2,1); 

 

 

 

 

C=zeros(M-2,1); 

 

 

 

 

S=zeros(M-1,1); 

 

 

 

 

for ii=1:M-2 

 

 

 

 

 

 

 

 

B(ii)=1+2*r;A(ii)=-r;C(ii)=-r; 

 

 

 

 

 

 

 

 

S(ii)=u(ii+1,1); 

 

 

 

 

end 

 

 

 

 

B(M-1,1)=1+2*r;S(M-1,1)=u(M,1);u(1,2)=0;u(M+1,2)=0; 

 

 

 

 

S(1,1)=S(1,1)+r*u(1,2);S(M-1,1)=S(M-1,1)+r*u(M+1,2); 

 

 

 

 

%

追赶?/p>

 

 

 

 

 

S(1)=S(1)/B(1);T=B(1);k=2; 

 

 

 

 

while k~=M 

 

 

 

 

 

 

 

 

B(k-1)=C(k-1)/T; 

 

 

 

 

 

 

 

 

T=B(k)-A(k-1)*B(k-1); 

 

 

 

 

 

 

 

 

S(k)=(S(k)-A(k-1)*S(k-1))/T; 

 

 

 

 

 

 

 

 

k=k+1 

 

 

 

 

end 

 

 

 

 

k=1; 

 

 

 

 

while k~=M-1 

 

 

 

 

 

 

 

 

S(M-1-k)=S(M-1-k)-B(M-1-k)*S(M-k); 

 

 

 

 

 

 

 

 

k=k+1; 

 

 

 

 

end 

 

 

 

 

u(2:M,2)=S; 

 

 

 

 

u(:,1)=u(:,2); 

end 

%

计算精确?/p>

 

for x=0:M 

Ͼλ">
Ͼλ
Ŀ

热传导方程向后差分格式的MATLAB程序 - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

向后差分格式

MATLAB

编程?/p>

 

c

lear;clc; 

format short e 

a=input('

请输入系?/p>

a

的?/p>

'); 

l=input('

请输入长?/p>

l

的?/p>

'); 

M=input('

请输入将区间

[0,1]

等分的个?/p>

M '); 

ot=input('

请输入时间增?/p>

ot

的?/p>

'); 

n=input('

请输入运行次?/p>

n

的?/p>

'); 

ox=1/M; 

x0=zeros(M+1,1) 

for ii=1:M 

 

 

 

 

x0(ii+1)=ii*ox; 

end 

u=sin(pi*x0/l); 

r=a*ot/(ox)^2; 

for ii=1:n 

 

 

 

 

%

数据的输?/p>

 

 

 

 

 

B=zeros(M-1,1); 

 

 

 

 

A=zeros(M-2,1); 

 

 

 

 

C=zeros(M-2,1); 

 

 

 

 

S=zeros(M-1,1); 

 

 

 

 

for ii=1:M-2 

 

 

 

 

 

 

 

 

B(ii)=1+2*r;A(ii)=-r;C(ii)=-r; 

 

 

 

 

 

 

 

 

S(ii)=u(ii+1,1); 

 

 

 

 

end 

 

 

 

 

B(M-1,1)=1+2*r;S(M-1,1)=u(M,1);u(1,2)=0;u(M+1,2)=0; 

 

 

 

 

S(1,1)=S(1,1)+r*u(1,2);S(M-1,1)=S(M-1,1)+r*u(M+1,2); 

 

 

 

 

%

追赶?/p>

 

 

 

 

 

S(1)=S(1)/B(1);T=B(1);k=2; 

 

 

 

 

while k~=M 

 

 

 

 

 

 

 

 

B(k-1)=C(k-1)/T; 

 

 

 

 

 

 

 

 

T=B(k)-A(k-1)*B(k-1); 

 

 

 

 

 

 

 

 

S(k)=(S(k)-A(k-1)*S(k-1))/T; 

 

 

 

 

 

 

 

 

k=k+1 

 

 

 

 

end 

 

 

 

 

k=1; 

 

 

 

 

while k~=M-1 

 

 

 

 

 

 

 

 

S(M-1-k)=S(M-1-k)-B(M-1-k)*S(M-k); 

 

 

 

 

 

 

 

 

k=k+1; 

 

 

 

 

end 

 

 

 

 

u(2:M,2)=S; 

 

 

 

 

u(:,1)=u(:,2); 

end 

%

计算精确?/p>

 

for x=0:M 



ļ׺.doc޸Ϊ.docĶ

  • йͨתܵĽṹ - ͼ
  • 2016ʦ
  • ̰꼶²˼ƷһԪ
  • ִκϰ𰸣ȫ
  • Ҫŵĺշ
  • йʯͼŹ˾Ͷģ
  • 2020мʦ1
  • йʯͼŹ˾Ͷģ
  • ͨѧϰ
  • йͨתܵĽṹ - ͼ

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)