Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ACE 2007/2008
Parte I
Tópicos:
• Indexação numérica
• Indexação lógica
• Polinómios
• Sistemas de Equações
Sol:. EX1
Exercı́cio 2. Gere um vector x com 200 pontos tal que x ∈ [−π, π] e calcule
P50
S = exp(x2i−1 )
i=1
Sol:. EX2
P com uma permutação aleatória dos 500 primeiros inteiros. Extraia os primeiros 200
elementos de P e coloque-os numa matriz M (20 × 10). Calcule a soma de todos os
elementos da matriz que pertencem às colunas pares
Sol:. EX3
Sol:. EX4
(−1)n+1
Exercı́cio 5. Gere a sequência un = n para n = 1, 2, . . . , 100. Calcule o
produtório P = 100
Q
n=1 exp(un )
Sol:. EX5
0 1 1 0
Exercı́cio 6. Crie a matriz binária A = . De seguida, a partir de A crie de
0 0 1 1
forma eficiente (sem explicitar individualmente os seus elementos) a matriz B Nota: tire
partido da simetria de B relativamente a um eixo vertical virtual entre a 4a e a 5a coluna
0 1 1 0 0 1 1 0
B = 0 0 1 1 1 1 0 0
0 0 0 0 1 1 1 1
Obtenha de forma eficiente um vector com o na de “0” de cada coluna de B.
Sol:. EX6
Exercı́cio 7. Gere uma matriz, A, com 4 linhas e 8 colunas e com os valores abaixo
indicados (não utilize a definição exaustiva da matriz). A partir de A crie ainda as
matrizes M 1 e M 2.
4
1 0 1 1 1 0 0 0
0 0 1 1 0 1 0 0
1 0 0 0 1 1 1 1 0
1 0 0
0
0 1 0
0 1 0 0 1 1 1 1 0 0 0 0
M 2 = 0 0 0 1
A=
0
M1 =
0 1 0 0 0 0 0 0
0 1 1
1
1 0 0
0 0 0 1 0 0 0 0 1
0 1 1
1
1 0 0
0 0 0 0 1 1 0 0
0 1 0 0 1 1 0 0
Sol:. EX7
Exercı́cio 8. Crie uma matriz A de 5 linhas e 10 colunas com os valores que abaixo se
indicam. A partir da matriz A, crie a matriz B com 10 linhas e 5 colunas da forma que
se sugere.
0 25 . . . 225 0 1 ... 4
5 30 . . . 230
B = 5 6 ... 9
A= . . . . . . . . . . . . . . . . . . . . . . . .
20 45 . . . 245 45 46 . . . 49
Sol:. EX8
Exercı́cio 9. Comece por gerar um vector “NImp” com os primeiros 250 inteiros
ı́mpares e um vector “Npar” com os primeiros 250 inteiros pares. Aproveite estes
vectores para, com indexação vectorizada, gerar os primeiros 500 termos da sequência un
de acordo com a seguinte regra
( 1 1
√
n+3
− √n+4 se n ı́mpar
un =
√1 1
− √n+5 se n par
n+4
100
P
Calcule S = un .
n=1
Sol:. EX9
Exercı́cio 10. Gere um vector “NImp” com os primeiros 500 no s ı́mpares e um vector
“NPar” com os 500 no s pares. Aproveite estes vectores para gerar os primeiros 1000
termos da sequência un de acordo com a seguinte regra
(1
4 se n ı́mpar
un = n 1 n
1+ n se n par
imaginária. Sugere-se que use indexação vectorizada quer para gerar un quer para os
5
cálculos subsequentes.
Sol:. EX10. Nota: Para uma avaliação crı́tica do cálculo da parte real de (u1000 )i S deve
ter-se em conta que para n suficientemente grande
1 n
1+ n ≈e = 2.7183... e ainda que S≈π
Exercı́cio 11. Gere a seguinte função do tempo B(t) usando um passo de amostragem
de 0.03 s
Sol:. EX11
Exercı́cio 12. Gere a seguinte função do tempo B(t) usando um passo de amostragem
de 0.01s
πt2
sin( )
B(t) = exp(t 3 ), t ∈ [0, 4] s
Produza o gráfico de B(t) com linha azul, as abcissas devem restringir-se ao intervalo
[1, 4] e as ordenadas ao intervalo [0, 40]. Numa outra figura produza de novo o gráfico de
B(t) mas de acordo com as seguintes especificações: se B(t) < 0.5max(B(t)) devem
usar-se pontos a azul senão os pontos devem ser a vermelho. Documente devidamente os
gráficos.
Sol:. EX12
ln(1 + |t|)
B(t) = , t ∈ [−15, 15]
1 + exp(0.5|t|)
Produza o gráfico de B(t) a azul. Os eixos devem confinar-se nos intervalos [−10, 10]
para as abcissas e as ordenadas no intervalo [0, 0.5]. Produza de seguida uma função
S(t) que é uma versão de B(t) tomada de 3 em 3 amostras. Sobreponha no gráfico
anterior, usando pequenos cı́rculos vermelhos, os pontos onde |S(t)| > 0.15 e |t| < 5.
Documente devidamente o gráfico
Sol:. EX13
6
Exercı́cio 14. Gere a seguinte função B(t) com passo de amostragem ∆t = 0.05:
exp(−0.5|t|)
B(t) = , t ∈ [−5, 5]
2sin(t2 )
Produza o gráfico de B(t) a azul. Os eixos devem confinar-se nos intervalos [−6, 6] para
as abcissas e [0, 1.5] para as ordenadas. Documente devidamente
P o gráfico. A área sob a
curva B(t) no intervalo [-3.5,3.5] pode aproximar-se por B(tk )∆t em que B(tk ) são os
pontos da função em que |t| < 3.5. Identifique por indexação lógica esses pontos,
sobreponha-os no gráfico anterior com pontos vermelhos e apresente uma estimativa
para área sob a curva nesse intervalo.
Sol:. EX14
Sol:. EX15
Exercı́cio 16. Considere uma equação do tipo p(x) = exp(−α). Calcule as raı́zes da
equação para p(x) = x3 − 4x2 + 1 e α = 1. Faça o gráfico (200 pontos) sobreposto de
p(x) e da recta y = exp(−α) no intervalo x ∈ [−1, 4.5]. Mostre, com pequenos cı́rculos
vermelhos, que as raı́zes da equação p(x) = exp(−α) se situam exactamente nas
intersecções de p(x) com a recta y = exp(−α). Documente devidamente o gráfico
Sol:. EX16
Sol:. EX17
Exercı́cio 18. Considere o polinómio p(x) = 2x3 − 3x2 + x − 3. Calcule e faça o gráfico
com 500 pontos de p(x) para x ∈ [0, 2]. Calcule os valores máximo e mı́nimo de p(x) .
Defina um vector y como y = p(x) + 0.4(maxp(x) − minp(x) )N, em que N é um vector
aleatório gaussiano, de média nula e desvio padrão unitário. Calcule a percentagem de
7
Sol:. EX18
Exercı́cio 19. Considere p(x) = (x2 − 2x + 1)(x − 4) e q(x) = (x − 1)(x + 2)(x − 3).
Crie uma figura com 3 áreas gráficas dispostas verticalmente. Para x ∈ [2, 3] com 200
pontos, faça o gráfico de p(x) na 1a área gráfica, e de q(x) na 2a área gráfica. Use a 3a
área gráfica para obter graficamente a solução da equação p(x) = q(x) no intervalo
considerado. Adicione as legendas adequadas.
Sol:. EX19
x = a(3cost + cos3t)
y = a(3sint + sin3t)
Use a notação de variável complexa z = x + iy para obter o gráfico da curva com a = 2 e
t ∈ [0, 2π] com 400 pontos. Note que a razão de aspecto do gráfico deve ser unitária.
Repita os cálculos agora com a = 4 e guarde os resultados num vector w. Mostre, sem
recorrer ao comando hold on, como pode obter o gráfico sobreposto das 2 nefróides.
Adicione as legendas adequadas.
Sol:. EX20
Sol:. EX21
%Exercício 1
%
n = 1:20; % Cria n
un = (1/2).^n - (1./n).^2; % Calcula un
S = sum(un(1:10)) % Calcula a soma dos 10 primeiros
elementos
S =
-0.5507
%Exercício 2
%
x = linspace(-pi,pi,200);
% ou x = -pi:2*pi/199:pi;
n = 1:50;
% os termos de x envolvidos na soma soma são
% x(1), x(3), x(5), ..., x(99)
S = sum(exp(x(2*n-1)))
S =
14.9223
S =
26915
% Alternativa;
A = zeros(4); % Cria uma matriz 4x4
A(:) = 2.^(0:15); % Os elementos dessa matriz tomam valores 2^n
A = A';
% Alternativa
% Replicação do 2 em 4x4 seguido de exponenciação ponto a ponto
A = repmat(2,4,4).^reshape(0:15,4,4);
A = A'
A =
1 2 4 8
16 32 64 128
256 512 1024 2048
4096 8192 16384 32768
P =
1.9901
A =
0 1 1 0
0 0 1 1
B =
0 1 1 0 0 1 1 0
0 0 1 1 1 1 0 0
0 0 0 0 1 1 1 1
% M1 por reshape
M1 = reshape(A,8,4)
% M2 por transposição
M2 = A'
A =
1 0 0 0 1 1 1 1
0 1 0 0 1 1 1 1
0 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0
M1 =
1 0 1 1
0 0 1 1
0 1 0 0
0 0 0 0
0 0 1 1
1 0 1 1
0 0 0 0
0 1 0 0
M2 =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 1 0 0
1 1 0 0
1 1 0 0
1 1 0 0
% Exercício 8
%
% Matriz A por reshape
A = 0:5:245;
A = reshape(A,5,10)
% B por transposição de A/5
B = (A/5)'
A =
B =
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
25 26 27 28 29
30 31 32 33 34
35 36 37 38 39
40 41 42 43 44
45 46 47 48 49
% Soma
S = sum(Un(1:100))
S =
0.3801
% Soma
S = (90*sum(Un(NImp))).^(1/4)
U1000 = Un(1000)
U1000_iS = Un(end).^(i*S)
S =
3.0913
U1000 =
2.7169
U1000_iS =
-0.9987 + 0.0518i
% Noutra figura
figure
% Índices lógicos
L = Bt < 0.5*max(Bt);
% Note-se a utilização do operador ~ para efectuar a negação de L
plot(t(L),Bt(L),'.b',t(~L),Bt(~L),'.r')
xlabel('t'), ylabel('B(t)'), grid;
Published with MATLAB® 7.3
% Exercício 13
%
% Definição de t e B(t)
t = linspace(-15,15,400);
Bt = log(1+abs(t))./(1+exp(0.5*abs(t)));
plot(t,Bt,'b')
axis([-10 10 0 0.5])
xlabel('t'), ylabel('B(t)'), grid;
hold on
% Definição de S(t) por subamostragem
newt = t(1:3:end);
St = Bt(1:3:end);
% Índices Lógicos
L = (abs(newt) < 5) & (abs(St) > 0.15);
plot(newt(L),St(L),'.r')
hold off
% Exercício 14
%
% Definição de t e B(t)
Deltat = 0.05;
t = -5:Deltat:5;
Bt = exp(-0.5*abs(t))./(2.^(sin(t.^2)));
plot(t,Bt,'b')
axis([-6 6 0 1.5])
xlabel('t'), ylabel('B(t)'), grid;
% Índices lógicos
L = abs(t) < 3.5;
Btk = Bt(L);
Area = sum(Btk)*Deltat
hold on
plot(t(L),Btk,'.r')
hold off
Area =
3.0283
Published with MATLAB® 7.3
% Exercício 15
%
% Coefs do polinómio
coefs = [(1+2*i) (1-2*i) 0 0 -1];
Rts = roots(coefs)
% Gráfico das raízes complexas relativamente ao círculo unitário
W = linspace(0,2*pi,200);
z = exp(W*i);
plot(z), axis equal, axis([-1.5 1.5 -1.5 1.5]), grid
title('Raízes do polinómio (1+2i)z^4 + (1-2i)z^3 - 1')
hold on
% Note-se que Rts é um vector complexo
plot(Rts,'*r')
hold off
% Cálculo de p(z)
Pz = polyval(coefs,z);
figure
subplot(2,1,1)
plot(W,real(Pz))
xlabel('W'), ylabel('real(P(z))'), grid
subplot(2,1,2)
plot(W,imag(Pz))
xlabel('W'), ylabel('imag(P(z))'), grid
Rts =
0.5264 + 1.0597i
0.8271 + 0.0471i
-0.6170 + 0.3305i
-0.1366 - 0.6373i
Published with MATLAB® 7.3
% Exercício 16
%
% Coefs do polinómio
alpha = 1;
COEFS = [1 -4 0 1];
% Para calcular as raízes de p(x)=exp(-alpha) temos de fazer p(x)-
exp(-alpha)=0
% isto é o novo polinómio tem coefs:
NCOEFS = [1 -4 0 1-exp(-alpha)];
Rts = roots(NCOEFS)
Rts =
3.9597
0.4202
-0.3799
Published with MATLAB® 7.3
% Exercício 17
%
% 1ª Sol.
% Estamos perante um produto de polinómios h(x).q(x)
% Q(x) está na forma factorizada e tem uma raíz dupla em 1
rQ = [1 1];
Qcoefs = poly(rQ)
Hcoefs = [3 -2 0 3]
Pcoefs = conv(Hcoefs,Qcoefs)
% Raízes de P
rP = roots(Pcoefs)
% Cálculo de P(x)
x = linspace(-1.25,1.5,200);
Px = polyval(Pcoefs,x);
plot(x,Px,'b'), xlabel('x'), ylabel('P(x)'), grid on
Qcoefs =
1 -2 1
Hcoefs =
3 -2 0 3
Pcoefs =
3 -8 7 1 -6 3
rP =
-0.8201
0.7434 + 0.8165i
0.7434 - 0.8165i
1.0000
1.0000
rPreais =
-0.8201
1.0000
1.0000
Published with MATLAB® 7.3
% Exercício 18
%
% Coefs do polinómio
COEFS = [2 -3 1 -3];
x = linspace(0,2,500);
Px = polyval(COEFS,x);
plot(x,Px), xlabel('x'), ylabel('P(x)'), grid on
minPx = min(Px)
maxPx = max(Px)
% Definição de y
y = Px + 0.4*(maxPx - minPx)*randn(size(x));
minPx =
-3.0962
maxPx =
PercCasos =
3.4000
Published with MATLAB® 7.3
% Exercício 19
%
RootsP = [roots([1 -2 1])' 4];
Pcoefs = poly(RootsP)
RootsQ = [1 -2 3];
Qcoefs = poly(RootsQ)
x = linspace(2,3,200);
subplot(3,1,1)
Px = polyval(Pcoefs,x);
plot(x,Px,'b'), xlabel('x'), ylabel('P(x)'), grid on
subplot(3,1,2)
Qx = polyval(Qcoefs,x);
plot(x,Qx), xlabel('x'), ylabel('Q(x)'), grid on
subplot(3,1,3)
plot(x,[Px(:) Qx(:)]),xlabel('x'), legend('P(x)','Q(x)'), grid on
Pcoefs =
1 -6 9 -4
Qcoefs =
1 -2 -5 6
no intervalo [2,3]
ans =
2.5000
Published with MATLAB® 7.3
% Exercício 20
%
%
a = 2;
t = linspace(0,2*pi,400);
x = a*(3*cos(t)+cos(3*t));
y = a*(3*sin(t)+sin(3*t));
z = x+y*i;
plot(z), axis equal, grid on, title('Nefroide, a=2')
xlabel('x'), ylabel('y')
figure
a = 4;
x = a*(3*cos(t)+cos(3*t));
y = a*(3*sin(t)+sin(3*t));
w = x+y*i;
plot([z(:) w(:)]), axis equal, grid on, title('Nefroides')
xlabel('x'), ylabel('y')
legend('a = 2', 'a = 4')
Published with MATLAB® 7.3
% Exercício 21
%
% Elaboração do sistema
A = [1 2 1; 3 2 1; 4 3 -2]
b = [8 10 4]'
% Solução
U = A\b
Z0 = U(3);
A =
1 2 1
3 2 1
4 3 -2
b =
8
10
4
U =
1.0000
2.0000
3.0000