求助!关于用C语言编程解决三对角方程的问题!大家进来帮忙看下吧!
需要用C语言编程,求解一维非稳态问题。实际上就是循环求解一个三对角方程。但不知道怎么回事,程序运行之后貌似没有求解方程组,结果总是初值。
望各位看看,是程序哪里出了问题。下面是程序。谢谢啦!
#include "stdio.h"
#include "math.h"
#define N 100
void main()
{
double w[N+1],p[N+1],e[N+1],q[N+1],r[N+1],x[N+1],y[N+1];
double t;
int i,j,k,m,n;
for(n=1;n<=N-1;n++)
{
x[n]=50;
q[n]=179043*x[n];
}
for(i=1;i<=1000;i++)
{
x[0]=100,x[100]=0,p[0]=1,p[100]=1,e[0]=0,w[100]=0,q[0]=100,q[100]=0;
for(j=1;j<=N-1;j++)
{
w[j]=-81100;
p[j]=341243;
e[j]=-81100;
}
r[0]=e[0]/p[0];
y[0]=q[0]/p[0];
for(k=1;k<=N-1;k++)
{
t=p[k]-w[k]*r[k-1];
r[k]=e[k]/t;
y[k]=(q[k]-y[k-1]*w[k])/t;
}
x[N-1]=y[N-1];
for(k=N-1;k<=1;k--)
{
x[k]=y[k]-r[k]*x[k+1];
q[k]=179043*x[k];
}
for(m=0;m<=N;m++)
{
printf("距离上表面%7.4f米,在%7.4f秒时的温度为%7.2f\n",m*0.001,i*0.02,x[m]);
}
}
}