Pular para o conteúdo

Octave - Sistemas lineares por Jacobi

O método de Jacobi trata-se dum algoritmo para determinar a solução de um sistema de equações lineares com os maiores valores absolutos em cada linha e coluna dominados pelo elemento da sua diagonal. Trata-se duma versão simplificada do algoritmo de valores próprios de Jacobi.
Daniel Moreira dos Santos danielms
Hits: 14.597 Categoria: Outros Subcategoria: Portugol
  • Download
  • Nova versão
  • Indicar
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Descrição

O método de Jacobi trata-se dum algoritmo para determinar a solução de um sistema de equações lineares com os maiores valores absolutos em cada linha e coluna dominados pelo elemento da sua diagonal. Trata-se duma versão simplificada do algoritmo de valores próprios de Jacobi.
Download Jacobi.m Enviar nova versão
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Esconder código-fonte

function [x,Iter,CondErro] = Jacobi(n,A,b,Toler,IterMax)


%n,A,b,Toler,IterMax = ordem,matriz,vetor independente,tolerancia,numero

%maximo de iteracoes

%x,Iter,CondErro = vetor solucao,numero de iteracoes e condicao de erro



for i=1:n

    r=1/A(i,i);

    for j=1:n

        if i~=j

            A(i,j)=A(i,j)*r;

        end

    end

    b(i)=b(i)*r;

    x(i)=b(i);

end

Iter =0;

 fprintf('\nIter = %d  ' ,Iter);

    x

    

while 1

    Iter = Iter+1;

    for i=1:n

        Soma=0;

        for j=1:n

            if i~=j

                Soma=Soma+A(i,j)*x(j);

            end

        end

        v(i)=b(i)-Soma;

    end

    NormaNum =0;

    NormaDen=0;

    for i=1:n

        t=abs(v(i)-x(i));

        if t>NormaNum

            NormaNum =t;

        end

        if abs(v(i))>NormaDen

            NormaDen = abs(v(i));

        end

        x(i)=v(i);

    end

    NormaRel = NormaNum/NormaDen;

    fprintf('\nIter = %d  ' ,Iter);

    x

    fprintf('NormaRel = %f \n',NormaRel);

    if NormaRel<=Toler | Iter>=IterMax

        break;

    end

end

if NormaRel<=Toler

    CondErro =0;

else

    CondErro =1;

end

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

Numero Primo

Script em Bath "DOS" para Upload e Download de arquivos usando o SSH

Octave - Sistemas lineares por Gauss-Seidel

Octave - Calcular raiz pelo método de Newton

Octave - Método de Gauss-Legendre

Nenhum comentário foi encontrado.

Contribuir com comentário

Entre na sua conta para comentar.