Ficha 3 – Funções e Gráficos 3.1. Fibonacci - fib.m Especifique a função de Fibonacci, que para para um número natural n é definida por: 1 n≤2 ⎧ fib( n ) = ⎨ ⎩ fib( n − 1 ) + fib( n − 2 ) n > 2 a) Use um algoritmo iterativo, começando por determinar os números por ordem crescente até atingir o pretendido, e guardando estes números no vector F. b) Utilize o vector F anterior para desenhar o gráfico da função fib(n). c) Pretende-se avaliar se a razão entre dois termos consecutivos da série de Fibonacci converge para o “número de ouro”, definido como k = (1+ sqrt(5))/2 ≈ 1.6180. Para esse efeito, obtenha o vector E(n) = (fib(n+1)/fib(n)) e verifique gráficamente que o vector converge para k. 3.2. Cálculo aproximado de π Existem várias formas de obter uma aproximação do número π. Entre elas estão as seguintes 1. π /4 = 1-1/3+ 1/5-1/7+1/9-1/11 +... 2. π 2/6 = 1 +1/22 + 1/32 + 1/42 + 1/52 3. π /2 = 2/1 * 2/3 * 4/3 * 4/5 * 6/5 * 6/7 * 8/7 4. 2 / π = = 1/ 2 ⋅ 1/ 2 + 1/ 2 1/ 2 ⋅ 1/ 2 + 1/ 2 1/ 2 + 1/ 2 1/ 2 ⋅ ... . a) Escreva funções pi_1(n), pi_2(n), pi_3(n) e pi_4(n), que permitam obter o valor de π através das diferentes fórmulas acima indicadas, e em que n é o número de iterações efectuadas. b) Para cada uma das fórmulas acima verifique a sua convergência, desenhando um gráfico com o aproximação de π em função de n. 3.3. Cálculo de π pelos polígonos inscrito e circunscrito O valor aproximado de π foi obtido há mais de 2000 anos por Arquimedes, que utilizou as seguintes propriedades dos polígonos regulares, inscritos e circunscritos numa circunferência. a) pi_5 (polígono inscrito): O comprimento c2n do lado de um polígono de 2n lados inscrito numa circunferência pode ser obtido do comprimento cn de um polígono de n lados inscrito na mesma circunferência através da fórmula c2 n = 2 − 4 − cn2 Especifique a função pi_5(n), que aproxima o valor de π, por defeito, através da determinação do perímetro de polígonos inscritos numa circunferência de raio 1, cujo número de lados vai duplicando, sendo n é o número de iterações efectuadas. Utilize como polígono inicial o hexágono, cujo lado é igual ao raio (isto é 1). b) pi_6 (polígono circunscrito): O comprimento c2n do lado de um polígono de 2n lados que circunscreve uma circunferência pode ser obtido do comprimento cn de um polígono de n lados que circunscreve a mesma circunferência através da fórmula c2 n = ( 2 4 + cn2 − 2 cn ) Especifique a função pi_6(n), que aproxima o valor de π, por excesso, através da determinação do perímetro de polígonos circunscritos numa circunferência de raio 1, cujo número de lados vai duplicando, sendo n é o número de iterações efectuadas. Utilize como polígono inicial o quadrado, cujo lado é igual ao diâmetro (isto é 2). c) Verifique a convergência do processo, através do gráfico dos valores por defeito e excesso de π obtidos nas várias iterações. 3.4. Determinar o zero de uma função num intervalo (por iteração simples) Pretende-se determinar um zero da função f(x), isto é um ponto x0 em que f(x0) = 0, estando este ponto localizado no intervalo [a,b] (x0 ∈[a,b]). Para simplificar o problema, assuma-se que x0 é o único zero da função no intervalo [a,b], e que a função é contínua nesse intervalo. O algoritmo mais simples para determinar esse zero, é dividir o intervalo [a,b] em tantos intervalos quantos necessários para se obter uma precisão ε avaliando-se a função f(x) para todos os valores de xk = a + k ε , sendo o maior valor de k, kmax , aquele em que a + kmax ε = b. Adopte para zero da função qualquer valor de xk para os quais f(xk) * f(xk+1) < 0. a) Implementar a função zero(func,a,b, ε), em que a, b e ε têm o significado atrás indicado. Teste o seu programa com a função f(x) = 6x3 e-x – 4, entre os valores a=0 e b = 3, com uma precisão ε = 0.001. b) Desenhe a função f(x) indicada entre os valores a = 0 e b = 3. 3.5. Determinar o máximo/mínimo de uma função num intervalo (iteração) a) Adapte o algoritmo do problema anterior para determinar qual o valor fmax, o máximo de uma função f no intervalo [a, b]. Implemente a função maximo(f,a,b, ε), que retorna os valores de [fmax, xmax] (em que xmax é o maximizante da função f, isto é, f(xmax) = fmax). b) Idem para o mínimo da função f no intervalo [a, b]. 3.6. Determinar o zero de uma função num intervalo (por bi-partição) Pretende-se determinar um zero da função f(x), isto é um ponto x0 em que f(x0) = 0, estando este ponto localizado no intervalo [a,b] (x0 ∈[a,b]). Para simplificar o problema, assuma-se que x0 é o único zero da função no intervalo [a,b], e que a função é contínua nesse intervalo. Um algoritmo mais eficiente que o anterior para determinar esse zero, é ir dividindo sucessivamente o intervalo ao meio e aproveitar o sub-intervalo em que os extremos tenham sinais diferentes. A bipartição termina quando o intervalo tiver um comprimento inferior a ε. Adopte para zero da função o ponto médio do último intervalo obtido. a) Implementar a função zero(func,a,b, ε), em que a, b e ε têm o significado atrás indicado. Teste o seu programa com a função f(x) = 6x3 e-x – 4, entre os valores a=0 e b = 3, com uma precisão ε = 0.001. b) Desenhe a evolução, ao longo das iterações, dos limites superior e inferior dos intervalos que contêm o zero da função. 3.7. Raiz – raiz (n, x, p) A raíz n de um número a, r = a1/n, pode ser determinada tendo em conta que r é um zero da função f(x) = x-x/an-1. Tendo em conta que a1/n está contida no intervalo [min(1,a), max(1,a)], utilize um dos métodos para determinar o zero de uma função para especificar a função raiz(n,a, ε) que determina o valor de a1/n.