Pular para o conteúdo

Octave - Sistemas lineares por Gauss-Seidel

Resolver o sistema Ax=b pelo método iterativo de Gauss-Seidel.

O método de Gauss-Seidel é um método iterativo para resolução de sistemas de equações lineares. O seu nome é uma homenagem aos matemáticos alemães Carl Friedrich Gauss e Philipp Ludwig von Seidel. É semelhante ao método de Jacobi (e como tal, obedece ao mesmo critério de convergência). É condição suficiente de convergência que a matriz seja estritamente diagonal dominante, i. e., fica garantida a convergência da sucessão de valores gerados para a solução exata do sistema linear.
Daniel Moreira dos Santos danielms
Hits: 24.089 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

Resolver o sistema Ax=b pelo método iterativo de Gauss-Seidel.

O método de Gauss-Seidel é um método iterativo para resolução de sistemas de equações lineares. O seu nome é uma homenagem aos matemáticos alemães Carl Friedrich Gauss e Philipp Ludwig von Seidel. É semelhante ao método de Jacobi (e como tal, obedece ao mesmo critério de convergência). É condição suficiente de convergência que a matriz seja estritamente diagonal dominante, i. e., fica garantida a convergência da sucessão de valores gerados para a solução exata do sistema linear.
Download Gauss_Seidel.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] = Gauss_Seidel(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)=x(i);

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

    end

    NormaNum=0;

    NormaDen=0;

    for i=1:n

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

        if t>NormaNum

            NormaNum =t;

        end

        if abs(x(i))>NormaDen

            NormaDen = abs(x(i));

        end

    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.

Octave - Decomposição LU

Octave - Calcular raiz pelo método da Secante

CobWeb Plot em Octave

Algorítimo de maior e menor

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

#1 Comentário enviado por Targueriano em 11/06/2014 - 21:07h
Perfeito! Viva o site

Contribuir com comentário

Entre na sua conta para comentar.