c语言求解一维热传导方的显式差分方程??
在距离为L(本题中取的是0.2米)的两个半无限长壁面之间有传热的流体。假设整个流场初始时刻具有温度T=T1(常数,本题中取10摄氏度),并处于平衡状态(即:初始时刻壁面和流体的温度都为10摄氏度)。两个壁面的初始温度Tw1=Tw2=T1(本题中即为10摄氏度)。现假设在t=0时刻,右边的壁面温度突然增加到Tw2=T2并保持在T2(本题中取T2为20摄氏度),而左边的壁面温度保持在Tw1=T1(即10摄氏度)。由于右壁面温度的突然增加,流体的温度将发生非定常变化,其瞬时温度分布由以下方程给出:(由于帖子无法发数学公式,所以略;其差分方程也略。求解中用的是差分方程,在程序中用绿色字体给出),求时间t1、t2和时间趋于无穷时壁面间流体温度的分布?
在c程序中用的是差分方程(略:复杂的数学公式无法上传,但在程序中有表示,绿色字体部分)
正确的结果是:
随着时间的推移,壁面间网格节点处温度值的连线会由曲线逐渐趋于一条直线(该直线就是从左壁面的10度直线连接到右壁面的10度)
#include<stdio.h>
#include<math.h>
void main()
{
float dx,dt,t,L=0.2,a[100000],b[100000],alpha=1.42857*10e-3;
/*dx表示delta(x),dt表示delta(t),alpha为热扩散率。由于数组大小随输入值而变化,所以取得比较大*/
int i,n1,n2,n=0,total=0;
printf("input data dx:\n"); /*输入壁面间网格节点的间距dx*/
scanf("%f",&dx);
printf("input data dt:\n"); /*输入时间推进的步长dt*/
scanf("%f",&dt);
printf("input data t:\n"); /*输入计算的总时间,代表题目中的t1、t2等*/
scanf("%f",&t);
n1=(int)(L/dx);
n2=(int)(t/dt);
printf("n1=%d n2=%d\n",n1,n2);
for(i=0;i<=n1;i++)
{
if(i<n1)a[i]=10;
else a[i]=20;
}
while(n<n2) /*一直迭代到满足的次数为止*/
for(i=0;i<=n1;i++)
{
if(i==0){b[i]=10;a[i]=b[i];} /*表示左壁面的温度始终保持在10摄氏度*/
else
if(i==n1){b[i]=20;a[i]=b[i];} /*表示右壁面的温度始终保持在20摄氏度*/
else
{
b[i]=a[i]+alpha*dt*(a[i+1]-2*a[i]+a[i-1])/(dx*dx); /*差分方程的表达式*/
a[i]=b[i];
}
n++;
}
for(i=0;i<=n1;i++)
{
printf("%8.4f",b[i]);
total++;
if(total%10==0)printf("\n");
}
}
以下是是错误的运行结果?:(n1=20表示把两壁面间的距离等分为20份,则总共有21个计算节点;n2=9999,表示要while循环要计算9999次)
input data dx:
0.01
input data dt:
0.001
input data t:
10
n1=20 n2=9999
10.00000000 -1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000
-1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000
-1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000
-1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000 -1.#IND0000
20.00000000Press any key to continue
相关推荐
二维热传导方程求解
求解二维热传导方程,文档中有过程和matlab程序。 本文利用有限差分法来求二维热传导方程的数值解,通过Matlab编程求解并作图,进而与解析 解做出的图进行比较,画出误差图。
从牛顿冷却定律到热传导方程:一维热传导的物理与数学解析
本文深入解析了从牛顿冷却定律到热传导方程的物理与数学过程,详细介绍了温度梯度、热流以及一维热传导方程的推导与应用。通过实际案例和数学推导,帮助读者理解热传导在工程和物理中的重要性,特别是在电子散热和建筑保温等领域的应用。
MATLAB源码--古典显式格式求解抛物型偏微分方程等
MATLAB源码--古典显式格式求解抛物型偏微分方程等
一维热传导方程数值解法及matlab实现
含matlab程序,个人感觉很有帮助,在研究传热学的可以下来看看 含matlab程序,个人感觉很有帮助,在研究传热学的可以下来看看
偏微分方程数值解法的MATLAB源码--古典显式格式求解抛物型偏微分方程等
1、古典显式格式求解抛物型偏微分方程(一维热传导方程) 2、古典隐式格式求解抛物型偏微分方程(一维热传导方程) 3、Crank-Nicolson隐式格式求解抛物型偏微分方程 4、正方形区域Laplace方程Diriclet问题的求解 如: function [U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C) %古典显式格式求解抛物型偏微分方程 %[U x t]=PDEParabolicClassicalExplicit(uX,uT,phi,psi1,psi2,M,N,C) % %方程:u_t=C*u_xx 0 <= x <= uX,0 <= t <= uT %初值条件:u(x,0)=phi(x) %边值条件:u(0,t)=psi1(t), u(uX,t)=psi2(t)



