当前位置:文档之家› C追赶法解三对角方程组

C追赶法解三对角方程组

#include
int main(void)
{
double c[100];
double b[100];
double a[100];
double l[100];
double u[100];
double f[100];
double x[100];
double y[100];
int n;
char ch;

printf("-------本程序为追赶法解三对角方程组计算程序-------\n");

do
{
printf("请输入您要计算的三对角方程组是几阶方阵(默认最大100阶方阵):\n");
scanf("%d",&n);
printf("请依次输入主对角线元素,中间以空格或回车隔开:\n");
for(int i=0; i{
scanf("%lf",&b[i]);
}
printf("请依次输入上次对角线元素,中间以空格或回车隔开:\n");
for(i=0; i{
scanf("%lf",&c[i]);
}
printf("请依次输入下次对角线元素,中间以空格或回车隔开:\n");
for(i=0; i{
scanf("%lf",&a[i]);
}
printf("请依次输入方程组右边矩阵元素,中间以空格或回车隔开:\n");
for(i=0; i{
scanf("%lf",&f[i]);
}


for(i=0; i{
if(i==0)
{
l[i] = b[i];
}
else
{
u[i-1] = c[i-1]/(float)l[i-1];
l[i] = b[i] - a[i-1]*u[i-1];
}
}
for(int j=0; j{
if(j==0)
{
y[j] = f[j]/(float)l[j];

}
else
{
y[j] = (f[j]-a[j-1]*y[j-1])/(float)l[j];
}

}
for(int m=n-1; m>=0; m--)
{
if(m==n-1)
{
x[m] = y[m];
}
else
{
x[m] = y[m]-u[m]*x[m+1];
}
}
for(j=0; j{
printf("x%d的值为",j+1);
printf("%lf\n",x[j]);
}
printf("是否继续下一个三对角方程组的计算? 输入‘Y’继续\n");
}
while((ch=getchar())=='Y'||(ch=getchar())=='y');

return 0;
}

相关主题
文本预览
相关文档 最新文档