C追赶法解三对角方程组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#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;
}