Ir ao conteúdo
  • Cadastre-se
Clarissa Manfrinato

C Problema com resolução de sistema linear

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Clarissa Manfrinato     mas  o que mesmo você quer que o código faça ,  pois ali no seu código a matriz A não tem nenhum valor ,  e o x  a ser  encontrado se refere a que ? 

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×