- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微分方程数值方法大作业1
微分方程数值方法大作业
操作任务
给定初值问题
0x1,0t0.1
u(0,t)=u(1,t)=0 0t0.1
u(x,0)=sinπx 0≤x≤1
研究上述问题Grank-Nicholson格式的稳定性
差分格式
先空间方向离散:
j=0,1,2……N
,,,,,,,
, ,,,,,,,,
取x=xj 得: ,
即得半离散格式:
j=0,1,2……N
记u(t)=[u(x1,t), u(x2,t) , …… u(xN-1,t)]T
F(t) =[f(x1,t)], f(x2,t)] …… f(xN-1,t)]T
格式变为:
U(0)=[]T
用梯形格式——Grank-Nicholason格式
则格式变为:
程序
function x=EqtsForwardAndBackward(L,D,U,b)
%追赶法求解三对角线性方程组Ax=b
%x=EqtsForwardAndBackward(L,D,U,b)
%x:三对角线性方程组的解
%L:三对角矩阵的下对角线,行向量
%D:三对角矩阵的对角线,行向量
%U:三对角矩阵的上对角线,行向量
%b:线性方程组Ax=b中的b,列向量
n=length(D);m=length(b);
n1=length(L);n2=length(U);
if n-n1 ~= 1 || n-n2 ~= 1 || n ~= m %检查参数的输入是否正确
disp(输入参数有误!)
x= ;
return;
end
%追的过程
for i=2:n
L(i-1)=L(i-1)/D(i-1);
D(i)=D(i)-L(i-1)*U(i-1);
end
x=zeros(n,1);
x(1)=b(1);
for i=2:n
x(i)=b(i)-L(i-1)*x(i-1);
end
%赶的过程
x(n)=x(n)/D(n);
for i=n-1:-1:1
x(i)=(x(i)-U(i)*x(i+1))/D(i);
end
return;
function [U x t] = PDEParabolicCN(uX,uT,M,N) %Crank-Nicolson隐式格式求解抛物型偏微分方程
%输入参数:uX -空间变量x的取值上限
% ? ?? ?? uT -时间变量t的取值上限
% ? ?? ?? M -沿x轴的等分区间数
% ? ?? ?? N -沿t轴的等分区间数
h=uX/M;%计算空间方向步长
tao=uT/N;%计算时间方向步长
x=(0:M)*h;
t=(0:N)*tao;
r=h/(tao*tao);%网格比
Diag=zeros(1,M-1);%矩阵的对角线元素
Low=zeros(1,M-2);%矩阵的下对角线元素
Up=zeros(1,M-2);%矩阵的上对角线元素
for i=1:M-2
Diag(i)=1+r;
Low(i)=-r/2;
Up(i)=-r/2;
end
Diag(M-1)=1+r;
%计算初值和边值
U=zeros(M+1,N+1);
for i=1:M+1
U(i,1)=sin(pi*x(i));
end
for j=1:N+1
U(1,j)=0;
U(M+1,j)=0;
end
B=zeros(M-1,M-1);
for i=1:M-2
B(i,i)=1-r;
B(i,i+1)=r/2;
B(i+1,i)=r/2;
end
B(M-1,M-1)=1-r;
%逐层求解,需要使用追赶法(调用函数EqtsForwardAndBackward)
for j=1:N
b1=zeros(M-1,1);
b1(1)=r*(U(1,j+1)+ U(1,j))/2;
b1(M-1)=r*(U(M+1,j+1)+U(M+1,j))/2;
b=B*U(2:M,j)+b1;
U(2:M,j+1)=EqtsForwardAndBackward(Low,Diag,Up,b);
end
U=U;
disp(请输入uX)
uX=input(uX=);
disp(请输入u
文档评论(0)