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.
Download

Ficha 3 – Funções e Gráficos