Thomas(Tridia)

언어/Coding 2015. 12. 21. 00:58

#include <stdio.h>

#include <stdlib.h>

#define nd 20

int n;

double l[nd],d[nd],r[nd],x[nd],b[nd];

void Tridia()

{


        int i;

        double factor;

        for(i=2;i<=n; ++i)

        {

                factor=l[i]/d[i-1];

                d[i]=d[i]-factor*r[i-1];

                b[i]=b[i]-factor*b[i-1];

        }

        x[n]=b[n]/d[n];

        for(i=n-1;i>=1;i=i-1)

        {

                x[i]=(b[i]-r[i]*x[i+1])/d[i];

        }

}

int main() {

        int i;

        printf("방정식 수n:");

        scanf("%d",&n);

        printf("계수행렬l(i) d(i) r(i)를 입력하시오\n");

        printf("l(i) i=1,...,n:");

        for(i=1;i<=n;i++) scanf("%lf",&l[i]);

        printf("d(i) i=1,...,n:");

        for(i=1;i<=n;i++) scanf("%lf",&d[i]);

        printf("r(i) i=1,...,n:");

        for(i=1;i<=n;i++) scanf("%lf",&r[i]);

        printf("상수행렬 b(i)를 입력하시오\n");

        printf("b(i) i=1,...,n:");

for(i=1;i<=n;i++) scanf("%lf",&b[i]);

        Tridia();

                printf("해는 다음과 같다. \n");

        for(i=1;i<=n;i++)

        {

                printf("x(%d)=%f",i,x[i]);

                printf("\n");

        }

}




'언어 > Coding' 카테고리의 다른 글

Jacobi  (0) 2015.12.21
GaussN  (0) 2015.12.21
Least(최소 제곱법)  (0) 2015.12.21
LUCrout (LU분해,해 구하기, 역행렬 구하기)  (0) 2015.12.21
Newton Raphson Method  (0) 2015.12.21
Posted by 知彼知己百戰不殆
,