aula expositiva 13 4.4 algoritmos numéricos 4.4.1 integração por trapézios 4.4.2 bisseção...
TRANSCRIPT
![Page 1: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/1.jpg)
Aula Expositiva 13
4.4 Algoritmos Numéricos4.4.1 Integração por Trapézios4.4.2 Bisseção4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico
DCC 001Programação de Computadores
2º Semestre de 2011Prof. Osvaldo Carvalho
1DCC001 - 2011 - 2
![Page 2: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/2.jpg)
Integração por Trapézios
DCC001 - 2011 - 2 2
![Page 3: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/3.jpg)
Integração Numérica
DCC001 - 2011 - 2 3
a bx1 x2 x3 xn+1xn
Queremos calcular A integral indefinida de é
dificilmente obtida ou não existe O primeiro passo consiste em dividir o
intervalo em n sub-intervalos iguais
dxxfb
a xf
ba,
x
![Page 4: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/4.jpg)
Aproximações por Retângulos
Após a divisão em sub-intervalos, a área embaixo da curva pode ser aproximada por uma soma de retângulos
Temos duas formas de definição de somas: Soma de Riemann pela esquerda Soma de Riemann pela direita
DCC001 - 2011 - 2 4
![Page 5: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/5.jpg)
Área Coberta pela Soma de Riemann pela Esquerda
DCC001 - 2011 - 2 5
O lado esquerdo de cada retângulo
coincide com a curva
xixi+1
Área = f(xi).∆x
![Page 6: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/6.jpg)
Área Coberta pela Soma de Riemann pela Direita
DCC001 - 2011 - 2 6
O lado direito de cada retângulo coincide com a
curva
xi xi+1
Área = f(xi+1).∆x
![Page 7: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/7.jpg)
Somas de Riemman
DCC001 - 2011 - 2 7
O lado direito de cada retângulo coincide com a
curva
O lado esquerdo de cada retângulo
coincide com a curva
![Page 8: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/8.jpg)
Fórmulas para Somas de Riemann
DCC001 - 2011 - 2 8
n
iix
xnxxesq
xf
xfxfxfA
1
21
1
2
132n
iix
xnxxdir
xf
xfxfxfA
![Page 9: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/9.jpg)
Função LeftRiemannSum
DCC001 - 2011 - 2 9
function lrs = LeftRiemannSum(f,a,b,n)// Soma de Riemann esquerda da função// f entre os pontos a e b com n intervalos x = linspace(a,b,n+1); delta_x = (b-a)/n; lrs = sum(f(x(1:n))) * delta_x;endfunction
![Page 10: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/10.jpg)
Função RightRiemannSum
DCC001 - 2011 - 2 10
function rrs = RightRiemannSum(f,a,b,n)// Soma de Riemann direita da função// f entre os pontos a e b com n intervalos x = linspace(a,b,n+1); delta_x = (b-a)/n; rrs = sum(f(x(2:n+1)))* delta_x;endfunction
![Page 11: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/11.jpg)
Somas de Riemann com 16 sub-Intervalos
DCC001 - 2011 - 2 11
![Page 12: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/12.jpg)
Área Coberta pela Soma de Trapézios
DCC001 - 2011 - 2 12
xixi+1
Área do sub-intervalo = ∆x.(f(xi) + f(xi+1))/2
![Page 13: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/13.jpg)
Fórmula para Aproximação por Trapézios
DCC001 - 2011 - 2 13
n
ii
xfxfx
xxfxf
xxfxf
xxfxf
xxfxf
xf
A
n
nnnn
22
2222
11
113221
![Page 14: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/14.jpg)
Função TrapezoidalSum
DCC001 - 2011 - 2 14
function area = TrapezoidalSum(f,a,b,n)// Calcula a área sob a curva f entre a e b, // utilizando n pontos e a fórmula dos // trapézios x = linspace(a,b,n+1); delta_x = (b-a)/n; area = ( (f(x(1))+f(x(n+1)))/2 + ... sum(f(x(2:n))) ... )*delta_x;endfunction
![Page 15: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/15.jpg)
Comparação de Convergência
DCC001 - 2011 - 2 15
n ERRO ESQUERDA ERRO DIREITA ERRO TRAPEZIO 2 4.446396327e-001 3.407585307e-001 5.194055103e-002 4 2.092337399e-001 1.834653418e-001 1.288419903e-002 8 1.013895985e-001 9.495994231e-002 3.214828114e-003 16 4.989070473e-002 4.828406570e-002 8.033195149e-004
![Page 16: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/16.jpg)
Bisseção
DCC001 - 2011 - 2 16
![Page 17: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/17.jpg)
Raízes de uma Função
Problema: dada uma função f, contínua, encontrar x tal que f(x) = 0
Para algumas funções, como um polinômio de 2º grau, este problema pode ser resolvido analiticamente (por uma fórmula)
Para outras não existe solução analítica, e devemos usar métodos numéricos
Ponto de partida: dois pontos a e b, tais que f(a) < 0 e f(b) > 0, ou f(a) > 0 e f(b) < 0
17DCC001 - 2011 - 2
![Page 18: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/18.jpg)
F(a) < 0, F(b) > 0
3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5
-1.0
-0.5
0.0
0.5
1.0
1.5
ab
18DCC001 - 2011 - 2
![Page 19: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/19.jpg)
F(a) > 0, F(b)< 0
0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
1.2
ab
19DCC001 - 2011 - 2
![Page 20: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/20.jpg)
Mais de uma raiz entre a e b
0 5 10 15
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
ab
20DCC001 - 2011 - 2
![Page 21: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/21.jpg)
F(a)>0, F(b)>0 – Caso 1
0 5 10 15
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
21DCC001 - 2011 - 2
![Page 22: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/22.jpg)
F(a)>0, F(b)>0 – Caso 2
0 5 10 15
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
22DCC001 - 2011 - 2
![Page 23: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/23.jpg)
F(x) = 1/xF(a) < 0, F(b) > 0, mas….
-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5
-6
-4
-2
0
2
4
6
f(x) = 1/x
23DCC001 - 2011 - 2
![Page 24: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/24.jpg)
F(a).F((a+b)/2) < 0
abm = (a+b)/2
Antes, sabemos que uma raiz está aqui
Depois, sabemos que uma raiz está aqui; podemos fazer b = m
F(a)
0
F(m)
F(b)
24DCC001 - 2011 - 2
Teste simples para sinais opostos
![Page 25: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/25.jpg)
F(b).F((a+b)/2) < 0
ab
Antes, sabemos que uma raiz está aqui
Depois, sabemos que uma raiz está aqui;
podemos fazer a = m
m = (a+b)/2
F(a)
0
F(m)
F(b)
25DCC001 - 2011 - 2
![Page 26: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/26.jpg)
Parada do Algoritmo
A cada passo o tamanho do intervalo que contém a (uma) raiz é dividido por 2
Quando devemos parar? Cálculos numéricos sempre são
aproximados; testar se f(x) == 0 pode levar a loops infinitos
Solução: o algoritmo deve parar quando o intervalo [a,b] for suficientemente pequeno, isto é, quando b-a for menor que uma tolerância fornecida pelo usuário.
26DCC001 - 2011 - 2
![Page 27: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/27.jpg)
A Função Bissecao Cabeçalho
function r = Bissecao(f, a, b, tol)
// se f é contínua e se f(a).f(b) < 0, esta// função calcula a raiz r com // precisão menor ou igual// ao valor de tol
endfunctionFunção da qual
se deseja conhecer uma
raiz
Intervalo que contém a
raiz
Tolerância
27DCC001 - 2011 - 2
![Page 28: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/28.jpg)
Teste da Função Bissecao
Para testar a função Bissecao, nós precisamosDe uma função contínuaDe um intervalo onde a função troca
de sinalE de conhecer o valor de uma raiz
nesse intervalo para poder verificar o resultado 28DCC001 - 2011 - 2
![Page 29: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/29.jpg)
A Função e^(x)sin(x)
a b
π
29DCC001 - 2011 - 2
![Page 30: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/30.jpg)
A função exp_sin(x)
Reparem no uso de “.*”, ao invés de “*”
Isso é essencial para que a função aceite um vetor como argumento de entrada e produza um vetor como argumento de saída
function y = exp_sin(x) y = exp(-x) .* sin (x);endfunction
30DCC001 - 2011 - 2
![Page 31: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/31.jpg)
Testando a Função Bissecao
clearexec("exp_sin.sci");exec("bissecao.sci");tolerancia = input("\nTolerância = ");while tolerancia > 0 raiz = bissecao(exp_sin,2,4, tolerancia); printf(" Raiz = %12.10f;\n Pi = %12.10f\n",raiz,%pi); tolerancia = input("\nTolerância = ");end
31DCC001 - 2011 - 2
![Page 32: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/32.jpg)
A função BissecaoLoop
function r = bissecao(f,a,b,tol) while b-a > tol // Redução do intervalo end r = (a+b)/2;endfunction
32DCC001 - 2011 - 2
![Page 33: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/33.jpg)
A função BissecaoRedução do Intervalo
// Redução do intervalo m = (a+b)/2; //Ponto médio if f(a)*f(m) <= 0 then // [a,m] contém uma raiz b = m; end if f(m)*f(b) <= 0 then // [m,b] contém uma raiz a = m; end
33DCC001 - 2011 - 2
![Page 34: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/34.jpg)
Teste
Tolerância = 1.0e-3 Raiz = 3.1411132813; Pi = 3.1415926536
Tolerância = 1.0e-6 Raiz = 3.1415925026; Pi = 3.1415926536
Tolerância = 1.0e-10 Raiz = 3.1415926536; Pi = 3.1415926536
34DCC001 - 2011 - 2
![Page 35: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/35.jpg)
Série de Taylor para exp(x) e Cancelamento Catastrófico
DCC001 - 2011 - 2 35
![Page 36: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/36.jpg)
Série de Taylor para exp(x)
Do cálculo sabe-se que, para qualquer x, exp(x) pode ser calculado pela soma de infinitos termos
36DCC001 - 2011 - 2
![Page 37: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/37.jpg)
Série de Taylor para exp(x)
A partir do ponto onde n >= x, n! cresce mais rapidamente que xn
Na prática a soma é feita até que o valor absoluto do termo calculado seja menor que uma tolerância desejada
37DCC001 - 2011 - 2
![Page 38: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/38.jpg)
Função expTaylor Primeira Versão
function y = expTaylor(x,tol)// Calcula a soma dos termos // da série de Taylor até o primeiro// termo com valor absoluto menor// que a tolerância tolendfunction
38DCC001 - 2011 - 2
![Page 39: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/39.jpg)
Testando a função expTaylor
exec("expTaylor.sci");tol = input("\ntol = ");x = input("\nx = ");while x ~= 999 expCalc = expTaylor(x,tol); printf ("\n%15g %15.8e %15.8e %15.8e\n", ... x,exp(x),expCalc,exp(x)-expCalc ) x = input("\nx = ");end Função Scilab,
muito confiável39DCC001 - 2011 - 2
![Page 40: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/40.jpg)
Cálculo dos Termos da Série de Taylor
DCC001 - 2011 - 2 40
t0 t1 t2 t3
![Page 41: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/41.jpg)
A Função expTaylor
function y = expTaylor(x,tol) Termo = 1; y = Termo; i = 1; while abs(Termo) >= tol Termo = Termo * x / i; y = y + Termo; i = i+1; endendfunction
41DCC001 - 2011 - 2
![Page 42: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/42.jpg)
Teste da função expTaylorx positivo
tol = 1.0e-40x = 1 1 2.71828183e+000 2.71828183e+000 -4.44089210e-016x = 10 10 2.20264658e+004 2.20264658e+004 7.27595761e-012x = 30 30 1.06864746e+013 1.06864746e+013 -3.90625000e-003
Bons resultados para x positivo Erro 16 ordens de grandeza menor que
os valores calculados
42DCC001 - 2011 - 2
![Page 43: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/43.jpg)
Teste da função expTaylorx negativo
tol = 1.0e-40x = -1 -1 3.67879441e-001 3.67879441e-001 -1.11022302e-016x = -10 -10 4.53999298e-005 4.53999296e-005 1.39453573e-013x = -20 -20 2.06115362e-009 5.62188447e-009 -3.56073085e-009x = -30 -30 9.35762297e-014 -3.06681236e-005 3.06681237e-005
Péssimos resultados para x negativo x=-20: erro da mesma ordem de
grandeza dos valores x=-30: valor calculado negativo!
43DCC001 - 2011 - 2
![Page 44: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/44.jpg)
E agora?
A fórmula para a série de Taylor é provada matematicamente há (literalmente) séculos
A função exp_Taylor é uma implantação simples e direta da fórmula
O que aconteceu?44DCC001 - 2011 - 2
![Page 45: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/45.jpg)
Origem: Aritmética de Ponto Flutuante Uso de um número fixo de bits para
representação da mantissa Aritmética de números com grandes
diferenças de ordem de grandeza não funciona como esperado:-->eps = 1.0e-23;
-->y = 1.0e23;-->x = y + eps;-->x == y ans = T
x é igual a y bit por bit!
45DCC001 - 2011 - 2
![Page 46: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/46.jpg)
Soma de Números de Ordens de Grandeza muito Diferentes
DCC001 - 2011 - 2 46
-->eps = 1.0e-23;-->y = 1.0e23;-->x = y + eps;-->x == y ans = T
![Page 47: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/47.jpg)
Dízimas Periódicas
0,1 = 0.00011001100110011001100…. Ou seja, 0,1 não tem representação
exata em binário
DCC001 - 2011 - 2 47
-->0.1+0.2 == 0.3 ans = F
![Page 48: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/48.jpg)
Cancelamento Catastrófico
DCC001 - 2011 - 2 48
Precisão 6 Precisão 3 Diferença Dif/Precisão 6a 3,14159 3,14 0,00159 0,0506%b 3,13000 3,13 0,00000 0,0000%
a+b 6,27159 6,27 0,00159 0,0254%a-b 0,01159 0,01 0,00159 13,7187%
Ocorre em subtrações de números com valores absolutos próximos, sempre que se usa um número fixo de algarismos significativos, binários, decimais ou em qualquer outra base
![Page 49: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/49.jpg)
Valores dos Termos da Série para x = -20
DCC001 - 2011 - 2 49
![Page 50: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/50.jpg)
Valor Absoluto dos Termos da Série para x = -20
~4.3e00715 ordens de
grandeza maior que o resultado
correto
50DCC001 - 2011 - 2
![Page 51: Aula Expositiva 13 4.4 Algoritmos Numéricos 4.4.1 Integração por Trapézios 4.4.2 Bisseção 4.4.3 Série de Taylor para exp(x) e Cancelamento Catastrófico](https://reader036.vdocuments.com.br/reader036/viewer/2022070311/552fc165497959413d8ea7fb/html5/thumbnails/51.jpg)
Conclusões
Cuidado ao somar números de tamanhos muito diferentes e ao subtrair números de tamanhos próximos
A aritmética de ponto flutuante é melindrosa; use funções de bibliotecas sempre que possível
Por outro lado, não se deixe levar pelo pessimismo: programas numéricos funcionam como esperado na maior parte dos casos 51DCC001 - 2011 - 2