11 4. Arrays unidimensionais 4 Arrays unidimensionais 4.1 Quais as instruções Matlab para gerar as seguintes sequências: (a) 0.00001, 0.00010, 0.00100, 0.01000, 0.10000 (b) 9, 4, 1, −3, −7 (c) Um milhão de números igualmente espaçados entre 1 e 2 (d) 9, 5, 1, −3, −7 4.2 Programe o Matlab para escrever a tabuada de um qualquer inteiro dado. 4.3 Para converter uma temperatura de graus Celsius para graus Fahrenheit podemos usar a relação TF = (1.8 × TC + 32), onde TC é a temperatura em graus Celsius e TF a temperatura em graus Fahrenheit. Escreva um programa para que escreva uma tabela de conversão de temperatura desde 0◦ C até 100◦ C com intervalos de 10◦ C . 4.4 O factorial dum número natural n é n! = 1 × 2 × 3 × · · · × n. Por exemplo: 5! = 1 × 2 × 3 × 4 × 5 = 120. Note ainda que (por convenção) 0! = 1! = 1. (a) Escreva uma instrução em Matlab que calcule o factorial de um número n ≥ 0 dado. (b) Escreva uma instrução em Matlab que tabela a função factorial de 0 até 15. Sugestão: use a função cumprod do Matlab. ¤ 4.5 Um número natural n diz-se triangular se n = 1 + 2 + · · · + k para algum k ∈ N. Exemplos: 6 é triangular porque 6 = 1 + 2 + 3, mas 5 não é triangular (porquê. . . ?). (a) Escreva um programa em Matlab que tabele todos os número triangulares menores que 100. (b) Escreva um outro programa que leia um número n natural e diga se é triangular ou não. Sugestão: use as funções cumsum e roots do Matlab. 4.6 Um número inteiro diz-se um quadrado perfeito se é o quadrado de um outro inteiro. Por exemplo: 25 é um quadrado perfeito porque 25 = 52 . (a) Escreva uma instrução que liste os inteiros entre 1 e 100 que não são quadrados perfeitos. Sugestão: use a função setdi do Matlab. (b) Dado um inteiro, como vericar se ele é um quadrado perfeito? 12 FEUP Licenciatura em Eng. Civil Programação e Computadores 4.7 Escreva uma instrução Matlab que, partindo dum array unidimensional x, calcule: (a) a média aritmética = x1 +x2 +···+xN N = 1 N PN xi ³Q N i=1 (b) a média geométrica = (x1 · x2 · · · xN )1/N = i=1 xi ´1/N . (c) a média harmónica = N/ (1/x1 + 1/x2 + · · · + 1/xN ) = N/ r P PN 2 2 N N i=1 xi −( i=1 xi ) (d) o desvio padrão = N (N −1) Sugestão: use a função ³P N i=1 ´ 1/xi . length do Matlab. 4.8 Qual a instrução Matlab que permite determinar a semi-soma entre o maior e menor elementos dum array? ¤ 4.9 Na disciplina de Programação Transcendental I a nota nal é dada em função dos trabalhos realizados ao longo do ano segundo este critério: desprezando a pior nota, faz-se a média aritmética das restantes. Por exemplo: com as notas 10, 11, 7 e 9, a nota nal será 10 (exactamente). Escreva um programa em Matlab que leia uma sequência de notas (inteiros entre 0 e 20) e calcule a nota nal correspondente. ¤ 4.10 Escreva um programa em Matlab que calcula o valor da resistência eléctrica RE equivalente a um circuito em paralelo de resistências R1 , R2 , . . . , RN : RE = ³ 1 1 R1 + 1 R2 + ··· + 1 RN ´ O programa deve ler os valores de resistências Ri > 0 e escrever a resistência equivalente RE . ¤ 4.11 Sabendo que ∞ X 1 1 1 π = 1 − + − ··· = (−1)i 4 3 5 2i + 1 i=0 escreva um programa em Matlab que calcule uma aproximação a π somando os termos da série acima até que o seu valor absoluto seja < 10−5 . 4.12 Em Matlab as funções trigonométricas operam sempre com ângulos em radianos. Para operar com graus é necessário converter o argumento primeiro para radianos. (a) Escreva um programa que tabele os valores de senos e cosenos para argumentos de 0◦ até 45◦ por intervalos de 1o . (b) Modique o programa anterior para tabelar o valor da tangente mas entre 0◦ e 1 ◦ ). 15◦ por intervalos de 150 (recorde que 10 = 60 13 4. Arrays unidimensionais ¤ 4.13 Se lançarmos verticalmente um projéctil da superfície da Terra com velocidade v este atingirá uma altura máxima dada pela fórmula h= v 2 /(2g) 1 − v 2 /(2gR) se v 2 < 2gR e, caso contrário, afastar-se-á para sempre com velocidade nal p vf inal = v 2 − 2gR Nestas expressões R é o raio da Terra (aproximadamente 6.366 × 106 m) e g é a aceleração gravitacional à superfície (aproximadamente 9.80 m/s2 ). Escreva um programa em Matlab que tabele o resultado obtido (altura máxima ou velocidade nal, indicando de qual se trata) para valores de velocidade inicial v = 10 m/s, 100 m/s, . . . 106 m/s. 4.14 Um objecto com peso 100 kg deve ser suspenso de uma haste horizontal de 2.5 m (cujo peso é desprezável). A haste está xa na parede e é suportada por um cabo de 2 m (ver gura). A tensão T no cabo é dada pela equação T = W × g × l × lc p d lc2 − d2 onde W é o peso do objecto, g é a aceleração da gravidade, l é o comprimento da haste, lc é o comprimento do cabo e d é a distância na haste onde xamos o cabo. lc = 2 m l = 2.5 m d =? W = 100 Kg Escreva um programa em Matlab que determine a distância d que minimiza a tensão no cabo. O programa deve calcular a tensão para d de 0.50 m até 1.95 m por incrementos de 5 cm para localizar a posição de tensão mínima. Sugestão: use a função nd do Matlab.