Octave - Sistemas lineares por Gauss-Seidel
Publicado por Daniel Moreira dos Santos (última atualização em 14/07/2010)
[ Hits: 23.621 ]
Homepage: http://www.danielmoreira.wordpress.com
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.
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
Matriz de Hilbert e resolução de sistemas lineares
Script em Bath "DOS" para Upload e Download de arquivos usando o SSH
Octave - Método de Euler para solução de EDO
Função Fatorial Recursiva em Fortran 95
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Debian 13 Trixie para Iniciantes
Convertendo pacotes DEB que usam ZSTD (Padrão Novo) para XZ (Padrão Antigo)
Rust é o "C da nossa geração"? (2)
O que você está ouvindo agora? [2] (212)