Ir para conteúdo
Fórum Script Brasil
  • 0

sistema de equações lineares de três equações


Thundera69

Pergunta

Galera eu não manjo nada de programação e to precisando de uma ajuda

preciso fazer um programa em linguagem C que resolva um sistema de equações lineares de três equações.

Pode ser um exemplo qualquer encontrado nas referências. O programa pode ter o exemplo colocado em variáveis definidas previamente no código, e não precisa entrada de dados via interface com o usuário.

Resolução de Sistemas de Equações Lineares pelo Método de Eliminação

de Gauss, referências:

http://rpanta.com/downloads/material/Gauss_01.PDF

http://www.algosobre.com.br/matematica/sis...o-de-gauss.html

http://en.wikipedia.org/wiki/Gaussian_elimination (tem exemplo de código)

http://www.dcc.ufrj.br/~rincon/Disciplinas...ar/Aula_013.pdf

Eu preciso desse trabalho,considerem como um passatempo pra voces e uma grande ajuda para mim.Preciso muito dessa ajuda.

não sei nem por onde começar! se alguém puder me ajudar eu agradeço!

Editado por quintelab
Título alterado para algo condizente com o problema. Seja mais criativo!
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Thundera69,

Encontrei o seguinte código, acho que resolve seu problema. Este emxemplo lê os dados de um arquivo:

#include <stdio.h>

int n;
float a[10][11];

void forwardSubstitution() {
    int i, j, k, max;
    float t;
    for (i = 0; i < n; ++i) {
        max = i;
        for (j = i + 1; j < n; ++j)
            if (a[j][i] > a[max][i])
                max = j;
        
        for (j = 0; j < n + 1; ++j) {
            t = a[max][j];
            a[max][j] = a[i][j];
            a[i][j] = t;
        }
        
        for (j = n; j >= i; --j)
            for (k = i + 1; k < n; ++k)
                a[k][j] -= a[k][i]/a[i][i] * a[i][j];

/*        for (k = 0; k < n; ++k) {
            for (j = 0; j < n + 1; ++j)
                printf("%.2f\t", a[k][j]);
            printf("\n");
        }*/
    }
}

void reverseElimination() {
    int i, j;
    for (i = n - 1; i >= 0; --i) {
        a[i][n] = a[i][n] / a[i][i];
        a[i][i] = 1;
        for (j = i - 1; j >= 0; --j) {
            a[j][n] -= a[j][i] * a[i][n];
            a[j][i] = 0;
        }
    }
}

void gauss() {
    int i, j;

    forwardSubstitution();
    reverseElimination();
    
    for (i = 0; i < n; ++i) {
        for (j = 0; j < n + 1; ++j)
            printf("%.2f\t", a[i][j]);
        printf("\n");
    }
}

int main(int argc, char *argv[]) {
    int i, j;

    FILE *fin = fopen("gauss.in", "r");
    fscanf(fin, "%d", &n);
    for (i = 0; i < n; ++i)
        for (j = 0; j < n + 1; ++j)
            fscanf(fin, "%f", &a[i][j]);
    fclose(fin);
    
    gauss();
    
    return 0;
}
Fonte: http://snippets.dzone.com/posts/show/4874 Outro código:
/* Eliminación por Gauss*/

#include <stdio.h>
#include <stdlib.h>

void gaussSimple(double *a[], double b[], double x[], int n)
{
    int aux=n, *tam=&aux;
    *tam=*tam-1;
    
    double factor, suma;
    for(int k=0; k<n-1; k++)
    {
        for(int i=k+1;i<n;i++)
        {
            factor=a[i][k]/a[k][k];
            for(int j=k+1; j<n; j++)
            {
                a[i][j]=a[i][j]-factor*a[k][j];
            }
            b[i]=b[i]-factor*b[k];
        }
    }
    x[*tam]=b[*tam]/a[*tam][*tam];
    for(int i=n-2;i=0;i--)
    {
        suma=b[i];
        for(int j=i+1;i<n;i++)
        {
            suma=suma-a[i][j]*x[j];
        }
        x[i]=suma/a[i][i];
    }
    return;
}




int main()
{
    int n;
    printf("Enter number of unknowns to find: ");
    scanf("%i", &n);
    printf("\n");
    double *sel[n], sol[n], x[n];
    for(int i=0;i<n;i++)
    {
        sel[i]=(double*)malloc(n*sizeof(double));
    }        
    for(int i=0;i<n;i++)
    {
        
        for(int j=0;j<n;j++)
        {
            printf("Enter the coefficient of %i x%i: ", i+1, j);
            scanf("%lf", &sel[i][j]);
        }
        printf("Enter the solution equation for the %i: ", i+1);
        scanf("%lf", &sol[i]);
        printf("\n");
        
    }
    gaussSimple(sel,sol,x,n);
    printf("\n\nThe solutions are:\n\n");
    for(int i=0;i<n;i++)
    {
        printf("x%i: %f\n", i, x[i]);
    }
    
    
}

Fonte: http://www.dreamincode.net/forums/topic/13...nation-program/

Att

Editado por M@RcOs pS09
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...