追赶法

来源:互联网 发布:天书世界圣物进阶数据 编辑:程序博客网 时间:2024/06/11 17:05
文件名:zgf.txt
104 -1 7   -1 4 -1 5  -1 4 -1 -13-1 4 -1 2 -1 4 -1 6-1 4 -1 -12  -1 4 -1 14    -1 4 -1 -4    -1 4 -1 5 -1 4 -5
#include <stdio.h>main(){    FILE *f;    double a[15],b[15],c[15],d[15],x[15],r[15],y[15];    double t;    int i,n;    f=fopen("zgf.txt","r");    fscanf(f,"%d",&n);    fscanf(f,"%lf%lf%lf",&b[1],&c[1],&d[1]);    for(i=2;i<=n-1;i++)    {        fscanf(f,"%lf%lf%lf%lf",&a[i],&b[i],&c[i],&d[i]);    }    fscanf(f,"%lf%lf%lf",&a[n],&b[n],&d[n]);    fclose(f);    r[1]=c[1]/b[1];//用克洛特分解法分解成两个三角阵第二个公式    y[1]=d[1]/b[1];//追的过程(消元过程)第一步    for(i=2;i<=n-1;i++)    {        t=b[i]-c[i-1]*a[i];//用克洛特分解法分解成两个三角阵第三个公式        r[i]=c[i]/t;        y[i]=(d[i]-y[i-1]*a[i])/t;//追的过程(消元过程)第二步    }    y[n]=(d[n]-y[n-1]*a[n])/(b[n]-r[n-1]*a[n]);//赶的过程(回代过程)第一步    x[n]=y[n];    for(i=n-1;i>=1;i--)        x[i]=y[i]-r[i]*x[i+1];//赶的过程(回代过程)第二步    for(i=1;i<=n;i++)        printf("x[%2d]=%lf\n",i,x[i]);}

原创粉丝点击