微分方程数值方法大作业1.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档