资源描述
计算传热学课程大作业报告
储运与建筑工程学院能源与动力工程系
计算传热学课程大作业报告
作业题目:代数方程组的求解
学生姓名:田
学 号:
专业班级:能动1
专业写全称,仿宋GB-2312,三号字体。
专业写全称,仿宋GB-2312,三号字体。
2017年9月23日
目 录
一、计算题目 3
二、离散方程 3
三、程序设计 4
3.1 高斯赛德尔迭代法 4
3.2 TDMA法 5
四、程序及计算结果验证 6
五、网格独立性考核 7
3.1 高斯赛德尔迭代法 7
3.2 TDMA法.......................................................................................................................8
六、结果分析与结论 8
3.1 高斯赛德尔迭代法 9
3.2 TDMA法.....................................................................................................................10
一、计算题目
分别用高斯赛德尔迭代和TDMA方法求解方程
(1)
在=-5,-1,0,1,5情况下的解,并表示在图中。
其中,=0,=0;=1,=1.
二、离散方程
采用控制容积法:
即 (2)
(3)
假设均分网格,则有
上式则变为:
(4)
即 (5)
(6)
三、 程序设计
3.1 高斯赛德尔迭代法
由已知公式 可设计高斯赛德尔迭代C语言程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double e=0,x;
int i,j,b,k,d;
double a[100];
scanf("%lf%d",&x,&d);
for(j=0;j<1/x;j++)
{
a[j]=0;
}
b=1/x;
a[b]=1;
while(1){
for(i=0;i<1/x-1;i++)
{
a[i+1]=((2-x*d)*a[i+2]+(2+x*d)*a[i])/4;
printf("i = %d\n",i);
if(i==1/x-3)
e=a[i+2];
}
if(fabs((a[i]-e))/a[i]<0.00001) break;
}
for(k=0;k<=1/x;k++)
{
printf("%lf ",a[k]);
}
system("pause");
return 0;
}
其中,输入项x和d分别代表步长和系数的值,即和的值,输出a[k]即为的值。
3.2 TDMA法
由已知公式
(7)
目标方程
(8)
联立(7)、(8)方程可得:
(9)
则有 ,
利用端点条件
=0,=0;=1,=1
可得:
,
到此,可设计C语言计算程序如下:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
double e = 0, x;
int i, j, b, k, d;
double a[100], m[100];
scanf("%lf%d", &x, &d);
b = 1 / x;
a[0] = 0; a[b] = 1;
m[1] = (2 - x*d) / 4;
for (i = 1; i<1 / x; i++)
{
m[i + 1] = (2 - x* d) / (4 - m[i] * (2 + x* d));
}
for (j = 1 / x - 1; j > 0; j--)
{
a[j] = m[j]*a[j + 1];
}
for (k = 0; k <= 1 / x; k++)
{
printf("%lf ", a[k]);
}
system("pause");
return 0;
}
其中,输入项x和d分别代表步长和系数的值,即和的值,m[i]为的值,输出a[k]即为的值。
四、 程序及计算结果验证
以步长为0.1,系数为1为例,如果两种方法的程序皆能运行且两种方法的结果接近,则可证明程序及计算结果可靠。
用高斯赛德尔迭代法设计的C语言程序在Visual Studio 2017中的计算结果如图1所示,用TDMA法设计的C语言程序在Visual Studio 2017中的计算结果如图2所示。
从两个图易看出,结果相似且符合逻辑,可证明程序及计算结果可靠。
图1 高斯赛德尔迭代法输出结果 图2 TDMA法输出结果
五、 网格独立性考核
5.1高斯赛德尔迭代法:
以系数等于1的情况为例进行网格独立性考核,分别以=0.05,0.02,0.1进行计算,将输出结果进行比较:
(1) 当=0.05时,输入0.05,1,输出如图3所示:
图三 当=0.05时,输出结果
(2) 当=0.02时,输入0.02,1,输出如图4所示:
图4 当=0.02时,输出结果
(3) 当=0.1时,输入0.1,1,输出如图5所示:
图5 当=0.1时,输出结果
由图中可看出,在x=0.1时,三种步长的结果分别是0.061,0.060,0,061相差不大。
5.2 TDMA法
同理,以系数等于1的情况为例进行网格独立性考核,分别以=0.05,0.02,0.1进行计算,将输出结果进行比较:
(1) 当=0.05时,输入0.05,1,输出如图6所示:
图6 当=0.05时,输出结果
(2) 当=0.02时,输入0.02,1,输出如图7所示:
图7 当=0.02时,输出结果
(3) 当=0.1时,输入0.1,1,输出如图8所示:
图8 当=0.1时,输出结果
由图中可看出,在x=0.1时,三种步长的结果分别是0.0612,0.0612,0,0612相差不大。
六、 结果分析与结论
6.1高斯赛德尔迭代法
输出结果如图9所示:
图9 高斯赛德尔迭代法输出结果
6.2 TMDA法
输出结果如图10所示:
图10 TDMA法输出结果
由以上两图可以看出,在系数=0时,TDMA法更加精确,两图在数值上相差很小,且正负系数图形关于y=x对称。
11
展开阅读全文