热传导方程的初边值问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 #define M 11 #define N 11

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;

}

相关文档
最新文档