Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
clear clc function [x] = Gauss_Jacobi(a,b,x0,tol,N) n = size(a,1) for iteracao = 1:N for k = 1:n-1 for i = k+1:n m = a(i,k)/a(k,k) for j = k:n a(i,j) = a(i,j) - m*a(k,j) end b(i) = b(i) - m*b(k) end end x(n) = b(n)/a(n,n) for i = (n-1):-1:1 //Substituicao retroativa soma = 0 for j = (i+1):n if i ~= j soma = soma + a(i,j)*x0(j) end end x(i) = (1/a(i,i))*(b(i) - soma) end y = a*x if abs(y-b) < tol then disp('Num de iteracoes: ') disp(iteracao) break end x0 = x end endfunction function x = Convergencia(a) n = size(a,1) cont=0 for i = 1:n soma = 0 for j = 1:n soma = soma + abs(a(i,j)) end m = soma-abs(a(i,i)) disp(m) if m <= abs(a(i,i)) then cont = cont+1 end end if cont == n then x = 1 else x = 0 end endfunction a = [5 -2 3;-3 9 1;2 -1 -7] b = [-1;2;3] x0 = [0;0;0] c = Convergencia(a) if c == 1 then x = Gauss_Jacobi(a,b,x0,0.001,5) disp('Solucao: ') disp(x) else disp('A matriz precisa ser diagonal dominante!!!') end
Compartilhar