Vous êtes sur la page 1sur 14

Problemas Seleccionados

ACE 2008/2009
Parte II
T
opicos:
N
umeros aleatorios e estatstica elementar
Graficos 3D
Ciclos e instrucoes decisorias
Funcoes
Aproximacao polinomial
Importacao e manipulacao de dados

N
umeros aleat
orios e estatstica elementar

Exerccio 1. Gere um vector x com 105 n


umeros aleatorios com distribuicao uniforme
no intervalo ]2, 3[. Calcule a media e o desvio padrao dos n
umeros gerados. Calcule
tambem a media e o desvio padrao para y = sin(2x). Numa figura com 2 areas graficas
dispostas verticalmente, faca um histograma dos valores de x com 30 classes na area
grafica superior e um histograma dos valores de y com 30 classes na area grafica inferior.
Documente devidamente os graficos.

Exerccio 2. Gere um vector x, com 105 elementos aleatorios que seguem uma distribuicao normal com media igual a 4 e desvio padrao igual a 2. Apresente o histograma
do vector x com 20 classes. Calcule ainda a fraccao de elementos no intervalo [2, 6].

Exerccio 3. Calcule aproximadamente, recorrendo ao metodo de Monte Carlo com uma


distribuicao de 104 pontos (x, y) equiprovaveis, a area abaixo da curva definida pela funcao
y = f (x) = 5exp(t/2) no domnio representado na figura. Compare com o valor exacto
obtido por meios analticos.
1

1 NUMEROS
ALEATORIOS
E ESTATISTICA ELEMENTAR

Figura 1.1: Ex. 3: Estimativa da area limitada pela exponencial decrescente 5et/2 no
intervalo t [0, 5]

Exerccio 4. Calcule aproximadamente a area abaixo da curva definida pela funcao y =


f (x) no intervalo x [0, 3] usando o metodo de Monte Carlo.


sinx


f (x) =
x
Para isso gere104 pontos aleatorios com distribuicao uniforme no rectangulo x ]0, 3[
y ]0, 1[. Construa ainda um grafico com os pontos abaixo da curva a representados a
azul e os pontos acima representados a vermelho.

Figura 1.2: Ex. 4: Estimativa da area limitada pela curva |sinx/x| no intervalo x
[0, 3]

1 NUMEROS
ALEATORIOS
E ESTATISTICA ELEMENTAR

Exerccio 5. Recorra ao metodo de Monte Carlo para calcular aproximadamente a area


da coroa circular designada como regiao B na figura. Recorra a um conjunto de 105 pontos
aleatorios com distribuicao de probabilidade uniforme. Compare com o valor obtido analiticamente

Figura 1.3: Ex. 5: Estimativa da area da coroa circular B

Exerccio 6. Recorra ao metodo de Monte Carlo para calcular aproximadamente a area


sombreada da figura. Recorra a um conjunto de 105 pontos aleatorios com distribuicao de
probabilidade uniforme.

Figura 1.4: Ex. 6Calculo da area da regiao sombreada.

1 NUMEROS
ALEATORIOS
E ESTATISTICA ELEMENTAR

Exerccio 7. Recorde que qualquer n


umero complexo se pode expressar na forma c =
|c|exp(i ). Gere entao uma matriz C (100 100) de no s complexos onde o modulo de
cada elemento da matriz devera ter uma probabilidade uniforme de se situar no intervalo
|c| ]0, 2[ e, por sua vez, o argumento angular devera resultar duma distribuicao aleatoria
gausseana de media /4 e desvio padrao de /10. Crie uma figura com 4 areas graficas
organizadas numa configuracao 2 2. Na area 2 faca o grafico com pontos a azul da
matriz C. Mostre o histograma com 25 classes da parte real de todos elementos da matriz
C na area grafica 2 e histograma com 25 classes da parte imaginaria de todos elementos
da matriz C na area 4. Use o espaco das areas 1 e 3 para fazer o grafico dos pontos da
matriz C. Este grafico devera apresentar a grelha e ter razao de aspecto 1:1. Documente
devidamente todas as areas graficas.
Exerccio 8. Um alvo circular e usado para treino de tiro com arco. O alvo esta dividido
em 3 zonas concentricas a`s quais correspondem as seguintes pontuacoes: Z1: 2 pontos,
Z2: 5 pontos, Z3: 10 pontos. Para simulacao em computador considere o alvo definido
no crculo unitario e que as diferentes zonas se caracterizam da seguinte maneira:
Z1: 0.5 raio < 1
Z2: 0.1 raio < 0.5
Z3: raio 0.1
Calcule a pontuacao obtida em 100 tiros admitindo que a respectiva posicao no alvo
pode ser simulada por 2 coordenadas x e y em que ambas resultam de distribuicoes
aleatorias gaussianas de media 0.05 e desvio padrao 0.2.
Exerccio 9. Pretende-se simular em computador o lancamento simultaneo de 6 dados
com os valores faciais 1, 2, . . . , 6. Construa uma matriz D (6 1000) em que cada linha
representa 1000 lancamentos dum dos 6 dados. Assim o elemento Dm.n representara o
resultado associado ao dado m durante o lancamento n. Crie a matriz D a partir da
geracao equiprovavel de n
umeros inteiros tal que Dm,n {1, 2, 3, 4, 5, 6}. Seja S a soma
dos valores dos 6 dados obtidos ao longo de cada um dos 1000 lancamentos. Obtenha o
vector S, calcule a respectiva media e o desvio padrao e faca ainda o respectivo histograma
com 25 classes. Estime a probabilidade de S = 24.

Exerccio 10. Recorde a instrucao fix. A partir dessa instrucao gere uma matriz C (5
3), de no s inteiros aleatorios equiprovaveis no intervalo [4, 4]. Admita que cada coluna
dessa matriz C constitui o vector dos coeficientes dum polinomio do 4o grau. Calcule cada
um dos polinomios definidos por 200 pontos no intervalo x [4, 4]. Crie uma matriz M ,
em que cada coluna contem os valores de cada polinomio. Sem recorrer a hold on elabore
um grafico onde se devem sobrepor as 3 curvas polinomiais. Documente devidamente o
grafico.


2 GRAFICOS
3D

Gr
aficos 3D

Exerccio 11. Considere a seguinte funcao f (x, y) definida no domnio x [1, 1] y


[1, 1[:
f (x, y) = cos(4(x + y))e|x+y|
Calcule a funcao numa grelha de 51 51 pontos e elabore um grafico de superfcie utilizando um sombreado interpolado. Acrescente as legendas necessarias para aumentar a
legibilidade do grafico.
Exerccio 12. Considere a seguinte funcao f (x, y) definida no domnio x [1, 1] y
[1, 1[:
f (x, y) = ln(1 + (x2 + y 2 ))sin(4

p
x2 + y 2 )

Calcule a funcao numa grelha de 51 51 pontos e elabore um grafico de superfcie utilizando um sombreado interpolado. Acrescente as legendas necessarias para aumentar a
legibilidade do grafico.

Exerccio 13. Represente por um grafico de superfcie a funcao


2x2 y + 3x y 3
cos(x y)
sendo x e y ambos definidos por 51 pontos no intervalo [1, 1]. Assinale no mesmo grafico
a origem dos eixos coordenados com um asterisco vermelho. Sobreponha ao grafico de
z(x, y) os graficos dos planos z = 0 e x = 0. Acrescente os ttulos e legendas adequados `a
boa compreensao do grafico. Aumente os limites dos eixos de forma a deixar uma margem
de 10% em relacao aos limites do grafico.
z(x, y) =

Exerccio 14. Considere a seguinte a funcao das variaveis x e y


f (x, y) = 5sin(2(x y)) + 3sin(6(x + y)) + sin(10(x y))
Construa um grafico planar de pseudo-cor de f (x, y) para x [1, 1] y [1, 1] numa
grelha de 71 71 pontos. Aplique sombreado interpolado. Sobreponha nesse grafico 8
curvas de nvel de f (x, y) a preto. Rotule devidamente os eixos e apresente tambem a
barra de cores.

Exerccio 15. Considere a seguinte funcao matematica de duas variaveis


f (x, y) = sin x sin y exp((x2 + y 2 )/10)
em que x [2, 2] y [2, 2] numa grelha de 71 71 pontos. Crie uma figura
com 2 areas graficas dispostas verticalmente. Na primeira deve apresentar um grafico de

3 CICLOS E INSTRUC
OES
DECISORIAS

superfcie de f (x, y) com sombreado interpolado. Na segunda deve apresentar um grafico


com as curvas de nvel de f (x, y) para os nveis {0.25, 0.15, 0, 0.15, 0.25} e adicione as
legendas necessarias a` sua boa compreensao.
Exerccio 16. Considere a seguinte superfcie descrita parametricamente pelas seguintes
funcoes de e

x = sincos
y = sinsin

z = cos
Construa, um grafico de superfcie da funcao considerando [0, 2] com 200 pontos
e [0, ] com 100 pontos. Acrescente os rotulos aos eixos e garanta a razao 1:1:1 no
aspecto dos eixos.

Exerccio 17. Considere a funcao seguinte Z(, )




1 sin 5 sin cos  1 sin

2

Z =

5 sin 2 sin cos 5 sin

5
sin sin
2


sin sin
2



Para uma grelha de 201 201 valores definidos no domnio 2 , 2 [0, 2].
Calcule Z(, ) e faca o grafico de superfcie da funcao Z mas relativamente a`s coordenadas
x = cos e y = sin. Acrescente os rotulos aos eixos e garanta a razao 1:1:1 no aspecto
dos eixos. Aplique sombreado interpolado.

Exerccio 18. Considere a seguinte funcao matematica de variavel complexa


F =

z4 1

definida na grelha x [1.5, 1.5] y [1.5, 1.5] e com z = x + i y. Considere 61 pontos


tanto para x como para y. Elabore um grafico de superfcie para o valor absoluto desta
funcao. Apresente a barra de cores e acresente as legendas adequadas.

Ciclos e instruco
es decis
orias

Exerccio 19. Recorrendo a um ciclo for calcule a soma S =

20
P

un quando

n=1

un = (1/2)n (1/n)(1/2)
Compare com a solucao vectorizada.

Exerccio 20. Recorrendo a um ciclo for calcule o produtorio P =

Q100

n=1

exp(un ) quando

3 CICLOS E INSTRUC
OES
DECISORIAS

un =

(1)n+1
n

compare com a solucao vectorizada

Exerccio 21. Recorrendo a um ciclo for comece por gerar a sequencia un ate n = 10000
com
(1
se n mpar
4

un = n
1 n
1+ n
se n par
p P
De seguida, com um novo ciclo for calclule S = 4 90 un para n mpar. Termine o
exerccio calculando (u10000 )i S em que i e a unidade imaginaria.
Exerccio 22. Gere uma sequencia aleatoria x com 200 n
umeros equiprovaveis no intervalo ]0, 10[.
1. Use um ciclo for para calcular a media de x.
2. Use um ciclo for para calcular quantos valores estao acima da media.

Exerccio 23. Gere uma sequencia aleatoria x com 200 n


umeros inteiros equiprovaveis
no intervalo [1, 50[.
1. Use um ciclo for para calcular os valores maximo e mnimo de x. Determine tambem
os respectivos ndices relativamente a` sequencia
2. Modifique a solucao anterior para contemplar casos de m
ultiplas ocorrencias dos
valores extremos.
Exerccio 24. Gere uma sequencia aleatoria x com 200 n
umeros inteiros equiprovaveis
no intervalo [1, 100]. Da sequencia x extraia, caso existam, para um vector y ate 10
m
ultiplos de 3. Recorra a um ciclo while.

Exerccio 25. Crie uma matriz M contendo os valores dum quadrado magico de dimensao
10.
1. Use um ciclo for para calcular o traco da matriz, isto e a soma dos elementos da
diagonal principal. Compare com uma solucao vectorizada.
2. Modifique a solucao anterior de modo a obter tambem a soma dos elementos da
antidiagonal.


4 FUNC
OES

3. Compare com as solucoes vectorizadas


Exerccio 26. Crie a matriz

1
1
1
1 1
4 3 2 1 0

6
3
1
0
0
A=

4 1
0
0 0
1
0
0
0 0
Recorra a um ciclo while para determinar o menor inteiro k tal que Ak = I. Sugere-se a
instrucao any para validacao da condicao de execucao do ciclo.

Exerccio 27. Use ciclos for encadeados para gerar uma matriz de Hilbert H de dimensao
10. Recorde que o elemento hi j duma matriz de Hilbert e dado por
hi j =

1
i+j1

Compare com solucoes vectorizadas que podem ser obtidas com base nas funcoes meshgrid() ou repmat().
Exerccio 28. Gere um vector x com 101 pontos igualmente espacados no intervalo x
[10, 10]. Use ciclos for encadeados para calcular a funcao f (x) para todos os valores de
x e N = 100.

N 
Y
x2
f (x) =
1 2
n
n=1

Resolva o mesmo problema usando uma estrategia vectorizada com base na funcao meshgrid(). Elabore os graficos sobrepostos de f (x) para N = 50, 75, 100. Legende devidamente o grafico.

Func
oes

Exerccio 29. Escreva uma funcao designada mystats de acordo com as seguintes especificacoes

function stats = mystats(A)


% This function computes elementary statistics of the input matrix A
% A - input matrix or vector
% stats - 3 element vector holding the mean, standard deviation and


4 FUNC
OES

% variance of A
...
...
stats = [...]
Teste a funcao com uma matriz aleatoria gaussiana G(30 10) de media 10 e desvio
padrao 2.
Exerccio 30. Escreva uma funcao designada nmultk que tem como resultado um vector
contendo ate n m
ultiplos do inteiro k que possam existir numa matriz de inteiros. Defina
a funcao de acordo com o prototipo seguinte
function nmu = nmultk(A,n,k)
% This function computes extracts from A the first n multiples of
% integer k
% A - input matrix or vector
% n - the number of multiples
% k - the integer to be tested
...
...
Teste a funcao com um vector de inteiros equiprovaveis no intervalo [1, 100] e para n = 10,
k = 3, 5, 7.
Exerccio 31. Um n
umero inteiro diz-se perfeito se igular a soma dos seus divisores
(excluindo o proprio). Escreva uma funcao isperfect que verifique se um dado inteiro
k > 1 e perfeito. Recorra `a funcao rem() para efectuar testes de divisibilidade. Defina a
funcao de acordo com o seguinte prototipo
function p = isperfect(k)
% This function verifies if the integer k is a perfect number
% k - the integer to be tested
% p = 1 if k is perfect p = 0 otherwise
...
...
Teste a funcao com k = 6, 28, 100, 496, 1200, 8128
Exerccio 32. Escreva uma funcao ismagic que verifique se uma dada matriz quadrada
e uma quadrado magico. Desenvolva a funcao de acordo com as seguintes orientacoes
function m = ismagic(M)
% This function verifies if the square matrix M is a magic square


4 FUNC
OES
%
%
%
%

10

ie. the sum along colunms must be constant and equal to the sum along
lines and main diagonal
M - is the input matrix
m = 1 if M is a magic square p = 0 otherwise

% Check if M is square
...
% Compute sums along colunms,lines and diagonal
...
% Check the magic square criteria
Teste a funcao com varias matrizes em que algumas devem ser geradas com a funcao
magic().
Exerccio 33. Escreva uma funcao dsums que calcule as somas da diagonal e da antidiagonal duma matriz quadrada. Baseie-se no seguinte protoptipo
function [smd, sad] = dsums(A)
% This function computes the sums of the main and the antidiagonal
% of a square matrix
% A - input square matrix
% smd - sum of the main diagonal
% sad - sum of the antidiagonal
%Check if A is square
...
%Compute main diagonal sum
...
%Compute antidiagonal sum
...
Exerccio 34. Escreva uma funcao clsums que calcula as somas ao longo da linha e
u
coluna a que um dado elemento duma matriz pertence. E
lil recorrer `a funcao find().
Note que apenas devem ser calculadas as somas para a primeira ocorrencia do elemento
k. Desenvolva a funcao de acordo com as seguintes orientacoes
function [Cs,Ls] = clsums(A,k)
%This function computes the sum along line i and the along column j
% in matrix A for the first occurrence of k = Aij if it exists
% A - is the input matrix
% k - is the entry
% Cs - is the column sum
% Ls - is the line sum
% Both Cs and Ls must be empty if k is not in A
% Check if k is somewhere in A. Use find() to retrieve the line and column


4 FUNC
OES

11

% indexes
...
% Compute sums along line i and column j
...
Teste a funcao com varias matrizes confirmando quer os casos em que k existe em A quer
o contrario.

Exerccio 35. Complete a funcao seguinte. Trata-se da funcao getsubm que a partir
duma matriz de entrada A, extrai uma submatrix G(w w) centrada no elemento (i, j).
A dimensao w deve ser mpar e deve ser assegurado que os ndices da submatriz G sao
tambem ndices validos da matriz A. funcao calcula ainda os valores medio, maximo e
mnimo da submatriz G.
function [G,av,M,m] = getsubm(A,i,j,w)
% This function extracts a (w by W) submatrix of matrix A.
% The function also computes the mean, maximum and minimum values
% of the submatrix.
% A
- the input matrix
% i,j - coordinates of the center of the submatrix
% w
- width of the submatrix. w must be odd
% G
- the submatrix
% av - mean of G
% M
- max. of G
% m
- min. of G
% Check if w is odd
if rem(w,2)~= 1
error(submatrix size must be odd...)
end
% Check if submatrix is inside A
...
G = A(...,...);
av = ...;
M = ...;
m = ...;
Teste a funcao com, por exemplo, um quadrado magico de dimensao 10. Extraia submatrizes com varias dimensoes e verifique casos em que e impossvel definir a submatriz
uma vez que os respectivos ndices nao sao compatveis com as dimensoes da matriz de
entrada.


4 FUNC
OES

12

Exerccio 36. A denominada funcao de Weierstrass e apresentada frequentemente como


um caso patologico no ambito das funcoes reais de variavel real ja que se trata duma
funcao sempre contnua e nunca diferenciavel. Sejam entao 0 < a < 1, e b um inteiro
mpar tal que a b > 1 + 3/2. A funcao de Weierstrass define-se como
f (x) =

= an cos(bn x)

n=0

Escreva uma funcao weierstrass que calcule esta funcao para um dado intervalo x, e para
os parametros a, b, N em que N e o no de termos para calcular a serie. Escreva a funcao
de acordo com o prototipo abaixo. Note que deve tambem incluir uma subfuncao para
verificar a validade dos parametros a e b.

function f = weierstrass(x,a,b,N)
% Computes the weierstrass function for a domain x
% x
- input vector defining the domian of f
% a,b - function parameters: ab > 1+3pi/2
% N
- number of terms
% Check if a,b are legal parameters
% Use the subfunction "check_ab"
...
% Use a for cycle to perform the sum
...
function valid = check_ab(a,b)
if rem(b,2)~=1
disp(b must an odd integer...)
valid = 0;
elseif (a <= 0) | (a >= 1)
disp(0 < a < 1 required ...)
valid = 0;
elseif (a*b) <= (1 + 3*pi/2)
disp(a*b > 1 + 3*pi/2 ... required...)
valid = 0
else
valid = 1
end
Teste a funcao com varios parametros a, b, para x [0.5, 0.5], com 500 pontos e N =
100. Verifique se para a = 0.7 e b = 9 obtem o grafico da figura


4 FUNC
OES

13

Figura 4.1: Segmento da funcao de Weierstrass para a = 0.7 e b = 9.

Exerccio 37. Escreva uma funcao movavg que implemente um filtro de media movel
sobre um determinado conjunto deo dados. Isto se tivermos um vector de dados f com
N elementos, a aplicacao dum filtro de media movel de largura k resulta num vector g tal
que

gn =

fnbk/2c + fn + fn+bk/2c
, n = bk/2c + 1, . . . , N bk/2c 1, g1 = f1 , gN = fN
k

Note que bk/2c e o mesmo que floor(k/2). Recorra a um ciclo for para calcular o vector
g e certifique-se a lagura k do filtro e sempre mpar. Sugere-se o seguinte prototipo

function g = movavg(f,k)
% This function implements a moving average filter of width k over the
% data vector f.
% f - input vector
% k - width of the moving average filter
% g - filtered version of f
% check if width is odd
...
% Compute g with a for cycle
...


4 FUNC
OES

14

Teste a funcao com um vector f obtido no exerccio 36 e com k = 7, 9, 11. Elabore os


graficos sobrepostos de f e g para cada um dos k. Verifique o efeito de suavizacao.

Figura 4.2: Filtro de media movel de largura 7 aplicado a` funcao de Weierstrass obtida
no exerccio 36