[关闭]
@why-math 2017-05-17T11:06:57.000000Z 字数 1893 阅读 4134

偏微分方程数值解

teaching


参考教材: 微分方程数值解(第四版),李荣华,刘播;

一, 实验报告题目

(1) 上机实践:利用有限差分法去求解


真解为

(2) 上机实践: 教材PP. 112. 3.1.1

给定如下求解个维热传导方程的数值格式:


分别取 ,用上面格式作数值实验,观察误差的增长规律,并说明时稳定,时不稳定。

运行如下测试脚本 errortest.m:

  1. %% 针对不同的 r 测试向前差分格式中初始误差随迭代的传播情况
  2. %
  3. % $$ u_j^{n+1}=ru_{j+1}^n+(1-2r)u_j^n+ru_{j-1}^n+\tau f_j $$
  4. %
  5. % 作者:魏华祎 <weihuayi@xtu.edu.cn>
  6. N = 10;
  7. epsilon = 0.0001;
  8. maxit = 100;
  9. r = 5/9;
  10. E1 = errorvary(N, r, epsilon, maxit);
  11. r = 5/11;
  12. E2 = errorvary(N,r,epsilon, maxit);
  13. % 显示 r= 5/9 初始误差和第 100 个时间步的误差
  14. disp(E1(:,[1,100]));
  15. % 显示 r= 5/11 初始误差和第 100 个时间步的误差
  16. disp(E2(:,[1,100]));

函数 errorvary定义如下:

  1. function E = errorvary(N,r,epsilon,maxit)
  2. %% ERRORVARY 给定有 N 个节点的网格,实验检验不同 r 清况下,初始误差随时间推进的变化情况
  3. %
  4. % 输入参数:
  5. % N 网格节点数
  6. % r 网格比
  7. % epsilon round(N/2) 个网格节点处的初始误差
  8. % maxit 最大迭代步数
  9. % 输出参数:
  10. % E N*maxit 阶矩阵,E(:,i) 表示第 i 个时间层上的每个网格点处的误差
  11. %
  12. % 作者:魏华祎 <weihuayi@xtu.edu.cn>
  13. E = zeros(N,maxit);
  14. E(round(N/2),1) = epsilon;
  15. d = 1 - 2*ones(N-2,1)*r;
  16. c = ones(N-3,1)*r;
  17. A = diag(c,-1) + diag(c,1)+diag(d);
  18. for i = 2:maxit
  19. E(2:end-1,i) = A*E(2:end-1,i-1);
  20. end
  21. end

(3) 上机实践: 用向前差分求解下面热传导方程, 并观察最大模误差的变化

其中
空间区间为;
时间区间;
;
真解

把真解代入上面模型, 即可得到相关的参数.

最大模误差定义如下:

所有网格点处数值解和真解误差绝对值的最大值, 最大模误差 与时间步长 和空间步长 满足如下关系:

所以,当 变为 , 变为 时, 应变为 .

示例Matlab代码请参考这里;

(4) 上机实践: 教材PP. 158. 习题4和5,实例代码见FDM-案例3代码(提取码:173a).

(5) 上机实践:教材 P. 181, 实习题 2.

(6) 上机实践:教材 P. 211 习题

用 Ritz-Galerkin 方法求边值问题


的第 次近似 , 基函数为 . 并用表格列出
三点处的真解和 时的数值解。

二, 相关资源

  1. 相关软件下载(提取码: 04bd)
  2. Matlab课件(提取码:a78d), 易年余.
  3. 偏微分方程数值解课件与程序(提取码:173a), 舒适,易年余, 魏华祎.
  4. 交互式Matlab教程, 陈炜.
  5. 实用大众线性代数课件 (提取码:ceff), 陈怀琛
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注