1 2 else: return n*fact(n-1); (c) (V)[ ](F)[ ] Uma sucessão sn é definida por n = 0 ⇒ 1; n > 0 ⇒ 4 + sn−1 ; Cálculo Numérico Recursividade T. Praciano-Pereira Lista numero 04 [email protected] Dep. de Computação alun@: 5 de setembro de 2012 Documento escrito com LATEX - sis. op. Debian/Gnu/Linux http://www.calculo-numerico.sobralmatematica.org/ Univ. Estadual Vale do Acaraú Se entregar em papel, por favor, prenda esta folha de rosto na sua solução desta lista, deixando-a em branco. Ela será usada na correção. Alternativamente, a lista pode ser resolvida diretamente na página do Moodle da disciplina. Exercı́cios 1 Recursividade objetivo: Trabalhar com programas que encontrem raı́zes de funções diferenciáveis como prática da recursividade palavras chave: busca de raı́zes, funções recursivas, método da busca binária, método da secante, método da tangente. 1. Em python, uma função recursiva se define como def f(x): if condição: return alguma coisa; elif: return f(x - a); em que a é o cı́clo da recursividade. Um exemplo muito repetido é a sucessão de Fibonacci. Outro é o fatorial. s10 = 20; (d) (V)[ ](F)[ ] Uma sucessão sn é definida por n = 0 ⇒ 1; n > 0 ⇒ 4 + sn−1 ; def fact(n): return n*fact(n-1); (b) (V)[ ](F)[ ] A definição recursiva do fatorial é def fact(n): if (n==0): (2) s10 = 41; (e) (V)[ ](F)[ ] A sucessão definida no item 1d desta questão é uma p.a.. A expressão geral, recursiva, para as p.a. é n = 0 ⇒ s0 ; (3) sn = n > 0 ⇒ r + sn−1 ; a p.a. cujo termo inicial é s0 e a razão aritmética é r. 2. Cálculo Numérico Computacional Sendo f uma função derivável, se f ′ (x0 ) 6= 0 então y = f (x0 ) + f ′ (x0 )(x − x0 ); é a equação da reta tangente ao gráfico de y = f (x) no ponto (x0 , f (x0 )). Vamos supor nesta questão que se tenha encontrado um ponto x0 tal que f ′ (x0 ) 6= 0. (a) (V)[ ](F)[ ] A raiz de reta tangente no ponto (x0 , f (x0 )) é x1 = x0 − funções recursivas (a) (V)[ ](F)[ ] A definição recursiva do fatorial é (1) f (x0 ) ; f ′ (x0 ) (b) (V)[ ](F)[ ] A expressão do zero da reta tangente pode ser repetida com a reta tangente no ponto (x1 , f (x1 )) desde que f ′ (x1 ) 6= 0 tendo esta reta como raı́z f (x1 ) x2 = x1 − ′ ; f (x1 ) (c) (V)[ ](F)[ ] O método da reta tangente pode ser repetido recursivamente com a definição return 1; elif (n==1): return 1; a=a− f (a) ; f ′ (a) 3 (d) (V)[ ](F)[ ] O método da reta tangente pode ser repetido recursivamente com a definição1 a=a− f (a) ; f ′ (a) mais a hipótese f ′ (a) 6= 0. (e) (V)[ ](F)[ ] O método da reta tangente pode ser repetido recursivamente com a definição a=a+ return (1 + 1.0/n)*f(n-1); def lista(n): k = 0; while (k <= n): print f(k); k += 1; (d) (V)[ ](F)[ ] A sucessão sn é definida pela lei s1 = 1; s2 = 1; Se n ≥ 3sn = sn−1 + sn−2 (e) (V)[ ](F)[ ] A sucessão sn é definida pela lei s1 = 1; s2 = 1; Se n ≥ 3sn = sn−1 + sn−2 ′ mais a hipótese f (a) 6= 0. 3. Cálculo Numérico Computacional A sucessão sn é definida pela relação 1 )sn−1 + 2; n (5) Então s10 = 10. f (a) ; f ′ (a) s1 = 2; n > 1 ⇒ sn = (1 + 4 (6) Então s10 = 55. 4. Cálculo Numérico Computacional (4) (a) (V)[ ](F)[ ] O código em python abaixo é uma definição de sn . def s(n): if (n < 0): return 0; elif (n == 1): return 2; else: return (1 + 1.0/n)*s(n-1); (b) (V)[ ](F)[ ] O código em python abaixo é uma definição de sn . def s(n): if (n <= 0): return 0; elif (n == 1): return 2; else: return (1 + 1.0/n)*s(n-1); (c) (V)[ ](F)[ ] def f(n): if (n <= 0): return 0; elif (n == 1): return 2; else: 1 Esta não é uma expressão matemática, é uma sentença de uma linguagem de computação em que a “=” é uma atribuição. No método da secante para buscas de raı́zes, se verifica onde haja troca de sinal da função no intervalo [a, b] e usa-se como raı́z aproximada a raiz da reta secante ao gráfico de f nos pontos P = (a, f (a)), Q = (b, f (b)) (a) (V)[ ](F)[ ] A raı́z da reta secante em [a, b] é x0 = a − f (a) m (b) (V)[ ](F)[ ] Se f trocar de sinal sobre o intervalo [a, b] a reta secante nos pontos P = (a, f (a)), Q = (b, f (b)) tem por raı́z c = a − podemos testar a troca de sinal nos dois subintervalos f (a) m e [a, c]; [c, b] Se f (a)f (c) ≤ 0 então um novo teste pode ser feito no intervalo [a, c] e caso contrário no intervalo [c, b]. (c) (V)[ ](F)[ ] Se f trocar de sinal sobre o intervalo [a, b] a reta secante nos pontos P = (a, f (a)), Q = (b, f (b)) tem por raı́z c = a − podemos testar a troca de sinal no subintervalo f (a) m e [a, c]; [c, b] Se f (a)f (c) ≤ 0 então um novo teste pode ser feito no intervalo [a, c] e caso contrário no intervalo [c, b]. e podemos testar a troca de sinal nos dois subintervalos [a, x0 ]; [x0 , b] Se f (a)f (x0) ≤ 0 então um novo teste pode ser feito no intervalo [a, x0 ] e caso contrário no intervalo [x0 , b]. 5 6 (d) (V)[ ](F)[ ] Se a troca de sinal de f ocorrer no intervalo [a, c] então b := c e a busca continua no intervalo [a, b], contrário a := c e a busca continua no intervalo [a, b]; é possı́vel determinar um polinômio do quarto grau cujo gráfico coincida com o gráfico de f nos pontos {−5, 5} e lhe seja tangente nestes mesmos pontos. (e) (V)[ ](F)[ ] Se f trocar de sinal sobre o intervalo [a, b] a reta secante (a) nos pontos P = (a, f (a)), Q = (b, f (b)) tem por raı́z x0 = a − fm um processo recursivo pode ser utilizado: f (a)f (b) ≤ 0; f (a) == 0 a raı́z é a; f (b) == 0 a raı́z é b; f (b)−f (a) f (a) R(a, b) = (7) m = b−a c=a− m ; Se f (a)f (c) ≤ 0; b = c; R(a, b); ou então a = c; R(a, b) 6. Polinômio de Taylor (a) (V)[ ](F)[ ] O polinômio de Taylor de grau 7 de y = sin(x) desenvolvido na origem é P (x) = x − (b) (V)[ ](F)[ ] O polinômio de Taylor de grau 11 de y = sin(x) desenvolvido na origem é 5. Polinômio de Taylor P (x) = x + Polinômio de Taylor (a) (V)[ ](F)[ ] O polinômio do terceiro grau tangente ao gráfico de y = sin(x) no ponto a = 0 é 3 P (x) = x − x 3! (b) (V)[ ](F)[ ] Um polinômio y = P (x) do terceiro grau coı́ncide com Q(x) = 1 + x + x2 + x3 nos pontos x ∈ {0, 5} e P ′ coincide com a derivada Q′ nos mesmos pontos. Nestas condições P = Q. (c) (V)[ ](F)[ ] Sabendo que x f (x) f ′ (x) -5 0 1 5 7 -1 é possı́vel determinar um polinômio do segundo grau cujo gráfico coincida com o gráfico de f nos pontos {−5, 5} e lhe seja tangente nestes mesmos pontos. (d) (V)[ ](F)[ ] Sabendo que x f (x) f ′ (x) -5 0 1 5 7 -1 é possı́vel determinar um polinômio do terceiro grau cujo gráfico coincida com o gráfico de f nos pontos {−5, 5} e lhe seja tangente nestes mesmos pontos. (e) (V)[ ](F)[ ] Sabendo que x -5 5 f (x) 0 7 f ′ (x) 1 -1 x3 x5 x7 + − 3! 5! 7! x7 x9 x11 x3 x5 + + + + 3! 5! 7! 9! 11! (c) (V)[ ](F)[ ] Sabendo que x f (x) f ′ (x) f ′′ (x) -5 0 1 -1 5 7 -1 2 podemos encontrar um polinômio do grau 5 que coincide com f e com suas derivadas nos pontos {−5, 5}. (d) (V)[ ](F)[ ] Sabendo que x f (x) f ′ (x) f ′′ (x) -5 0 1 -1 5 7 -1 2 podemos encontrar um polinômio do grau 6 que coincide com f e com suas derivadas nos pontos {−5, 5}. (e) (V)[ ](F)[ ] Sabendo que x f (x) f ′ (x) f ′′ (x) -5 0 1 -1 5 7 -1 2 podemos encontrar um polinômio do grau 7 que coincide com f e com suas derivadas nos pontos {−5, 5}.