热传导方程的初边值问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第二章习题1实验报告
一、实验目的
通过用最简显格式求解热传导方程的初边值问题,(1)会用显格式计算问题的解;(2)观察空间步长、时间步长不同的选择对结果的影响;(3)通过选择不同的网格比,观察最简显格式的稳定性。
二、实验内容
用古典(最简)显格式计算下列问题
22001,01,0sin ,01
0,0t x x u u
x t T t x u x x u u t T π===⎧∂∂=<<<≤⎪∂∂⎪⎪
=≤≤⎨⎪
==<≤⎪⎪⎩
并与解析解2
-sin()u e
x ππ=比较。
三、算法
节点: 1
,0,1,,,;,0,1,2,j k x jh j N h t k k N
τ===== 最简显格式为
1110
0(12)()1,2,,1sin(),0,1,,0,0,1,2,k k k k j j j j j j k k
N u r u r u u j N u x j N u u k π+++=-++⎧⎪
=-⎪⎪==⎨⎪==⎪⎪=⎩
五 程序
#include
#include
const double pi=3.1415926;
double Ut(double x);//初始时刻值 double fun(double x,double time); void main() {
int i,k;
double U[M][N]; double h=0.1,r=0.1,t;
t=r*h*h;
for(k=0;k { U[k][0]=0; U[k][N-1]=0; } for(i=0;i U[0][i]=Ut(h*i); for(k=1;k for(i=1;i { U[k][i]=r*U[k-1][i-1]+(1-2*r)*U[k-1][i]+r*U[k-1][i+1]; } printf("古典显格式计算结果(t=0.005,h=0.1):\n"); for(i=0;i { printf("x[%d]=%.5f\n",i,U[5][i]);} printf("精确计算结果(t=0.005,h=0.1):\n"); for(i=0;i {printf("x[%d]=%.5f\n",i,fun(i*h,0.005));} } double Ut(double x)//初始时刻值 { if(((int)x)>=1)//为了减小误差当x等于整数时,令x=0;此时sin(x*pi)值不变x=0; return (sin(pi*x)); } double fun(double x,double time) { double s1,s2; if(((int)x)>=1) x=0; s1=-pow(pi,2)*time; s2=exp(s1)*sin(pi*x); return s2; }