Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade de Cabo Verde ***** Análise Numérica - Guia Complementar de Matlab/Octave Obs.: Os exercícios que constam neste material são de treinamento para a disciplina de AN. Poderão ser úteis no decorrer da disciplina. 1. A partir do software octave1 crie uma pasta no seu diretório de trabalho com um nome à escolha (a) Mude para a pasta pelo menu ou usando o comando cd. (b) Crie um .m-file a partir do command window2 com as iniciais do seu nome (e.g. para Obac Edrev ponha open oe.m ou edit oe.m). (c) Abra o .m-file e escreva fprintf(’AN 2018_2019’). Compile o programa pelo ou menu do command window. 2. Simule os seguintes resultados no caderno, antes de usar no computador 3. Bases conversão/arredondamentos (e mais!): (a) explore as funções: dec2bin, bin2dec, dec2hex floor, round, mod, sign, abs, fix ... Sugestão: use o help (e.g. help dec2bin) (b) Converta para a base binária: 1234. Converta para a base 10: (111011)2 . 4. Depois de cada um dos seguintes comandos introduza x = 3.1415−5 1ou matlab 2Janela de comandos 1 (a) � format rat. (b) � format short. (c) � format long. (d) � format short e. (e) � format long e. 5. Introduza as variáveis a = 9 e y = 26 e calcule a5 − y, 2ay e tan (ay) . 6. (Análise/manipulação das variáveis) no command window. (a) Digite who. (b) Digite whos. (c) Digite clc para limpar a tela. (d) Apague da memória uma das variáveis como o comando clear. (e) Apague da memória todas variáveis como o comando clear all. 7. Introduza vetores usando os seguintes vetores u = [ 4 −2 1 ] e v = 1 4 −1 (a) Determine ut . (b) Calcule ut + v. (c) Calcule u · v. (d) Digite size(v), sort(u) e length(v). Use o Help para cada função. 8. Introduza as seguintes matrizes: A = 1 −1 0 1 2 −1 2 1 1 , b = [ 1 0 2 ] t . (a) Digite eye(3). (b) Digite B=A^-1. (c) Digite A*B. (d) Resolva o sistema Ax = B. (e) Escreva as expressões para: somar os elementos da linha 2 da matriz A; elevar todos elementos da coluna dois ao quadrado; calcular a média, o máximo e menor elemento da alinha 3 e calcular o traço e o determinante da matriz A. 9. (randn()) Vetores/matrizes: (a) Gere um vetor x com números entre 0 e 1 a uma distancia de 0.1 (b) Gere um vetor y com números 10 números entre 0 e 1. (c) Gere uma matriz com entradas unitárias e de dimensão: 4, 5 e 6. (d) Gere um vetor aleatório de 3x3. 10. Sistema FP (a) Explore as seguintes variáveis fixas: realmax, realmin e eps. Qual o significado? 2 (b) Seja a = 3.1e200 e y = 2.2e200 calcule ay. Comente. (c) a = 3.1e − 200 e y = 2.2e − 200 calcule ay. Comente. 11. Sobre gráficos em matlab/octave: (a) Para fazer um gráfico de uma função (e.g. y = x2) com −2 ≤ x ≤ 2 calculamos o valor da função num número suficiente grande de pontos no intervalo, depois esses pontos são unidos por segmentos. i. Gere um vetor x com 10 elementos equidistantes no intervalo dado usando a função lins- pace(). Calcule y pela formula3 dada ii. Efectue o gráfico. iii. Coloque os labels no gráfico fazendo xlabel(’(x)’) e ylabel(’(y)’) title(’y=x^2’) Coloque o titulo fazendo iv. Mude a cor e o estilo da linha do gráfico. M-Files, arrays, funções e Programas 12. Escreva um .m-script para gerar as seguintes sequências (a) 9, 4, 1, -3, -7 (b) 0.00001, 0.0001, 0.001, 0.01, 0.1 (c) Todos os números pares entre 2 e 100. 13. Escreva um programa que retorna soma todos os inteiros entre 1 e 100. Modifique o programa para uma função que dado um número inteiro positivo qualquer retorna a sua pretendida. 14. Escreva um programa para gerar uma matriz quadrada A = [ aij ] de ordem 3 que satisfaz a condição dada (a) aij = 0 se i , j (b) aij = 0 se i > j (c) aij = 0 se i < j (d) aij = { 1, |i − j| > 1 −1, |i − j| ≤ 1 . 15. Generalize o exercício anterior para qualquer n inteiro positivo, maior que 1, introduzido pelo utili- zador. 16. Seja A uma matriz quadrada de ordem n, sobre um corpo F. Diz-se que A é involuntório sse A2 = In. Verifique se as matrizes seguintes são involuntórios. (a) A = −112 − 39 4 − 39 4 1 52 3 2 2 3 4 (b) B = −112 − 39 4 − 39 4 1 52 3 2 2 3 4 t 3No caso escreve-se y=x.^2 sendo o ”.” indispensável. 3 17. Investigue se a Matriz A = 0 0 0 10 2 −1 1 4 −2 é Nilpotente4 e determine a ordem. (Sugestão: faça um ciclo!) 18. Considere a matiz da alínea anterior e determine: A (1|1) , A (1|1, 2) e A [1, 2|1, 3] . 19. Dada matriz A = 1 0 1 2 3 4 −1 1 1 de B = 1 2 −1 . Calcule |A| e A−1. Determine também a forma escalonada reduzida de [A|B] a resolva o sistema AX = B 20. Escreva uma função para determinar o ângulo entre dois vetores de R3. Para tal, pode-se usar a relação cos (θ) = x · y ‖x‖ ‖y‖ (0.1) onde θ é o ângulo entre os dois vectores, x · y o seu produto escalar. Para determinar θ sabendo o seu co-seno, pode usar a função acos(). 21. Crie uma função que permite calcular área de uma circunferência usando o input() para ler o raio e fprintf() (ou disp()) para apresentar o output. 22. O seguinte algoritmo compara dois valores em x e y e coloca em m o maior deles ler x, y se x > y então m← x senão m← y fim Escreva um programa em matlab/octave que: (a) Dados três valores, x, y e z coloque em m o maior deles. (b) Dados três valores, x, y e z coloque em m1 o maior deles e em m2 o menor deles. (c) Dados três valores, x, y e z coloque em m o valor do meio. 23. O factorial de um número natural n é n! = 1 × 2 × 3 × · · · × n (e.g. 3! = 1 × 2 × 3.) (a) Escreva uma programa para calcular o fatorial de um número n ≥ 1 (b) Usando a função cumprod tabele o fatorial de números entre 1 e 10. 24. Escreva um .m-script em matlab/octave que calcule a resistência elétrica RE equivalente a um circuito em paralelo de resistências R1, R2, . . . , Rn RE = 1( 1 R1 + 1 R2 + · · · + 1 Rn ) (0.2) Os valores Ri > 0 devem ser lidos pelo teclado. 25. Um objeto com peso 100 kg deve ser suspenso de uma haste horizontal de 2.5 cm (com peso despre- zável). A haste está fixa na parede e é suportada por uma cabo de 2 m (figura abaixo) . 4Veja apontamentos de ALGA I 4 A tensão T no cabo é dada pela equação A tensão T no cabo é dada pela equação T = W × g × l × lc d √ l2c − 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 onde fixamos o cabo. Escreva um programa em matlab/octave que determine a distância d que minimiza a tensão no cabo. O programa deve calcular a tensão para d de 0.5 m por incrementos de 5 cm para localizar a posição da tensão mínima. 26. Em engenharia eletrotécnica é comum exprimir a relação entre dois valores de potência em decibéis, ou dB, dada pela equação dB = 10 log10 ( P2 P1 ) (0.3) onde P2 é o valor de potência a ser medido e P1 é um valor entendido com referência. Utilizando o valor de referência convencional (1 watt), escreva um programa que dado o valor de P2 o converta em dB. 27. Numa conta a prazo com a capitalização automática o valor do juro é acumulado ao capital inicial no final de cada período. Assim, o capital acumulado ao fim de N períodos é dado pela equação Capital final = Capital inicial × (1 + t)N, 0 < t < 1. (0.4) (e.g. com um capital inicial de 1000 contos e uma taxa anual de 5 % o capital acumulado ao fim de dois anos serão de 1000 × (1 + 0.05)2 = 1102.5 contos). Escreva um programa que dados capital inicial Ci, a taxa de juro anual t e o número de anos N calcule o capital acumulado Cf no final de N anos. 28. Em álgebra linear é possível definir várias normas de matrizes que traduzem o ’tamanho’ de uma matriz de forma análoga a um vetpor. O matlab/octave dispõe da função norm() que permite calcular as normas abaixo para uma matriz do tipo N × M (a) a norma de Frobenius: ‖A‖F = √√√√©« N∑ i=1 M∑ a2ij j=1 ª®¬. (b) a norma-1: ‖A‖1 = max 1≤ j≤M M∑ i=1 ��aij�� . (c) a norma-∞: ‖A‖∞ =max 1≤i≤N N∑ j=1 ��aij�� . Sem recurso a função norm(), escreva um programa paracalcular as normas. 5 29. Escreva um programa que leia os valores dos três ângulos de um triângulo e o classifique como equilátero (três ângulos iguais), isósceles (dois ângulos iguais) ou escaleno (caso contrário). Além disso, se algum dos ângulos for igual a 90 o programa deve ainda indicar que o triângulo é rectângulo. 30. Escreva um programa que leia as coordenadas (x, y) dum ponto no plano e indique em que quadrante se encontra o Ponto (1.o, 2.o, 3.o ou 4.o). 31. Escreva um programa que dado a uma aproximação (aprox) de x, e o valor exato e calcule o erro absoluto e o erro relativo cometido na aproximação. Modifique o programa de modo que se o erro absoluto for maior que 0.5 × 10−2 ou erro relativo for maior que 5 × 10−3 imprimir uma mensagem de erro. 32. Dada uma função real de variável real f (x) . Se f for continua em [a, b] , e f (a) × f (b) < 0, pelo Teorema de Bolzano, então f admite pelo menos um zero no intervalo5. (a) Escreva um programa em matlab/octave que dado uma função f (x) e um intervalo onde ela é continua, verificar se a função admite uma raíz. (b) Uma técnica para verificar se existe um zero num dado intervalo [a, b] é o de varrimento6 descrito conforme procedimento i. definir passo h = b−an ii. calcular f nos pontos xi = a + ih, i = 0, 1, . . . , n iii. se f (xi) f (xi+1) < 0 então ∃ zero de f em [xi, xi+1] . Programe a técnica do Varrimento. (c) Teste os programas tomando: i. f (x) = e−x − x, I = [0, 1] . ii. f (x) = ex − 1, I = [−1, 9] . iii. f (x) = x2 − 1, I = [0, 2] . (d) Use a função fzero() para determinar o zero das funções anteriores no intervalo dado e visualize os gráficos no intervalo dado. FIM 5Atente-se que o Teorema não garante a unicidade. Se para além disso, a função for monótona crescente ou decrescente no intervalo pode-se concluir a unicidade... 6... a sensibilidade está constrita ao h. 6
Compartilhar