- 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文档。上传文档
查看更多
第七章 偏微分方程数值解法
东南大学《数值分析》上机练习——算法与程序设计实验报告
第七章 偏微分方程数值解法
——Crank-Nicolson格式
****(学号) *****(姓名)
上机题目要求见教材P346,10题。
一、算法原理
本文研究下列定解问题(抛物型方程)
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 1)
的有限差分法,其中为正常数,为已知函数,且满足边界条件和初始条件。关于式(1)的求解,采用离散化方法,剖分网格,构造差分格式。其中,网格剖分是将区域用两簇平行直线
分割成矩形网格,其中分别为空间步长和时间步长。将式(1)中的偏导数使用不同的差商代替,将得到不同的差分格式,如古典显格式、古典隐格式、Crank-Nicolson格式等。其中,Crank-Nicolson格式具有更高的收敛阶数,应用更广泛,故本文采用Crank-Nicolson格??求解抛物型方程。
Crank-Nicolson格式推导:在节点处考虑式(1),有
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 2)
对偏导数用中心差分展开
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 3)
将在节点和表示为
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 4)
对以上两个偏导数用二阶差分展开
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 5)
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 6)
将式(4)(5)(6)分别代入式(3),略去高阶小量,用代替并化简得
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 7)
令,将式(7)联合式(1)初始条件和边界条件,用矩阵的形式表示为:
MACROBUTTON MTPlaceRef \* MERGEFORMAT SEQ MTEqn \h \* MERGEFORMAT ( SEQ MTEqn \c \* Arabic \* MERGEFORMAT 8)
Crank-Nicolson格式的截断误差为,具有较高的精度。
二、计算代码
Crank_Nicolson格式完整代码
function U=Crank_Nicolson(f,a,x0,xn,dx,t0,tm,dt,g,s0,sn)
%采用Crank_Nicolson格式求解抛物线型偏微分方程
% du/dt-a*d2u/dx2=f(x,t)
%Input - f 抛物方程右端函数
% - a为二阶导系数
% - x0 and xn 空间域端点
% - t0 and tm 时间域端点
% - dx为空间步长,dt为时间步长
% - g 为初始条件函数
% - s0,sn为边界条件函数
%Output - U 输出,横坐标为空间,纵坐标为时间
M=(tm-t0)/dt;N=(xn-x0)/dx;%网格数
x=x0+dx:dx:xn-dx;
t=t0:dt:tm;
u=feval(g,x);u=u;
r=a*dt/dx/dx;%步长比
%Crank-Nicolso
文档评论(0)