Anda di halaman 1dari 25

UNIVERSIDADE FEDERAL DE OURO PRETO

DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Trabalho 1
Implementao de Algoritmos Numricos

Anlise Numrica

Alean dos Santos Lima 11.2.8137


Ewertton Bento Domiciano - 09.2.8141
Julia Aparecida de Souza - 12.2.8412
Marina Ferreira 10.2.8193
Otavio Augusto Mendes Frigo - 13.2.83.19
Pablo Henrique Antunes Silva - 10.1-8192

Maio 2015
Joao Monlevade

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Sumrio
I.

Introduo..................................................................................................... 3

III.

Problema....................................................................................................... 11

IV.

Desenvolvimento.......................................................................................... 12

V.

Testes.......................................................................................................... 13

VI.

Concluses.................................................................................................... 20

VII.

Bibliografia.................................................................................................... 21

Anexo 1 Algoritmos.............................................................................................. 21

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

I.

Introduo
Nesse trabalho vamos exemplificar as aplicaes aprendidas em clculo

numrico, so mtodos desenvolvidos para resolver computacionalmente os


problemas

matemticos

apresentados.

Isso

nos

apresenta

matemtica

computacional, que tem como objetivo aprender processos numricos para soluo
de problemas, com mais confiabilidade, agilidade e menor erro.
Os fatores que so levados em conta quando se usa um computador para
resolver os problemas matemticos apresentados so: o tempo de execuo,
normalmente menor, a memria utilizada, que nos dias atuais no apresenta grande
significncia uma vez que os computadores atuais apresentam grande quantidade de
memria, o terceiro fator o erro de arredondamento que pode depender de
condies de configuraes do sistema ou dos limites de representaes do mesmo.
Uma definio para algoritmos numricos pode ser: So os algoritmos
voltados ao processamento numrico, isto , s operaes aritmticas que formam o
cerne do algoritmo. O seu objetivo obter um ou mais resultados numricos. Um
algoritmo numrico de boa qualidade tem as seguintes caractersticas: (alcides).
Para o nosso trabalho quatro algoritmos so apresentados e testados a fim de
verificar o seu funcionamento. Alm de testa-lo tambm os comparamos com
exemplos disponveis na bibliografia do curso.
Aps isso, vamos analisar os resultados e o funcionamento de cada algoritmo
apresentado e depois tirar uma concluso vlida do experimento.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

II.

Algoritmos Numricos
Os algoritmos numricos podem ser vistos como uma facilitao da resoluo

para sistemas lineares, pois com ele usamos o computador para a resoluo dos
problemas. Desta forma, nos permite resolver de maneira mais rpida e com maior
preciso o nosso problema. Estes algoritmos so aplicados em diversas reas de
estudo e para resoluo de diversos problemas matemticos.
O principal fator em nosso caso o uso do computador, possibilitando uma
resoluo mais rpida, eficiente e precisa. Isso nos permite trabalhar com problemas
muito maiores, e mais complexos.
Os Algoritmos tratados no trabalho so regularmente usados para a resoluo
de sistema lineares, como Jordan e Jacobi, outros algoritmos so implementados
para mtodos voltados a encontrar razes de uma funo, como o mtodo de
bisseco e o mtodo de newton.
O primeiro algoritmo estudado nesse trabalho, uma evoluo da eliminao
de Gauss, conhecido como eliminao de Gauss-Jordan, nesse caso o objetivo
zerar os elementos acima e abaixo do elemento de pivotao, assim ao terminar o
processo a matriz se encontra escalonada.
Exemplo de Gauss Jordan

Procuramos chegar a outra matriz, com os passos do mtodo anterior, forma


diagonal:

Que ser associada a um sistema da forma:

Isto quer dizer que se conseguirmos chegar da matriz B matriz B', a soluo
do sistema imediata. Podemos, ainda, dividir cada linha pelo elemento da diagonal,
e assim chegar matriz identidade.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Por exemplo:

Figura 1 - Processo de Resoluo do Jordan

Pela resoluo do exemplo, temos somente a diagonal principal, que nos


permite chegar de maneira mais fcil ao resultado do sistema.
O segundo mtodo a ser estudado o mtodo de Jacobi que considete em
uma forma

iterativa para resolver o sistema de equaes lineares. Mtodo

matemtico criado por Carl Gustav Jacobi. Este mtodo usado para aplicaes mais
robustas em relao aos casos resolvidos pelo mtodo de Gauss. Com sistemas
grandes ou com um vasto nmero de entradas, Jacobi se mostra mais eficiente para
achar os coeficientes. Este mtodo consiste em isolar as incgnitas e de modo

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

interativo gerar uma aproximao dos valores do sistema, respeitando critrios de


parada como erro e iteraes mximas.

Figura 2 - Exemplo para resoluo de Jacobi


Processo de isolar as incgnitas ao quais queremos achar.

Figura 3 - Processo de Isolamento das incgnitas

Processo base para estabelecer as incgnitas do sistema, depois disso,


comea um processo de substituio sucessivas que se baseia na substituio das
incgnitas pelo vetor inicial de x, formando outro vetor que ser novamente aplicado
no sistema, fazendo isso at que a condio de parada seja atendida, normalmente o
erro mximo ou o nmero de iteraes mximas.

Figura 4 - Processo de substituio sucessivas

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Fazendo computacionalmente, todas as interaes ate que as condies de


parada sejam atendidas, temos as seguintes sadas.

Figura 5 - Soluo computacional para o problema.

O terceiro algoritmo em estudo o mtodo da bisseco, usado para achar as


razes de uma funo continua, considerado um mtodo simples e robusto. Por
definio, os dois intervalos usados devem conter a raiz, chamadas de razes a e b. O
processo consiste em dividir o intervalo no ponto mdio e ir verificando em qual
subintervalo se encontra a raiz. O processo se repete at que o erro seja menor que a
condio de parada.

Exemplo do mtodo de Bisseco

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Figura 6 - Exemplo do Mtodo de Bisseco

Na imagem acima mostrado a resoluo de um problema pelo mtodo da


bisseco, fazendo todo o processo de achar novas razes e avalia-las
sucessivamente, at que o erro seja menor que a condio de parada.
O prximo caso a implementao do mtodo de Newton. Desenvolvido por
Issac Newton, uma evoluo do mtodo da bisseco, com o mesmo intuito de
achar as razes de uma funo. Em comparao com o mtodo apresentado
anteriormente o mtodo de Newton converge muito mais rpido e consequentemente,
mais efetivo. O mtodo se baseia no clculo de retas tangentes, e derivaes. Assim
o processo vai aproximando ao valor da raiz desejado. A representao matemtica
do mtodo dada como:
f ( xn)
x n+1=x n
f ( xn )
Essa definio usada para achar o prximo x do sistema, dependendo da
funo e da sua primeira derivada.
Exemplo do mtodo de Newton

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Figura 7 - Exemplo do Mtodo de Newton

O processo de resoluo utilizando omtodo de Newton mais eficaz que o


mtodo de bisseco. Uma vez que converge mais rpido que outros mtodos,
achando desta forma a resoluo em menos tempo e com poucas iteraes.
O ltimo mtodo o 1/3 de Simpson, quem consiste em um mtodo de
integrao numrica, se baseando em um polinmio interpolador de grau 2.
Matemticamente temos:
h
I 2 = ( y 0 + 4 y 1 + y 2)
3
Para aplicao do mtodo, temos que subdividir o intervalo [a,b] em m(mltiplo
de 2). Aplicando na formula anterior:

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Com

Co = Cm= 1 e

Ci = 4 se i for mpar e

Ci = 2 se i for par.

Lembrando que o nmero de subintervalos m deve ser mltiplo de 2, o grau do


polinmio interpolador usado.
Exemplo da regra de 1/3 de Simpson

Primeiro se calcula o m, que sero os intervalos necessrios para resoluo

Criando a tabela que auxilia na resoluo. E fazendo as interaes necessria


temos o seguinte resultado.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Assim podemos ver que nossa resposta se aproxima de pi(3.14159).

III.

Problema

Foi proposto a resoluo de diversos problemas atravs de algoritmos numricos. O


primeiro mtodo a ser aplicado conhecido como mtodo direto foi o Jordan, o
segundo problema um mtodo iterativo, Jacobi. Outros problemas so Mtodo de
Bisseo e Mtodo de Newton que sero algoritmos para achar limites e achar
equaes algbricas

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

O primeiro problema era a implementao do algoritmo Jordan, um problema


que consiste em realizar operaes elementares sobre as equaes do sistema linear
ate que reste somente o somente a diagonal principal.
1) Implementar utilizando qualquer linguagem de programao o
seguinte mtodo para soluo de sistemas lineares: Jordan.
O segundo problema consiste em programar o mtodo de Jacobi, mtodo
interativo, que decompem a matriz, de forma que a mesma gera a resposta
esperada.
2) Implementar utilizando qualquer linguagem de programao o
seguinte mtodo para soluo de sistemas lineares: Jacobi.
A terceira implementao foi o mtodo de bisseo, mtodo que consiste achar
os intervalos que contem as razes do sistema. O mtodo consiste em subdividir o
intervalo ao meio a cada interao, ate que se encontre uma aproximao do valor da
raiz.
3) Implementar utilizando qualquer linguagem de programao o
seguinte mtodo para encontrar as razes de uma equao: Bisseo.
A ltima implementao requisitada foi a algoritmo do mtodo de Newton,
mtodo baseado em fazer a aproximao de curvas por tangente, Geometricamente,
o mtodo consiste a aproximar um arco de curva por uma reta tangente.
4) Implementar utilizando qualquer linguagem de programao o
seguinte mtodo para encontrar as razes de uma equao: Newton.
Esses foram os algoritmos propostos. Com o desenvolvimento deles vamos
gerar testes que mostrem o funcionamento de cada problema.
IV.

Desenvolvimento
Os algoritmos foram desenvolvidos no Matlab, por facilitar a processo de

programao e o entendimento do algoritmo. O Matlab a ferramenta preferencial


para os algoritmos numrico. Alm de levar em considerao os conhecimentos
desenvolvido pelos alunos envolvidos na implementao.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Para manter a clareza no texto, vamos colocar os cdigos completos no Anexo


1, Evitando assim que linhas de cdigo fiquem no texto. Os algoritmos foram
desenvolvidos com base nos pseudocdigos encontrados no livro Campo,
Algoritmos Numricos, nesse livro existem boxes com os cdigos, que podem ser
facilmente portados para qualquer linguagem.

V.

Testes
Para testar cada um dos algoritmos propostos, pegamos os exemplos do livro

Campos, Algoritmos Numricos, e executamos cada um nos seus respectivos


algoritmos e comparamos os resultados.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

O primeiro Algoritmo teste o Jordan. Esse algoritmo no citado no livro de


referncia. Por esse motivo pegamos suas referncias no livro texto Barroso,
Calculo Numrico com aplicaes.
Teste Jordan (Sada gerada pelo Matlab)
Nosso problema o seguinte

Figura 8 - Exemplo proposto no livro Calculo Numrico com aplicaes

A sada gerada pelo Matlab ficou da seguinte maneira


Gauss-Jordan mtodo:

1
0
0
0
0
0
0

0
1
0
0
0
0
0

0
0
1
0
0
0
0

A
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
1
Tabela 1 - Resposta do mtodo de Jordan

b
-2,8352
13,2316
2,1099
27,1104
6,1382
-44,3192
13,243

Assim o vetor soluo do nosso sistema ficou da seguinte maneira.


X
x1
x2

b
2,8352
13,231
6

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS
x3
x4
x5
x6
x7

2,1099
27,110
4
6,1382
44,319
2
13,243

Tabela 2 - Sada final do Mtodo de Jordan


Essa sada compatvel com a sada gerada e apresenta no livro, isso valida
nossa implementao e nosso teste. Na matriz gerada pelo sistema possvel ver
claramente que somente a diagonal principal existe elementos diferentes de zero,
facilitando a resoluo do sistema.
Para o segundo teste, o mtodo de Jacobi, vamos usar exemplos proposto no
livro Algoritmos Numricos, e depois compara-los com os valores de resposta
gerados algoritmo no Matlab.

Figura 9 - Exemplo de Jacobi, proposto no livro Algoritmos Numricos.

Passando os parmetros para o Matlab, a sada gerada pelo mesmo foi a seguinte:

Iter
x1
x2
x3
Err
or

0
5,
7
2,
5
0,
8
-

1
4,79

4,9195 5,0102 4,9955 4,9987 5,0001

0,975 0,9975
-2,44

Mtodo de Jacobi
4
5

-1,953

1,026

0,9995 1,0002 1,0005

4,999

-2

-2

-1,999
2,0001
1,9834 2,0072
1,9998

0,342 0,0989 0,0180 0,0052 0,0016 0,0002 0,0000 0,0000 0,0000


38
94
93
97
44
88
91
27
05
Tabela 3 - Iteraes do mtodo de Jacobi

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

Com os resultados gerados pelo algoritmo e pelos mesmos apresentados no


livro base, possvel verificar que os resultados so compatveis, isso torna nossa
implementao valida e nossos resultados consistentes.
Para a terceira implementao requerida, temos o algoritmo da Bisseo.
Novamente vamos usar como parmetro de comparao exemplos apresentados no
livro texto. O problema proposto o seguinte:

Com os resultados apresentados pelo algoritmo, e pelo exemplo apresentado


pelo livro podemos ver que a implementao vlida e corresponde aos valores
esperados, para os exemplos testados chegamos a um valor de x=11.7439, esse
valor foi obtido depois de 12 iteraes do algoritmo, sendo os parmetros de parada:
interaes mximas igual a 100 e erro mximo de 0.005

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

A tabela a seguir apresenta os resultados do mtodo de bisseo gerados


pelo Matlab:
Iter

Fa

Fb

10

6,3206

12

9,4834

11

11

12

9,4834

11,5

7,0594

0,5

11,5

12

9,4834

11,75

0,2013

0,25

11,5

11,625

5
6
7
8
9
10
11
12

11,687
5
11,718
8
11,734
4
11,742
2
11,742
2
11,742
2
11,743
2
11,743
7

14,849
7
7,0594
7,0594
3,6975
1,8136
0,8223
0,3145
0,0576
0,0576
0,0576
0,0254
0,0092

11,75

9,4834 11,625

11,75

9,4834

11,75

9,4834

11,75

9,4834

11,75

9,4834

11,75

9,4834

11,746
1
11,744
1
11,744
1
11,744
1

9,4834
9,4834
9,4834
9,4834

11,687
5
11,718
8
11,734
4
11,742
2
11,746
1
11,744
1
11,743
2
11743
7
11,743
9

Fx
DeltaX
14,849
1
7

3,6975
1,8136
0,8223
0,3145
0,0576

0,125
0,0625
0,0313
0,0156
0,0078

0,0716 0,0039
0,0069

0,002

0,001
0,0254
0,0005
0,0092
0,0011 0,0002

Tabela 4 - Representao do mtodo da Bisseo

Assim a resposta final 11.7439.


O mtodo da bisseo rudimentar. Existem outros que apresentam a
resposta com menos passos, tornando-os assim mtodos mais eficientes. Porm, a
bisseo apresenta uma grande facilidade de implementao e entendimento.
O prximo teste proposto para o mtodo de Newton, como o seguinte
exemplo encontrado no livro Algoritmos numricos (Depois de realizar o teste
vamos compara-lo com os valores da resoluo encontrados no livro):

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

A resposta gerada pela implementao no Matlab, ento organizada na tabela


a seguir:
Iter
0
1
2
3
4
5

x
4

DFx
234
121,82
3,3846
52
80,368
3,0853
2
70,656
3,0056
7
3
70,003
3
70

Fx
144
36,469
3
6,4056
0,3906
0,0018
0

Tabela 5 - Tabela Resultado do Mtodo de Newton

Assim vemos que o resultado 3, isso igual ao exemplo apresentado no livro


do algoritmo numrico. Com isso possvel ver que o algoritmo desenvolvido est

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

correto e gerando as sadas esperadas. Se comparamos os mtodos de achar razes,


com mtodo da bisseo e de mtodo de Newton implementado. Vemos que o
mtodo de newton tende a convergir e gerar a resposta mais rpido
O ltimo algoritmo proposto foi a implementao da regra 1/3 de Simpson, para
testar essa regra, vamos transcrever o cdigo presente no livro Algoritmos numrico
do autor Frederico Campos. O cdigo junta os mtodos de Newton-Codes e a regra
aplicada determinada de acordo com o parmetro n, passado com referncia na
chamada da funo. A varivel n pode ser definido como grau do polinmio envolvido
na integrao numrica. Para mostrar o funcionamento do cdigo, vamos seguir o
exemplo presente no livro texto.

Executando nosso algoritmo no Matlab, com os mesmo parmetros pedidos no


exemplo acima, obtivemos as seguintes sadas
Para n = 2, temos
NewtonCotes(0,pi,2,6)
i
x(i)
y(i)
C(i)
0
0
0,0000
1
1
0,523598
0,5000
4
2
1,047197
0,8660
2
3
1,570795
1,0000
4
4
2,094393
0,8660
2
5
2,617992
0,5000
4
6
3,14159
0,0000
1
Tabela 6 - Valores gerados pelo Matlab, para o mtodo de Newton Cotes

O resultado final o valor da integral encontrado pelo mtodo, esse valor


2.0009.
Para n = 3, temos
i
0
1
2
3

NewtonCotes(0,pi,3,6)
x(i)
y(i)
0
0,0000
0,523598
0,5000
1,047197
0,8660
1,570795
1,0000

C(i)
1
3
3
2

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS
4
2,094393
0,8660
3
5
2,617992
0,5000
3
6
3,14159
0,0000
1
Tabela 7 - Valores gerados pelo Matlab, para o mtodo de Newton Cotes

Para o segundo caso o valor encontrado para a integral igual a 2.0020. Assim
podemos ver que o resultado gerado por n=2, ou seja, pela regra de 1/3 de Simpson
fornece um resultado mais exato que resultado gerado pelo mtodo de 3/8 de
Simpson. Os valores encontrado so iguais ao apresentados pelo exemplo
apresentado no livro, isso mostra que nossas implementaes esto funcionando
corretamente.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

VI.

Concluses
Com tudo apresentado acima, podemos ver o funcionamento e as tcnicas

aplicadas

para

implementao

dos

mtodos

numricos.

Com

essas

implementaes realizadas podemos observar o funcionamento dos algoritmos.


Aps as implementaes e posterior anlise dos resultados encontrados com
auxlio

dos

algoritmos

implementados,

pode-se

concluir

que

tais

mtodos

matemticos tericos quando aplicados em um computador possibilita a obteno de


um resultado mais preciso, e portanto confivel, em um espao de tempo muito menor
em relao ao tempo gasto quando estes problemas so resolvidos mo. Deixando
claro desta forma, a importncia que estes mtodos tm quando nos deparamos com
problemas mais complexos em outras reas do conhecimento.

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS

VII.

Bibliografia

CAMPOS FILHO, Frederico Ferreira. Algoritmos Numricos. 2a edio, 2007. Editora


LTC.
BARROSO, L. et al. Clculo Numrico (com aplicaes), 2 ed., Ed. Harbra, 1987.

Anexo 1 Algoritmos

Algoritmo 1 Jordan
% Gauss-Jordan method
% m = numero de linhas
% n = numero de colunas
[m,n]=size(a);
% este for vai passar por todas as
linhas eliminando-as uma a uma
for j=1:m-1
% este for realiza o
pivoteamento em cada coluna nao
nula de cada linha
for z=2:m
if a(j,j)==0
t=a(1,:);a(1,:)=a(z,:);
a(z,:)=t;
end
end
% este for converte os
elementos
abaixo
da
diagonal
principal para zeros
for i=j+1:m
a(i,:)=a(i,:)a(j,:)*(a(i,j)/a(j,j));
end
end

% este for converte os elementos


acima da diagonal principal para
zeros
for j=m:-1:2
for i=j-1:-1:1
a(i,:)=a(i,:)a(j,:)*(a(i,j)/a(j,j));
end
end
% Este for converte os elementos da
diagonal principal para uns (1's)
for s=1:m
a(s,:)=a(s,:)/a(s,s);
x(s)=a(s,n);
end
%funo para mostrar os resultados
disp('Gauss-Jordan method:');
a
x'

Algoritmo 2 Jacobi
function [x,Iter,CondErro] = Jacobi(n,A,b,Toler,IterMax)
%Objetivo: resolver o sistema Ax=b pelo mtodo iterativo de Jacobi
%n,A,b,Toler,IterMax = ordem,matriz,vetor independente,tolerancia,numero
%maximo de iteracoes

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS
%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)=b(i)-Soma;
end

NormaNum =0;
NormaDen=0;
for i=1:n
t=abs(v(i)-x(i));
if t>NormaNum
NormaNum =t;
end
if abs(v(i))>NormaDen
NormaDen = abs(v(i));
end
x(i)=v(i);
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

Algoritmo 3 Mtodo de Bisseo


%Calcular a raiz de uma equacao pelo metodo de bissecao
function [Raiz,Iter,CondErro]=Bissecao(a,b,Toler,IterMax,f)
%a=limite inferior b=limite superior Toler=tolerancia
%InteMax numero maximo de interacoes
%Raiz=raiz Iter=numero de interacoes gastas
%CondErro=0 se a raiz foi encontrada
%CondErro=1 em caso contrario
Fa=f(a);
x=(a+b)/2;
Fb=f(b);
Fx=f(x);
if Fa*Fb > 0
%avaliar a funcao em x
disp(' funcao nao muda de sinal
fprintf('%2.4f %2.4f %2.4f
nos extremos do intervalo dado');
%2.4f
%2.4f
%2.4f
%2.4f
%2.4f
Raiz=NaN;
\n',Iter,a,Fa,b,Fb,x,Fx,DeltaX);
Iter=NaN;
if(DeltaX<=Toler
&&
CondErro=1;
abs(Fx)<=Toler)||Iter >= IterMax
return;
break
end
end
DeltaX=abs(b-a)/2;
if Fa*Fx>0
Iter=0;
a=x;
Fa=Fx;
disp(' Iter
a
Fa
b
else
Fb
x
Fx
DeltaX');
b=x;
while 1
end

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS
DeltaX=DeltaX/2;
Iter=Iter+1;
end
Raiz=x;
%teste de convergencia

if DeltaX <= Toler && abs(Fx) <=


Toler
CondErro=0;
else
CondErro=1;
End

Algoritmo 4 Mtodo de Newton


%Algoritmo Newton
function [Raiz,Iter,CondErro]=Newton(x0,Toler,IterMax)
%{Objetivo: Calcular a raiz de uma equao pelo mtodo de Newton
%parametros de entrada x0,Toler,IterMax
%{Valor Inicial, Tolerancia e numero maximo de iteraoes
%parametros de saida Raiz, Iter, CondErro
%{Raiz,numero de iteraoes gastas e condioes de erro, sendo
%{CondErro = 0, se a raiz foi encontrada e CondErro = 1 em caso contrario
%{avaliar a funo e sua derivada em x0
%fx = f(x0);
fx = x0^4+2*x0^3-13*x0^2-14*x0+24;
Iter = Iter+1;
%Dfx = f'(x0);
fprintf('%2.4f %2.4f %2.4f
Dfx = 4*x0^3+6*x0^2-26*x0-14;
%2.4f \n',Iter,x,Dfx,fx);
x= x0;
if (DeltaX<=Toler &&
Iter = 0;
abs(fx)<=Toler) ||Iter >= IterMax
disp(' Iter
x
DFx
break
Fx');
end
fprintf('%2.4f %2.4f %2.4f
end
%2.4f \n',Iter,x,Dfx,fx);
Raiz=x;
while 1
%teste de convergencia
DeltaX = -fx/Dfx;
if DeltaX <= Toler && abs(fx) <=
x=x+DeltaX;
Toler
%fx=F(x);
CondErro=0;
fx=x^4+2*x^3-13*x^2-14*x+24;
else
%Dfx=f'(x);
CondErro=1;
Dfx=4*x^3+6*x^2-26*x-14;
end

Algoritmo 5 Mtodo de Newton-Cotes


%Algoritmo Newton-Codes
%{Objetivo Integrar uma funo pelo mtodo de Newton-Cotes
%parmetros de entrada a,b,n,m;
%{limite
inferior,
limite
superior,
grau
do
polinmio
,nmero
de
subintervalos}
%parmetros de sada integral conderro
%{valor da integral e condio de erro, sendo}
%{CondErro = 0 = se no houve erro de consistncia dos parmetros dados,}
%{CondErro = 1 = se (n<1 ou n>0),}
%{CondErro = 2 = se resto(m,n) =\ 0 e}
%{CondErro = 3 se ambas as condies ocorrerem}
function
[CondErro,Integral]
=
c(1)=1;c(2)=1;c(3)=4;c(4)=1;c(5)=3;
NewtonCotes(a,b,n,m)
c(6)=7;c(7)=32;
d(1)=2;d(2)=6;d(3)=8;d(4)=90;d(5)=2
c(8)=12;c(9)=19;c(10)=75;c(11)=50;c
88;d(6)=840;
(12)=41;c(13)=216;
d(7)=17280;d(8)=28350;

UNIVERSIDADE FEDERAL DE OURO PRETO


DEPARTAMENTO DE COMPUTAO
E SISTEMAS DE INFORMAO
INSTITUTO DE CINCIAS EXATAS E APLICADAS
c(14)=27;c(15)=272;c(16)=751;c(17)=
3577;c(18)=1323;
c(19)=2989;c(20)=989;c(21)=5888;c(2
2)=-928;c(23)=10496;
c(24)=-4540;
%consistencia dos parametros
CondErro = 0;
Integral = 0;
if (n<1||n>8)
CondErro = CondErro+1;
end
if (mod(m,n)~=0)
CondErro = CondErro+2;
end
if CondErro ~= 0
return;
end
%Clculo da integral
p = fix(0.25*(n*(n+2)+mod(n,2)));

h = (b-a)/m;
fprintf('i
x(i)
y(i)
c(i)\n');
for i = 0:m
x = a+i*h;
%Funo y(x)
y = sin(x);
j = p+fix(0.5*n-abs(mod(i,n)0.5*n));
k = 1+fix((n-mod(i,n))/n)fix((m-mod(i,m))/m);
Integral = Integral+y*c(j)*k;
%plot(i,Integral,'.')
%hold on;
fprintf('%d
%.4f
%.4f
%.4f\n',i,x,y,c(j)*k);
end
Integral = n*h/d(n)*Integral

Anda mungkin juga menyukai