Octave - Sistemas lineares por Gauss-Seidel

Publicado por Daniel Moreira dos Santos (última atualização em 14/07/2010)

[ Hits: 14.606 ]

Homepage: http://www.danielmoreira.wordpress.com

Download Gauss_Seidel.m




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.

  



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


Scripts recomendados

Crivo de Eratóstenes Simples em Fortran 95

Algoritmo para calcular a tabuada

Octave - Método de Runge-Kutta

Octave - Decomposição LU

Matriz de Hilbert e resolução de sistemas lineares


  

Comentários
[1] Comentário enviado por Targueriano em 11/06/2014 - 21:07h

Perfeito! Viva o site


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts