Turma 1 Questão 1: designam-se por pontos de sela de uma matriz, os elementos dessa matriz que são, simultaneamente, o maior elemento da linha e o menor da coluna, ou viceversa. Por exemplo, na matriz 1 2 3 4 5 10 9 8 10 11 6 7 8 7 7 1 1 1 1 1 são pontos sela o 1 (toda a 4ª linha) e o 8 (segunda linha, terceira coluna). Note que apenas nos interessa o valor 1 e o valor 8, não a sua localização na matriz. Escreva um programa em Matlab que leia um array A e determine os pontos sela. Resposta 1: A=input('matriz= '); max_linhas=max(A,[],2); min_colunas=min(A,[],1); intersect(max_linhas,min_colunas) min_linhas=min(A,[],2); max_colunas=max(A,[],1); intersect(min_linhas,max_colunas) Questão 2: As funções trigonométricas Seno e Coseno podem ser calculadas por intermédio das seguintes séries de potências: x3 x5 x7 x 2i 1 i sin( x ) x ( 1) 3! 5! 7! (2i 1)! i 0 2i x2 x4 x6 i x cos( x ) 1 ( 1) 2! 4! 6! (2i )! i 0 Escreva um programa em Matlab que leia um valor de x e calcule uma aproximação a sin( x ) e a cos( x) utilizando os 10 primeiros termos das séries acima. Como verificação, o programa deve imprimir o valor que obtém para sin 2 ( x) cos2 ( x) Resposta 2: x=input('x= '); N=10; i=0:N-1; fact=cumprod(1:2*N-1); seno=sum( (-1).^i .* x.^(2*i+1) coseno=sum( (-1).^i .* x.^(2*i) disp(seno^2+coseno^2) ./ ./ fact(1:2:2*N-1) ); [1 fact(2:2:2*N-1)] ); nota: o exercício 4.11 da 5ª aula é semelhante a este. A sua resolução está disponibilizada na 6ª aula e estava disponível para consulta durante o mini-teste. Questão 3: Uma série de medidas ao longo do tempo pode ser "suavizada" com o método das médias móveis. Por exemplo, medidas diárias do caudal de um rio deram: [1.35 2.43 3.27 8.15 6.21 7.49 6.31 12.22 61.17 13.25] Como podem haver particularidades num ou noutro dia (descargas de barragens, etc.) que confundem a avaliação da evolução global, pode ser interessante substituir cada valor pela média com os seus vizinhos imediatos (excepto os valores extremos) [1.35 2.35 4.62 5.88 7.28 6.67 8.67 26.57 28.88 13.25] Se xi for um elemento da série original (com N elementos) e yi a série "suavizada", a relação será yi ( xi 1 xi xi 1 ) / 3 1 i N yi xi i 1 i N Escreva um programa em Matlab que leia um array de medidas e determine e escreva o array obtido aplicando as médias móveis. Resposta 3: x=input('serie='); y=[x(1) (x(1:end-2)+x(2:end-1)+x(3:end))/3 x(end)] Questão 4: A Páscoa (festa móvel do cristianismo) é celebrada no primeiro domingo após a primeira lua cheia a partir de 21 de Março. Um algoritmo popular para determinar essa data no ano Y é: GMOD(Y,19)+1 (número de ouro) CINT(Y/100)+1 (século) XINT(3C/4)-12 (1ª correcção) ZINT((8C+5)/25)-5 (2ª correcção) DINT(5Y/4)-X-10 (domingo) EMOD(11G+20+Z-X,30) Se E=25 e G>11, ou se E=24, então EE+1 (a epacta da lua cheia) N44-E Se N<21 então NN+30 (lua cheia) NN+7-MOD(D+N,7) (avançar para domingo) Se N>31 a data é (N-31) de Abril; senão a data é N de Março Escreva um programa em Matlab que leia o ano e escreva a data do domingo de Páscoa. Resposta 4: Y=input('ano? '); Gmod(Y,19)+1; C=fix(Y/100)+1; X=fix(3*C/4)-12; Z=fix((8*C+5)/25)-5; D=fix(5*Y/4)-X-10; E=mod(11*G+20+Z-X,30); if (E==25 & G>11) | E==24 , EE+1; end N=44-E; if N<21 , NN+30; end N=N+7-mod(D+N,7); if N>31 disp(N-31),disp(' de Abril'); else disp(N),disp(' de Março'); end