Buscar

Projeto 01 Método de Jacobi

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
1 
 
 
 
 
 
 
 
Projeto 01 – Método de Jacobi 
Análise Numérica 
 
 
 
 
 
 
 
 
Alunos: Arthur 
Douglas 
 Nekson 
 
 
Professor: Harlei Miguel de Arruda Leite – DECSI-ICEA/JM 
João Monlevade, Minas Gerais 
2016 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
2 
 
Sumário 
 
1. Código Implementado .................................................................................................. 3 
Código principal ........................................................................................................... 3 
Função para Verificar Convergência ............................................................................ 5 
Função para Achar o Erro a Cada Iteração ................................................................... 6 
2. Caso de Teste 01 ........................................................................................................... 7 
3. Caso de Teste 02 ......................................................................................................... 10 
4. Caso de Teste 03 ......................................................................................................... 12 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
3 
 
1. Código Implementado 
Código principal 
disp('Projeto 01 - Método de Jacobi'); 
 
% M = (n x n) B = [m x 1] 
% M = [aij, a12, a13] B = [1] 
% [a21, a22, a23] [2] 
% [a31, a32, a33] [3] 
 
n = input('Digite tamanho "n" da matriz n x n: '); 
if (n>0) 
 matriz = zeros(n); %Aloca espaço e coloca 0's 
 b = zeros(1,n); 
 % matriz 
 % b 
 
 fprintf('\n***************Preenchendo a matriz***************\n') 
 for i=1:n 
 for j=1:n 
 fprintf('\nDigite o elemento da posição %d x %d: ', i,j); 
 matriz(i,j)= input(''); 
 end; 
 end; 
 disp(matriz); 
 
 %Chama a função criada. Se op for igual a 1, converge. Vetor 
 guarda dos elementos onde i=j 
 [vetor,op] = Verifica_Convergencia(matriz,n); 
 %disp(op); 
 
 if (op==1) %Se convergir, continua a execução. 
 disp('O processo irá convergir!'); 
 
 %Preenche o vetor b (solução do sistema) 
 for i=1:n 
 fprintf('\nDigite o resultado da %dª linha: ', i); 
 b(i) = input(''); 
 end; 
 
 solucao1 = zeros(1,n); %Vetor solução da iteração 
 solucao2 = zeros(1,n); %Vetor solução auxiliar 
 
 kmax = input('Digite o número máximo de iterações: '); 
 %Numero máximo de interações informado pelo usuário 
 erromax = input('Digite o erro pretendido: '); 
 %Erro informado pelo usuário 
 k=0; 
 
 
 
 
 %Iteração k = 0. solução = bi/aii 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
4 
 
 for i=1:n 
 solucao1(i) = b(i)/vetor(i); 
 end; 
 fprintf('k = %d', k); 
 disp(solucao1); 
 
 k = k+1; 
 erro = 0; 
 soma = 0; 
 while (k<=kmax)||(erro<=erromax) %Enquanto o numero de 
 iterações não exceder o definido ou o erro ser maior que o 
 máximo definido 
 
 for i=1:n 
 for j=1:n 
 if(i~=j) 
 soma = soma + (-(matriz(i,j)*solucao1(j))); 
 end; 
 end; 
 %Terminando a linha, podemos somar com o B(i) e 
 multiplicar 
 %pelo 1/aii 
 soma = (1/vetor(i))*(soma + b(i)); %Soma contém agora 
o X solução 
 solucao2(i) = soma; %solucao2(i) recebe o valor do x 
 soma = 0; %Zera o valor para a próxima linha 
 end; 
 
 fprintf('k = %d', k); 
 k = k+1; 
 disp(solucao2); 
 erro = Valor_Norma(solucao1,solucao2,n); %Chama a função 
 para achar o erro a cada iteração. (Começando em k=1); 
 fprintf('Erro e = %d\n\n', erro); 
 solucao1 = solucao2; %Atualiza o valor da solução 
 anterior; 
 end; 
 
 
 else 
 disp('O processo não converge!'); 
 end; 
 
else disp('Valores inválidos!'); 
end; 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
5 
 
Função para Verificar Convergência 
 
function [vetor,op] = Verifica_Convergencia(matriz,n) 
 
 %Verifica o critério de convergência 
 %Se for convergente, retorna 1 
 
 op = 1; 
 
 vetor = zeros(1,n); %Vetor com 0's de tamanho 1 x n 
 
 for i=1:n 
 for j=1:n 
 if (j==i) 
 vetor(i) = abs(matriz(i,j)); 
 end; 
 end; 
 end; 
 
 soma = 0; %Guarda a soma dos módulos para cada linha 
 
 for i=1:n 
 for j=1:n 
 if(i~=j) 
 soma = soma + abs(matriz(i,j)); %Pega todos os 
 elementos da linha e soma seus valores absolutos 
 end; 
 end; 
 %Após esse for, temos a soma dos absolutos de cada linha. 
 Pode-se então comparar 
 
 if (soma>=vetor(i)) 
 op = 0; %Não converge 
 break; 
 end; 
 soma = 0; %Zera a variável para verificar a próxima linha 
 end; 
 
return; 
 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
6 
 
Função para Achar o Erro a Cada Iteração 
function [erro] = Valor_Norma(solucao1, solucao2, n) 
 
 % Função responsável pelo cálculo da norma-oo para cada iteração; 
 % (|x1 - x0|/|x1|); (|x2 - x1|/|x2|) ... 
 
 diferenca = zeros(1,n); %Vetor que guarda as diferenças dos 
 valores das iterações. 
 
 for i=1:n 
 diferenca(i) = abs(solucao2(i) - solucao1(i)); % Pega o 
 valor absoluto da diferença. 
 end; 
 
 erro = (max(diferenca))/(max(solucao2)); % O erro é igual à 
 maior diferença dividido pelo maior valor da solução 2 
 
return 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
7 
 
2. Caso de Teste 01 
 
Para a realização do primeiro teste, foi utilizado o sistema linear mostrado abaixo: 
 
 
 
Os valores do sistema linear assim como o máximo de iterações a serem realizadas e o 
erro máximo desejado, são fornecidos como dados de entrada. O programa, realiza 
então o teste de convergência através da função “Verifica_Convergencia”. Caso o 
sistema não convirja, uma mensagem é exibida e o programa é finalizado. Caso 
contrário, a execução prossegue dando início à entrada do vetor solução do sistema. 
Com o número máximo de execuções e o valor máximo do erro fornecido, o cálculo das 
soluções é iniciado. A cada iteração a função que calcula o erro é chamada 
(“Valor_Norma”) e retorna o erro. Os valores são impressos, mostrando a iteração, o 
erro e o vetor solução. Assim, quando o erro for menor que o erro definido ou o “kmax” 
for ultrapassado, o programa finaliza sua execução. 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
8 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE FEDERAL DE OURO PRETOINSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
9 
 
 
 
 
 
 
 
 
 
 
 
 Figura 01 – Caso de teste 01. 
 
Observando a figura 01, pode-se analisar o funcionamento do programa. Assim que foi 
informado a matriz n x n é informado sobre a convergência do método, neste caso 
verdadeiro, logo a mensagem informada é: “O processo irá convergir”. Em sequência é 
solicitado ao usuário os valores resultado para cada linha da matriz! Logo após, o 
usuário indica qual seria o numero máximo de interações, neste caso 10, 
sequencialmente é solicitado também o valor para o erro ao qual se pode considerar que 
a solução encontrada é satisfatória. A condição de parada determinada se deu quando o 
erro se tornou menor do que o erro desejado pelo usuário, pois com o erro informado de 
0.01 na 5ª interação (K=4) obteve-se o valor do erro igual a 0,005297246. Apesar de o 
número máximo de iterações não ter sido alcançado o erro estabelecido foi alcançado. 
Assim, o programa imprimiu a solução das iterações realizadas e o erro como esperado. 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
10 
 
3. Caso de Teste 02 
 
Para esse teste, o sistema linear utilizado é mostrado abaixo. 
 
 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
11 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 Figura 02 – Caso de teste 02. 
Neste caso teste 02 a convergência do método, é verdadeira, logo a mensagem 
informada é: “O processo irá convergir”. Solicitado o numero máximo de interações, 
neste caso 15, indicado também o erro satisfatório de 0.001. A condição de parada foi 
encontrada na 8ª interação (K=7), Assim a condição de parada foi o critério de erro. 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
12 
 
4. Caso de Teste 03 
Para esse teste, o sistema linear utilizado é mostrado abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
13 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Figura 03 – Caso de teste 03. 
UNIVERSIDADE FEDERAL DE OURO PRETO 
INSTITUTO DE CIÊNCIAS EXATAS E APLICADAS 
 
 
 
14 
 
Neste caso teste 03, o teste de convergência foi verdadeiro, assim a aplicação do método 
convergirá, informado 20 para o valor para a quantidade máxima de interações, indicado 
também o erro satisfatório de 0.0001. A condição de parada foi encontrada na 12ª 
interação (K=11), Assim a condição de parada foi o critério de erro. É notável, portanto 
que caso haja a diminuição do numero de interação, por exemplo 10, considerando esse 
mesmo erro, como na figura 04: abaixo 
 
 
 
 
Figura 04 – Caso de teste 03 (Com Kmax = 10). 
 
A condição de parada que aconteceria primeiro seria o alcance do numero máximo de 
interações, ou seja, o método para de ser executado, quando K for igual a 10, assim, se 
pode comprar o vetor solução para as duas situações, que no casso possui valores 
ligeiramente distintos para X1. Veja que a solução encontrada para Kmax = 20 foi 
[1.0000; 1.0000; 1.0000] e para Kmax = 10 foi [1.0001; 1.0000; 1.0000], sendo assim, é 
possível identificar que quanto maior o numero de interações, melhor será a resolução 
encontrada.

Continue navegando