一维热传导方程Word格式文档下载.docx
- 文档编号:20231588
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:16
- 大小:84.21KB
一维热传导方程Word格式文档下载.docx
《一维热传导方程Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《一维热传导方程Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
及边值条件
(4)u(0,t)u(l,t)0.0tT
假定(x)在相应区域光滑,并且在x0,l满足相容条件,使上述问题有唯一充分光滑的
解。
二.区域剖分
考虑边值问题
(1),(4)的差分逼近。
去空间步长hl/N和时间步长T/M,其中N,M都是正整数。
用两族平行直线:
将矩形域G{0xl;
0tT}分割成矩形网格,网格节点为(xj,tk)。
以Gh表示网格内
是网格界点集合。
三.离散格式
第k+1层值通过第k层值明显表示出来,无需求解线性代数方程组,这样的格式称为显格式。
第k+1层值不能通过第k层值明显表示出来,而由线性代数方程组确定,这样的格式称为隐格式。
1.
向前差分格式
f(xj),
0kk
ujj(xj),u0uN0,
易知向前差分格式是显格式
2.向后差分格式
k1k1k1k
rukj11(12u)ukj1rukj11ukjfj,
其中j=1,2,⋯,N-1,k=1,2,⋯,M-1,易知向前差分格式是显格式。
3.
六点对称格式(Grank-Nicolson格式)将向前差分格式和向后差分格式作算术平均,即得到六点对称格式:
4.
1
外,还要用到u1j,这可以用前述二层差分格式计算(为保证精度,可将[0,]分成若干等份)
四.格式稳定性
通过误差估计方程
(1)可知对任意的r,Richardson格式都不稳定,所以Richardson格式绝对不稳定。
11
(2)当0r时,向前差分格式趋于稳定;
当r时,向前差分格式的误差无限增长。
22
因此向前差分格式是条件稳定。
3)向后差分格式和六点对称格式都绝对稳定,且各自的截断误差阶分别为
O(h2)和
O(2h2)。
五.数值例子
u(x,t)=exp(x+t)
例1令f(x)=0和a=1,可求得u(x,t)一个解析解为
1.用向前差分格式验证得数值结果如下:
请输入n的值(输入0结束程序):
请输入m的值(输入0结束程序):
17
xjtk真实值x[i][k]近似值u[i][k]误差err[i][k]
0.3333330.0555561.4753411.4738670.001474
0.6666670.0555562.0590042.0569470.002057
0.3333330.1111111.5596231.5570370.002586
0.6666670.1111112.1766302.1737190.002911
0.3333330.1666671.6487211.6456190.003102
0.6666670.1666672.3009762.2973850.003591
0.3333330.2222221.7429091.7393730.003536
0.6666670.2222222.4324252.4284450.003981
0.3333330.2777781.8424771.8386470.003831
0.6666670.2777782.5713842.5670480.004337
0.3333330.3333331.9477341.9436200.004114
0.6666670.3333332.7182822.7136510.004630
0.3333330.3888892.0590042.0546320.004372
0.6666670.3888892.8735712.8686440.004927
0.3333330.4444442.1766302.1719920.004638
0.6666670.4444443.0377323.0325120.005220
0.3333330.5000002.3009762.2960680.004908
0.6666670.5000003.2112713.2057440.005526
0.3333330.5555562.4324252.4272330.005193
0.6666670.5555563.3947233.3888780.005845
0.3333330.6111112.5713842.5658940.005491
0.6666670.6111113.5886563.5824750.006181
0.3333330.6666672.7182822.7124760.005805
0.6666670.6666673.7936683.7871330.006535
0.3333330.7222222.8735712.8674340.006137
0.6666670.7222224.0103924.0034830.006908
0.3333330.7777783.0377323.0312430.006488
0.6666670.7777784.2394964.2321930.007303
0.3333330.8333333.2112713.2044110.006859
0.6666670.8333334.4816894.4739690.007721
0.3333330.8888893.3947233.3874720.007251
0.6666670.8888894.7377184.7295560.0081620.3333330.9444443.5886563.5809910.0076650.6666670.9444445.0083734.9997450.008628当n等于2和m等于17时最大误差为0.008628其中r=1/2,格式是稳定的。
2.用向后差分格式验证得数值结果如下:
请输入n的值(输入0结束程序):
6
xj真实值x[i]近似值u[i]误差err[i]第1层结果时间节点Tk=0.1428570.1428571.3307121.3350020.0042890.2857141.5350631.5423580.0072950.4285711.7707951.7799490.0091540.5714292.0427272.0525240.0097970.7142862.3564182.3653460.0089270.8571432.7182822.7242560.005974第1层的最大误差是0.009797第2层结果时间节点Tk=0.2857140.1428571.5350631.5417970.0067340.2857141.7707951.7824240.0116290.4285712.0427272.0573450.0146180.5714292.3564182.3718950.0154770.7142862.7182822.7320700.0137880.8571433.1357153.1446330.008919第2层的最大误差是0.015477第3层结果时间节点Tk=0.4285710.1428571.7707951.7793240.0085290.2857142.0427272.0575180.0147910.4285712.3564182.3750100.0185920.5714292.7182822.7378840.0196020.7142863.1357153.1530410.0173260.8571433.6172513.6283370.011086第3层的最大误差是0.019602第4层结果时间节点Tk=0.5714290.1428572.0427272.0528880.0101610.2857142.3564182.3740620.0176440.4285712.7182822.7404570.0221750.5714293.1357153.1590580.0233430.7142863.6172513.6378270.0205760.8571434.1727344.1858510.013117第4层的最大误差是0.023343第5层结果时间节点Tk=0.7142860.1428572.3564182.3682760.011857
0.2857142.7182822.7388800.0205980.4285713.1357153.1616000.0258860.5714293.6172513.6444850.0272340.7142864.1727344.1967160.0239820.8571434.8135204.8287880.015268第5层的最大误差是0.027234第6层结果时间节点Tk=0.8571430.1428572.7182822.7320170.0137350.2857143.1357153.1595780.0238640.4285713.6172513.6472400.0299890.5714294.1727344.2042780.0315440.7142864.8135204.8412870.0277670.8571435.5527085.5703780.017670第6层的最大误差是0.031544当n等于6时最大误差为0.0315443.用六点对称格式验证数值结果如下:
请输入m的值(输入0结束程序):
xj真实值x[i]近似值u[i]误差err[i]第1层结果时间节点Tk=0.1428570.1428571.3307121.3309880.0002760.2857141.5350631.5355220.0004590.4285711.7707951.7713680.0005730.5714292.0427272.0433500.0006230.7142862.3564182.3570040.0005850.8571432.7182822.7186920.000410第1层的最大误差是0.000623第2层结果时间节点Tk=0.2857140.1428571.5350631.5354240.0003610.2857141.7707951.7714350.0006400.4285712.0427272.0435380.0008100.5714292.3564182.3572680.0008490.7142862.7182822.7190160.0007340.8571433.1357153.1361620.000447第2层的最大误差是0.000849第3层结果时间节点Tk=0.4285710.1428571.7707951.7712330.0004380.2857142.0427272.0434760.0007490.4285712.3564182.3573550.0009370.5714292.7182822.7192680.0009860.7142863.1357153.1365920.0008770.8571433.6172513.6178250.000574第3层的最大误差是0.000986第4层结果时间节点Tk=0.5714290.1428572.0427272.0432220.0004950.2857142.3564182.3572870.0008690.4285712.7182822.7193770.0010950.5714293.1357153.1368670.0011530.7142863.6172513.6182610.0010100.8571434.1727344.1733650.000631第4层的最大误差是0.001153第5层结果时间节点Tk=0.7142860.1428572.3564182.3569990.0005810.2857142.7182822.7192840.0010030.4285713.1357153.1369730.0012580.5714293.6172513.6185730.0013220.7142864.1727344.1739000.0011660.8571434.8135204.8142710.000751第5层的最大误差是0.001322第6层结果时间节点Tk=0.8571430.1428572.7182822.7189450.0006630.2857143.1357153.1368710.0011570.4285713.6172513.6187050.0014550.5714294.1727344.1742650.0015310.7142864.8135204.8148670.0013470.8571435.5527085.5535590.000851第6层的最大误差是0.001531当n等于6时最大误差为0.0015314.用Richardson格式验证数值结果如下:
5请输入m的值(输入0结束程序):
5xjtk真实值x[i][k]近似值u[i][k]误差err[i][k]0.1666670.1666671.3956121.3960800.0004680.3333330.1666671.6487211.6494810.0007600.5000000.1666671.9477341.9486490.0009150.6666670.1666672.3009762.3018880.0009120.8333330.1666672.7182822.7189490.0006670.1666670.3333331.6487211.6455400.0031820.3333330.3333331.9477341.9448060.0029280.5000000.3333332.3009762.2975830.0033930.6666670.3333332.7182822.7136000.0046820.8333330.3333333.2112713.2040990.0071710.1666670.5000001.9477341.9881450.0404110.3333330.5000002.3009762.2916210.009355
0.5000000.5000002.7182822.7075140.010768
0.6666670.5000003.2112713.1956850.015586
0.8333330.5000003.7936683.9077790.114111
0.1666670.6666672.3009761.2141561.086820
0.3333330.6666672.7182823.2938220.575541
0.5000000.6666673.2112713.1649070.046364
0.6666670.6666673.7936685.4006921.607024
0.8333330.6666674.4816891.5458782.935811
0.1666670.8333332.71828235.74707433.028792
0.3333330.8333333.211271-24.21136127.422631
0.5000000.8333333.79366831.08392727.290259
0.6666670.8333334.481689-69.89150974.373198
0.8333330.8333335.29449095.14889189.854401
附录1
#include<
stdio.h>
stdlib.h>
math.h>
#defineMax_N1000
doubleu[Max_N][Max_N],b[Max_N],a[Max_N],c[Max_N],f[Max_N],err[Max_N][Max_N],x[Max_N][Max_N],y[Max_N],beta[Max_N],Err[Max_intn,m;
//将空间区间【0,1】分为n等份;
时间区间【0,1】分为m等份voidcatchup()
{
inti;
beta[1]=c[1]/b[1];
for(i=2;
i<
n;
i++)
beta[i]=c[i]/(b[i]-a[i]*beta[i-1]);
y[1]=f[1]/b[1];
=n;
y[i]=(f[i]-a[i]*y[i-1])/(b[i]-a[i]*beta[i-1]);
u[n][1]=y[n];
for(i=n-1;
i>
0;
i--)
u[i][1]=y[i]-beta[i]*u[i+1][1];
}
intmain()//一维热传导方程的向前差分格式
intk,i;
doubleh,t,r;
doublepi=3.1415627;
printf("
请输入n的值(输入0结束程序):
\n"
);
属于[0,1],t属于
if(scanf("
%d"
&
n))printf("
请输入m的值(输入0结束程序):
while(scanf("
m)&
&
m&
n)//u(x,t)=exp(x+t),u(x,0)=exp(x),f(x)=0,x[0,1],a=1.
h=1.0/(n+1);
t=1.0/(m+1);
r=t/(h*h);
for(i=0;
=n+1;
i++)//初值条件
u[i][0]=exp(i*h);
for(k=0;
k<
=m+1;
k++)//边值条件
u[0][k]=exp(k*t);
u[n+1][k]=exp((n+1)*h+k*t);
xjtk真实值x[i][k]近似值u[i][k]误差err[i][k]\n"
for(k=1;
=m;
k++)
for(intj=1;
j<
j++)
u[j][k]=r*u[j+1][k-1]+(1-2*r)*u[j][k-1]+r*u[j-1][k-1];
doubleT=0;
for(i=1;
x[i][k]=exp(i*h+k*t);
err[i][k]=x[i][k]>
u[i][k]?
x[i][k]-u[i][k]:
u[i][k]-x[i][k];
printf("
%lf%lf%lf%lf%lf\n"
i*h,k*t,x[i][k],u[i][k],err[i][k]);
if(err[i][k]>
T)T=err[i][k];
当n等于%d和m等于%d时最大误差为%lf\n"
n,m,T);
请输入n的值(输入0结束程序):
"
system("
PASUE"
return0;
附录2
doubleu[Max_N],b[Max_N],a[Max_N],c[Max_N],f[Max_N],err[Max_N],x[Max_N],y[Max_N],beta[Max_N],Err[Max_N];
intn,m;
u[n]=y[n];
i--)u[i]=y[i]-beta[i]*u[i+1];
intmain()//一维热传导方程的六点对称格式
//intj=0;
n)//u(x,t)=exp(x+t),u(x,0)=exp(x),f(x)=0,x属于[0,1],t属于
[0,1],a=1.
xj真实值x[i]近似值u[i]误差err[i]\n"
doubleM=0;
//doubletemp=0;
for(k=1;
k++){
b[1]=1+2*r;
c[1]=-r;
a[n]=-r;
b[n]=1+2*r;
if(k==1)
{f[1]=exp(h)+r*exp(t);
f[n]=exp(n*h)+r*exp((n+1)*h+t);
}else
{f[1]=u[1]+r*exp(k*t);
f[n]=u[n]+r*exp((n+1)*h+k*t);
{b[i]=1+2*r;
a[i]=-r;
c[i]=-r;
if(k==1)f[i]=exp(i*h);
elsef[i]=u[i];
catchup();
第%d层结果时间节点Tk=%lf\n"
k,k*t);
doubleT=0;
//doubletem=0;
i++){
x[i]=exp
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 热传导 方程