Ir ao conteúdo
  • Cadastre-se

C Problema com resolução de sistema linear


Posts recomendados

Pessoal, estou escrevendo um código que usa solução de sistema linear. A matriz A é uma triangular superior, o vetor Y são as incógnitas e quero resolver o sistema de baixo para cima para achar o x. Só que eu não estou conseguindo chegar à solução. O vetor solução vai ser armazenado no próprio vetor Y mesmo. n é a ordem da matriz, que nesse caso é 2. i são as linhas. j as colunas.

 

A[0][0]x1 + A[0][1]x2   = Y[0]

0                + A[1][1]x2     Y[1]

 

 

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

    soma=Y;

        for(j=i+1;j<=n;j++){
            soma-=A[j]*Y[j];
            Y=soma/A;

        }
     
    }

 

 

Obrigada pela ajuda; 

 

Capturar.PNG

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Para postar códigos no fórum use o botão <> (Code) no topo do campo de resposta, assim mantém a formação do seu código e evita que o fórum faça alterações nele ( [ i ] sem espaços é a tag para deixar o texto em itálico no fórum, logo todos eles sumiram do seu código e o texto ficou em itálico a partir do lugar onde estava o primeiro [ i ]).

 

No C índices de matrizes e vetores começam em 0 e vão até n-1, onde n é o tamanho/comprimento da dimensão da matriz ou vetor. Logo, seus ciclos for estão errados pois vão de 1 até n, e pode tentar acessar posições que não existem na matriz.

 

Na lógica o que está errado é que j deve começar em i+1 não em i, pois o elemento A[ i ][ i ] está multiplicando a variável que iremos calcular, e o Y[ i ]=soma/A[ i ][ i ]; deveria estar depois do segundo for, não dentro dele, pois deseja-se fazer a divisão apenas depois que terminar de fazer a soma.

 

Então ficaria assim:

 

for(i = n-1; i >= 0; i--){
    soma = Y[i];
    for(j = i+1; j < n; j++){
        soma -= A[i][j] * Y[j];
    }
    Y[i] = soma / A[i][i];
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...