luizaspan icon

21

luizaspan | PRO | 09/23/15 09:29:37 PM UTC | 0 ⭐ | 746 👁️ | Never ⏰ | []
C |

1.61 KB

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <math.h> 
 
#define N 4
 
double print(int n, double y[n][n])
{
        int i,j,k;
 
        for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            printf("%8.3lf",y[i][j]);
 
            if (j==(n-1))
                printf("\n");
            else 
                printf(" ");
        }
    }
}
 
double printvec(int n, double x[n])
{
        int i;
 
    for (i=0;i<N;i++)
    {
        printf("%8.3lf",x[i]);
 
        if (i==(n-1))
            printf("\n");
        else 
            printf(" ");    
    }
}
 
/*4V1   -V2   -V3   -V4   =   V
3V3   -V1   -V4         =   V
3V2   -V1   -V4         =   0
4V4   -V2   -V1   -V3   =   0
 
 4  -1  -1  -1  =  V
-1   0   3  -1  =  V
-1   3   0  -1  =  0
-1  -1  -1   4  =  0*/
 
int main(void)
{
    double A[N][N]={{4,-1,-1,-1},{-1,0,3,-1},{-1,3,0,-1},{-1,-1,-1,4}}, b[N]={5,5,0,0}, x[N]={0};
    int i,j,k;
 
    printf("Antes do escalonamento: \n");
    print(N,A); // o nome da matriz é A, A[N][N] é um número
 
    for (i=0;i<N;i++)
    {
        for (j=i+1;j<N;j++)
        {
            double c=A[j][i]/A[i][i];
 
            for (k=i;k<N;k++)
            {
                A[j][k]=A[j][k] - c*A[i][k];
            }
 
            b[j]=b[j]-c*b[i];
        }
    }
 
    printf("Após o escalonamento: \n");
    print(N,A);
 
 
    for (i=N-1;i>=0;i--)
    {
        double soma = b[i];
 
        for (j=i+1;j<N;j++)
        {
            soma=soma-A[i][j]*x[j];
        }
 
        x[i]=soma/A[i][i];
    }
 
    printf("Solução: \n");
    printvec(N,x);
 
 
    return 0;
}

Comments