




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一维热传导方程一 问题介绍考虑一维热传导方程:(1) 其中a是正常数,是给定的连续函数。按照定解条件的不同给法,可将方程(1)的定解问题分为两类:第一类、初值问题(也称Cauthy问题):求具有所需次数偏微商的函数,满足方程(1)()和初始条件:(2) 第二类、初边值问题(也称混合问题):求具有所需次数偏微商的函数,满足方程(1)()和初始条件:(3)及边值条件(4) 假定在相应区域光滑,并且在满足相容条件,使上述问题有唯一充分光滑的解。二 区域剖分考虑边值问题(1),(4)的差分逼近。去空间步长和时间步长,其中N,M都是正整数。用两族平行直线:将矩形域分割成矩形网格,网格节点为。以表示网格内点集合,即位于开矩形G的网点集合;表示所有位于闭矩形的网点集合;=-是网格界点集合。三 离散格式第k+1层值通过第k层值明显表示出来,无需求解线性代数方程组,这样的格式称为显格式。第k+1层值不能通过第k层值明显表示出来,而由线性代数方程组确定,这样的格式称为隐格式。1. 向前差分格式(5), , ,其中j = 1,2,,N-1,k = 1,2,M-1。以表示网比。则方程(5)可以改写为:易知向前差分格式是显格式。2. 向后差分格式(6), ,其中j = 1,2,,N-1,k = 1,2,M-1,易知向前差分格式是显格式。3. 六点对称格式(Grank-Nicolson格式)将向前差分格式和向后差分格式作算术平均,即得到六点对称格式:(7) =利用和边值便可逐层求到。六点对称格式是隐格式,由第k层计算第k+1层时需解线性代数方程组(因系数矩阵严格对角占优,方程组可唯一求解)。将其截断误差于(=)展开,则得= 。4. Richardson格式(8) ,或(9)。这是三层显示差分格式。截断误差阶为。为了使计算能够逐层进行,除初值外,还要用到,这可以用前述二层差分格式计算(为保证精度,可将0,分成若干等份)。四 格式稳定性通过误差估计方程(1) 可知对任意的r ,Richardson格式都不稳定,所以Richardson格式绝对不稳定。(2) 当时,向前差分格式趋于稳定;当时,向前差分格式的误差无限增长。因此向前差分格式是条件稳定。(3) 向后差分格式和六点对称格式都绝对稳定,且各自的截断误差阶分别为和。五 数值例子例1 令f ( x ) = 0和a = 1,可求得u(x,t)一个解析解为u ( x , t ) =exp ( x + t )。1 用向前差分格式验证得数值结果如下:请输入n的值(输入0结束程序):2请输入m的值(输入0结束程序):17xj tk 真实值xik 近似值uik 误差errik0.333333 0.055556 1.475341 1.473867 0.0014740.666667 0.055556 2.059004 2.056947 0.0020570.333333 0.111111 1.559623 1.557037 0.0025860.666667 0.111111 2.176630 2.173719 0.0029110.333333 0.166667 1.648721 1.645619 0.0031020.666667 0.166667 2.300976 2.297385 0.0035910.333333 0.222222 1.742909 1.739373 0.0035360.666667 0.222222 2.432425 2.428445 0.0039810.333333 0.277778 1.842477 1.838647 0.0038310.666667 0.277778 2.571384 2.567048 0.0043370.333333 0.333333 1.947734 1.943620 0.0041140.666667 0.333333 2.718282 2.713651 0.0046300.333333 0.388889 2.059004 2.054632 0.0043720.666667 0.388889 2.873571 2.868644 0.0049270.333333 0.444444 2.176630 2.171992 0.0046380.666667 0.444444 3.037732 3.032512 0.0052200.333333 0.500000 2.300976 2.296068 0.0049080.666667 0.500000 3.211271 3.205744 0.0055260.333333 0.555556 2.432425 2.427233 0.0051930.666667 0.555556 3.394723 3.388878 0.0058450.333333 0.611111 2.571384 2.565894 0.0054910.666667 0.611111 3.588656 3.582475 0.0061810.333333 0.666667 2.718282 2.712476 0.0058050.666667 0.666667 3.793668 3.787133 0.0065350.333333 0.722222 2.873571 2.867434 0.0061370.666667 0.722222 4.010392 4.003483 0.0069080.333333 0.777778 3.037732 3.031243 0.0064880.666667 0.777778 4.239496 4.232193 0.0073030.333333 0.833333 3.211271 3.204411 0.0068590.666667 0.833333 4.481689 4.473969 0.0077210.333333 0.888889 3.394723 3.387472 0.0072510.666667 0.888889 4.737718 4.729556 0.0081620.333333 0.944444 3.588656 3.580991 0.0076650.666667 0.944444 5.008373 4.999745 0.008628当n等于2和m等于17时最大误差为0.008628其中r = 1/2,格式是稳定的。2. 用向后差分格式验证得数值结果如下:请输入n的值(输入0结束程序):6请输入m的值(输入0结束程序):6xj 真实值xi 近似值ui 误差erri第1层结果 时间节点Tk=0.1428570.142857 1.330712 1.335002 0.0042890.285714 1.535063 1.542358 0.0072950.428571 1.770795 1.779949 0.0091540.571429 2.042727 2.052524 0.0097970.714286 2.356418 2.365346 0.0089270.857143 2.718282 2.724256 0.005974第1层的最大误差是0.009797第2层结果 时间节点Tk=0.2857140.142857 1.535063 1.541797 0.0067340.285714 1.770795 1.782424 0.0116290.428571 2.042727 2.057345 0.0146180.571429 2.356418 2.371895 0.0154770.714286 2.718282 2.732070 0.0137880.857143 3.135715 3.144633 0.008919第2层的最大误差是0.015477第3层结果 时间节点Tk=0.4285710.142857 1.770795 1.779324 0.0085290.285714 2.042727 2.057518 0.0147910.428571 2.356418 2.375010 0.0185920.571429 2.718282 2.737884 0.0196020.714286 3.135715 3.153041 0.0173260.857143 3.617251 3.628337 0.011086第3层的最大误差是0.019602第4层结果 时间节点Tk=0.5714290.142857 2.042727 2.052888 0.0101610.285714 2.356418 2.374062 0.0176440.428571 2.718282 2.740457 0.0221750.571429 3.135715 3.159058 0.0233430.714286 3.617251 3.637827 0.0205760.857143 4.172734 4.185851 0.013117第4层的最大误差是0.023343第5层结果 时间节点Tk=0.7142860.142857 2.356418 2.368276 0.0118570.285714 2.718282 2.738880 0.0205980.428571 3.135715 3.161600 0.0258860.571429 3.617251 3.644485 0.0272340.714286 4.172734 4.196716 0.0239820.857143 4.813520 4.828788 0.015268第5层的最大误差是0.027234第6层结果 时间节点Tk=0.8571430.142857 2.718282 2.732017 0.0137350.285714 3.135715 3.159578 0.0238640.428571 3.617251 3.647240 0.0299890.571429 4.172734 4.204278 0.0315440.714286 4.813520 4.841287 0.0277670.857143 5.552708 5.570378 0.017670第6层的最大误差是0.031544当n等于6时最大误差为0.0315443. 用六点对称格式验证数值结果如下:请输入n的值(输入0结束程序):6请输入m的值(输入0结束程序):6xj 真实值xi 近似值ui 误差erri第1层结果 时间节点Tk=0.1428570.142857 1.330712 1.330988 0.0002760.285714 1.535063 1.535522 0.0004590.428571 1.770795 1.771368 0.0005730.571429 2.042727 2.043350 0.0006230.714286 2.356418 2.357004 0.0005850.857143 2.718282 2.718692 0.000410第1层的最大误差是0.000623第2层结果 时间节点Tk=0.2857140.142857 1.535063 1.535424 0.0003610.285714 1.770795 1.771435 0.0006400.428571 2.042727 2.043538 0.0008100.571429 2.356418 2.357268 0.0008490.714286 2.718282 2.719016 0.0007340.857143 3.135715 3.136162 0.000447第2层的最大误差是0.000849第3层结果 时间节点Tk=0.4285710.142857 1.770795 1.771233 0.0004380.285714 2.042727 2.043476 0.0007490.428571 2.356418 2.357355 0.0009370.571429 2.718282 2.719268 0.0009860.714286 3.135715 3.136592 0.0008770.857143 3.617251 3.617825 0.000574第3层的最大误差是0.000986第4层结果 时间节点Tk=0.5714290.142857 2.042727 2.043222 0.0004950.285714 2.356418 2.357287 0.0008690.428571 2.718282 2.719377 0.0010950.571429 3.135715 3.136867 0.0011530.714286 3.617251 3.618261 0.0010100.857143 4.172734 4.173365 0.000631第4层的最大误差是0.001153第5层结果 时间节点Tk=0.7142860.142857 2.356418 2.356999 0.0005810.285714 2.718282 2.719284 0.0010030.428571 3.135715 3.136973 0.0012580.571429 3.617251 3.618573 0.0013220.714286 4.172734 4.173900 0.0011660.857143 4.813520 4.814271 0.000751第5层的最大误差是0.001322第6层结果 时间节点Tk=0.8571430.142857 2.718282 2.718945 0.0006630.285714 3.135715 3.136871 0.0011570.428571 3.617251 3.618705 0.0014550.571429 4.172734 4.174265 0.0015310.714286 4.813520 4.814867 0.0013470.857143 5.552708 5.553559 0.000851第6层的最大误差是0.001531当n等于6时最大误差为0.0015314用Richardson格式验证数值结果如下:请输入n的值(输入0结束程序):5请输入m的值(输入0结束程序):5xj tk 真实值xik 近似值uik 误差errik0.166667 0.166667 1.395612 1.396080 0.0004680.333333 0.166667 1.648721 1.649481 0.0007600.500000 0.166667 1.947734 1.948649 0.0009150.666667 0.166667 2.300976 2.301888 0.0009120.833333 0.166667 2.718282 2.718949 0.0006670.166667 0.333333 1.648721 1.645540 0.0031820.333333 0.333333 1.947734 1.944806 0.0029280.500000 0.333333 2.300976 2.297583 0.0033930.666667 0.333333 2.718282 2.713600 0.0046820.833333 0.333333 3.211271 3.204099 0.0071710.166667 0.500000 1.947734 1.988145 0.0404110.333333 0.500000 2.300976 2.291621 0.0093550.500000 0.500000 2.718282 2.707514 0.0107680.666667 0.500000 3.211271 3.195685 0.0155860.833333 0.500000 3.793668 3.907779 0.1141110.166667 0.666667 2.300976 1.214156 1.0868200.333333 0.666667 2.718282 3.293822 0.5755410.500000 0.666667 3.211271 3.164907 0.0463640.666667 0.666667 3.793668 5.400692 1.6070240.833333 0.666667 4.481689 1.545878 2.9358110.166667 0.833333 2.718282 35.747074 33.0287920.333333 0.833333 3.211271 -24.211361 27.4226310.500000 0.833333 3.793668 31.083927 27.2902590.666667 0.833333 4.481689 -69.891509 74.3731980.833333 0.833333 5.294490 95.148891 89.854401附录1#include #include #include #define Max_N 1000double uMax_NMax_N,bMax_N,aMax_N,cMax_N,fMax_N,errMax_NMax_N,xMax_NMax_N,yMax_N,betaMax_N,ErrMax_N;int n,m; /将空间区间【0,1】分为n等份;时间区间【0,1】分为m等份void catchup()int i;beta1=c1/b1;for(i=2;in;i+)betai=ci/(bi-ai*betai-1);y1=f1/b1;for(i=2;i0;i-)ui1=yi-betai*ui+11;int main() /一维热传导方程的向前差分格式int k,i;double h,t,r;double pi=3.1415627;printf(请输入n的值(输入0结束程序):n);if(scanf(%d,&n) printf(请输入m的值(输入0结束程序):n);while(scanf(%d,&m)&m&n) /u(x,t)=exp(x+t),u(x,0)=exp(x),f(x)=0,x属于0,1,t属于0,1,a=1. h=1.0/(n+1);t=1.0/(m+1);r=t/(h*h);for(i=0;i=n+1;i+)/初值条件ui0=exp(i*h); for(k=0;k=m+1;k+)/边值条件u0k=exp(k*t);un+1k=exp(n+1)*h+k*t);printf(xj tk 真实值xik 近似值uik 误差errikn);for(k=1;k=m;k+)for(int j=1;j=n;j+)ujk=r*uj+1k-1+(1-2*r)*ujk-1+r*uj-1k-1;double T=0;for(k=1;k=m;k+)for(i=1;iuik?xik-uik:uik-xik;printf(%lf %lf %lf %lf %lfn,i*h,k*t,xik,uik,errik);if(errikT) T=errik;printf(当n等于%d和m等于%d时最大误差为%lfn,n,m,T);printf(请输入n的值(输入0结束程序):); if(scanf(%d,&n) printf(请输入m的值(输入0结束程序):);system(PASUE);return 0;附录2#include #include #include #define Max_N 1000double uMax_N,bMax_N,aMax_N,cMax_N,fMax_N,errMax_N,xMax_N,yMax_N,betaMax_N,ErrMax_N;int n,m; /将空间区间【0,1】分为n等份;时间区间【0,1】分为m等份void catchup()int i;beta1=c1/b1;for(i=2;in;i+)betai=ci/(bi-ai*betai-1);y1=f1/b1;for(i=2;i0;i-)ui=yi-betai*ui+1;int main() /一维热传导方程的六点对称格式int k,i;double h,t,r;/int j=0;double pi=3.1415627;printf(请输入n的值(输入0结束程序):n);if(scanf(%d,&n) printf(请输入m的值(输入0结束程序):n);while(scanf(%d,&m)&m&n) /u(x,t)=exp(x+t),u(x,0)=exp(x),f(x)=0,x属于0,1,t属于0,1,a=1. h=1.0/(n+1);t=1.0/(m+1);r=t/(h*h);printf(xj 真实值xi 近似值ui 误差errin);double M=0;/double temp=0;for(k=1;k=m;k+)b1=1+2*r; c1=-r;an=-r;bn=1+2*r;if(k=1)f1=exp(h)+r*exp(t);fn=exp(n*h)+r*exp(n+1)*h+t);elsef1=u1+r*exp(k*t);fn=un+r*exp(n+1)*h+k*t);for(i=2;in;i+)bi=1+2*r;ai=-r;ci=-r;if(k=1)fi=exp(i*h);elsefi=ui;catchup();printf(第%d层结果 时间节点Tk=%lfn,k,k*t);double T=0;/double tem=0;for(i=1;iui?xi-ui:ui-xi;printf(%lf %lf %lf %lfn,i*h,xi,ui,erri);if(erriT) T=erri;/tem=tem+erri*erri*h;printf(第%d层的最大误差是%lfn,k,T);if(TM) M=T;/temp=temp+tem;printf(n);/Errj=temp;printf(当n等于%d时最大误差为%lfn,n,M);/printf(当n等于%d时其二范数为%lfn,n,Errj);/if(j!=0) printf(log(Errj-1/Errj)=%lfnn,log(Errj-1/Errj);/j+;printf(请输入n的值(输入0结束程序):); if(scanf(%d,&n) printf(请输入m的值(输入0结束程序):);system(PASUE);return 0;附录3#include #include #include #define Max_N 1000double uMax_N,bMax_N,aMax_N,cMax_N,fMax_N,errMax_N,xMax_N,yMax_N,betaMax_N,ErrMax_N;int n,m; /将空间区间【0,1】分为n等份;时间区间【0,1】分为m等份void catchup()int i;beta1=c1/b1;for(i=2;in;i+)betai=ci/(bi-ai*betai-1);y1=f1/b1;for(i=2;i0;i-)ui=yi-betai*ui+1;int main() /一维热传导方程的六点对称格式int k,i;double h,t,r;/int j=0;double pi=3.1415627;printf(请输入n的值(输入0结束程序):n);if(scanf(%d,&n) printf(请输入m的值(输入0结束程序):n);while(scanf(%d,&m)&m&n) /u(x,t)=exp(x+t),u(x,0)=exp(x),f(x)=0,x属于0,1,t属于0,1,a=1. h=1.0/(n+1);t=1.0/(m+1);r=t/(h*h);printf(xj 真实值xi 近似值ui 误差errin);double M=0;/double temp=0;for(k=1;k=m;k+)b1=1+r; c1=-r/2;an=-r/2;bn=1+r;if(k=1)f1=r/2*exp(2*h)+(1-r)*exp(h)+r/2+r/2*exp(t);fn=r/2*exp(n+1)*h)+(1-r)*exp(n*h)+r/2*exp(n-1)*h)+r/2*exp(n+1)*h+t);elsef1=r/2*u2+(1-r)*u1+r/2*exp(k-1)*t)+r/2*exp(k*t);fn=r/2*un-1+(1-r)*un+r/2*exp(n+1)*h+(k-1)*t)+r/2*exp(n+1)*h+k*t);for(i=2;in;i+)bi=1+r;ai=-r/2;ci=-r/2;if(k=1)fi=r/2*exp(i+1)*h)+(1-r)*exp(i*h)+r/2*exp(i-1)*h);elsefi=r/2*ui+1+(1-r)*ui+r/2*ui-1;catchup();printf(第%d层结果 时间节点Tk=%lfn,k,k*t);double T=0;double tem=0;for(i=1;iui?xi-ui:ui-xi;printf(%lf %lf %lf %lfn,i*h,xi,ui,erri);if(erriT) T=erri;/tem=tem+erri*erri*h;printf(第%d层的最大误差是%lfn,k,T);if(TM) M=T;/temp=temp+tem;printf(n);/Errj=temp;printf(当n等于%d时最大误差为%lfn,n,M);/printf(当n等于%d时其二范数为%lfn,n,Errj);/if(j!=0) printf(log(Errj-1/Errj)=%lfnn,log(Errj-1/Errj);/j+;printf(请输入n的值(输入0结束程序):); if(scanf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 内蒙古通辽市库伦旗2026届九上化学期中学业水平测试试题含解析
- 江苏省句容市二中学片区合作共同体2026届英语九上期末质量检测模拟试题含解析
- 幼儿园期末汇报通关
- 安徽省宿州十三校2026届英语九年级第一学期期末统考试题含解析
- 福建省泉州台商投资区五校联考2026届九年级化学第一学期期中质量检测试题含解析
- 2026届辽宁省台安县化学九年级第一学期期中监测试题含解析
- 2026届广东省惠阳市马安中学英语九上期末学业质量监测模拟试题含解析
- 2026届浙江省杭州市余杭区英语九上期末经典试题含解析
- 巢湖市重点中学2026届九上化学期中质量检测试题含解析
- 2025年辅警勤务岗面试题及答案
- 第8课《网络新世界》第一课时-统编版《道德与法治》四年级上册教学课件
- 2025年审计部招聘考试模拟题及答案详解
- 2025年招聘市场年中洞察报告-瀚纳仕
- Bowtie安全分析培训课件
- 退役军人优抚政策课件
- 财务遴选笔试题及答案
- (2025秋新版)人教版二年级数学上册全册教案(教学设计)
- 六年级上册音乐课教案
- 肿瘤病人疼痛评估与干预策略
- 物业管理人员考核制度及标准
- 计算机视觉技术课件
评论
0/150
提交评论