偏微分方程数值和matlab实验报告(8).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验题目:用Lax-Wendroff格式求解方程: (1) (精确解) 数值边值条件分别为: 请将计算结果与精确解进行比较。 实现算法: 网格剖分: 对求解区域作均匀网格剖分. 节点: 其中空间和时间步长: 算法实现 将在节点处作泰勒级数展开 (2) 考虑在节点处(1)的微分方程,有: 将上述两式代入(2)式,得 对的一阶、二阶导数用中心差商代替 代入整理后得到 略去误差项,以代替,得到如下差分格式 (3) (3)式就是Lax-Wendroff格式,其截断误差为,节点如图 令,就得到(1)式的Lax-Wendroff格式的公式 (4) (4)式是二阶精度的差分格式. 程序代码: function [X,T,U] = advection_fd1d (NS ,NT ,pde,bd) % WAVE_EQUATION_FD1D 利用有限差分方法计算一维双曲线方程 % 输入参数: % NS 整型,空间剖分段数 % NT 整型,时间剖分段数 % pde 结构体,带求解的微分方程模型的已知数据, % 如边界、初始、系数和右端项等条件. % bd 数值边值条件 % 输出参数: % X 长度 NS+1 的列向量,空间网格剖分 % T 长度 NT+1 的行向量,时间网格剖分 % U (NS+1)*(NT+1) 矩阵,U(:,i) 表示第 i 个时间层网格剖分上的数值解 [X,h] = pde.space_grid(NS); [T,tau] = pde.time_grid(NT); N = length(X); M = length(T); U = zeros(N,M); % 初值条件 U(:,1) = pde.u_initial (X); a = pde.a; r = a*tau/h; % 边值条件 if a = 0 % 左边值条件 U(1,:) = pde.u_left(T) else U(end,:) = pde.u_right(T) %右边值条件 end for i = 2:M U(2:end -1,i) =U(2:end-1,i-1)-r*(U(3:end,i-1)-U(1:end-2,i-1))/2+... r^2*(U(3:end,i-1)-2*U(2:end-1,i-1)+U(1:end-2,i-1))/2; switch (bd) case {a0} a0(); case {b} b(); case {c} c(); otherwise disp([Sorry, I do not know your , bd]); end end function a0() U(1,i)=U(1,i-1)-r*(U(2,i-1)-U(1,i-1)); end function b() U(1,i)=U(2,i-1); end function c() U(1,i)=2*U(2,i)-U(3,i); end end function pde = model_data () %MODEL_DATA 数据模型 TI = 0; TF = 1; SI = 0; SF = 1; pde = struct(u_exact,@u_exact,u_initial,@u_initial,... u_left,@u_left,u_right,@u_right,time_grid,... @time_grid,space_grid,@space_grid,advection_fd1d_error,@advection_fd1d_error,a,-2); function [T,tau] = time_grid(NT) T = linspace(TI,TF,NT+1); tau = (TF-TI)/NT; end function [X,h] = space_grid(NS)

文档评论(0)

moon8888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档