Baixe o app para aproveitar ainda mais
Prévia do material em texto
UNIVERSIDADE FEDERAL DE UBERLAˆNDIA CAMPUS AVANC¸ADO DE PATOS DE MINAS FACULDADE DE ENGENHARIA ELE´TRICA II SEMANA ACADEˆMICA DE TELECOMUNICAC¸O˜ES - SATEL MATLAB PARA ENGENHARIA MARTA HELENA DE OLIVEIRA LIZANDRA NUNES OLIVEIRA 2016 Suma´rio 1 A´lgebra Matricial 2 1.1 Operac¸o˜es ba´sicas com varia´veis . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4 Polinoˆmios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2 Gra´ficos e Loops 12 2.1 Arquivos M . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2 Controle de fluxo: loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.3 Gra´ficos Bidimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.4 Gra´ficos Tridimensionais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 Ca´lculo Diferencial e Integral 18 4 Ca´lculo Nume´rico 21 4.1 Sistemas de equac¸o˜es na˜o lineares . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.2 Integrac¸a˜o Nume´rica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.3 Equac¸o˜es Diferenciais Ordina´rias . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5 Transformadas: Laplace e Fourier 28 5.1 Transformadas de Laplace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 5.2 Transformadas de Fourier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 5.2.1 Transformada Discreta de Fourier (TFD) . . . . . . . . . . . . . . . . . . 31 5.2.2 Transformada Ra´pida de Fourier . . . . . . . . . . . . . . . . . . . . . . 31 6 Aplicac¸a˜o para Engenharia Eletroˆnica e de Telecomunicac¸a˜o 33 Refereˆncias Bibliogra´ficas 34 Cap´ıtulo 1 A´lgebra Matricial O Matlab e´ uma linguagem de programac¸a˜o e uma ferramenta de visualizac¸a˜o de dados e oferece um vasto conjunto de recursos para resoluc¸a˜o de problemas nas a´reas de engenharia, cieˆncias, computac¸a˜o e matema´tica. 1.1 Operac¸o˜es ba´sicas com varia´veis Pode-se atribuir um valor a uma constante no MATLAB atrave´s de sequeˆncia de d´ıgitos, inteiros, decimais ou fraciona´rios, precedidos de sinais, positivo (+) ou negativo (−). Por exemplo, a) a = 2 b) b = −4.16 c) c = 3/4 Os operadores aritme´ticos ba´sicos para a manipulac¸a˜o de varia´veis esta˜o na tabela abaixo. Operac¸a˜o Comando soma + subtrac¸a˜o − multiplicac¸a˜o ∗ divisa˜o / potenciac¸a˜o ˆ raiz quadrada sqrt() Observac¸a˜o. Existem algumas func¸o˜es ba´sicas no MatLab que sa˜o importantes desde os primeiros passos para introduc¸a˜o ao MatLab. Algumas delas foram listadas na tabela. 2 3 Func¸a˜o Comando help Retorna informac¸o˜es necessa´rias para se utilizar determinada func¸a˜o (tendo seu nome escrito a` frente do help) clear all limpa as varia´veis que foram guardadas no workspace clc limpa todo o histo´rio da janela de comandos Exemplo 1.1 As operac¸o˜es aritme´ticas ba´sicas podem ser feitas atrave´s dos seguintes opera- dores: a) a+ b b) a− b c) a ∗ b d) a/b e) aˆ2 f) bˆ(1/2) g) sqrt(a) Exerc´ıcio 1.1 Resolva as expresso˜es alge´bricas abaixo para x = pi,y = 1.34 e z = 2.67 a) 2x2 + 1y 3 + √ z b) x.y.z0.75 x.z. √ x+y+z Exerc´ıcio 1.2 Para um cilindro de altura h = 8, 75 e raio = 2, 28 calcule: a) O comprimento do c´ırculo. b) A a´rea da base. c) A a´rea lateral. d) A a´rea total. e) O volume. 4 Exerc´ıcio 1.3 Para um cubo de aresta a = 1, 26 calcule: a) O valor da diagonal de cada face que compo˜e o cubo. b) O valor da a´rea de cada face. c) A a´rea total d) O volume. 1.2 Vetores Vetor e´ um segmento de reta orientado. Em diversas linguagens de programac¸a˜o e´ muito uti- lizado porque armazena um conjunto de valores que pode representar determinadas operac¸o˜es matema´ticas ou um fenoˆmeno f´ısico a ser processado, como um sinal card´ıaco por exemplo. Matematicamente tambe´m pode ser definido como sendo uma matriz linha. Sua representac¸a˜o gene´rica e´ dada da seguinte forma: v = [a11 a12 a13 a14 ... a1n] Ja´ a declarac¸a˜o no ambiente de programac¸a˜o do MatLab e´ feita assim: >> vetor1 = [1 2 3 4 5] vetor1 = 1 2 3 4 5 >> vetor2 = [1; 2; 3; 4; 5] vetor2 = 1 2 3 4 5 5 Como pode ser visto acima, um vetor carrega um conjunto de valores alocados em posic¸o˜es definidas. Para acessar um determinado valor que esta´ contido no vetor basta digitar a posic¸a˜o em que ele se encontra. >> vetor1(1) ans = 1 >> v1(3 : 4) ans = 3 4 Tambe´m e´ poss´ıvel criar vetores estabelecendo-se os valores inicial e final e a variac¸a˜o que havera´ entre ele. Assim, pode-se criar um vetor que vai de 1 ate´ 1000 variando de 0.1 em 0.1, por exemplo, sem ter que digitar cada um dos valores. E´ feito da seguinte forma: >> v = [1 : 0.1 : 1000]; onde 1 e´ o valor inicial do vetor; 0.1 a variac¸a˜o e 1000 o valor final. Transformar um vetor linha em vetor coluna, ou vice versa, e´ o mesmo que calcular a transposta do vetor. O que pode ser facilmente obtido atrave´s do comado: >> v1 = [1 2 3 4 5]; >> v1 transposta = v1′ v1 transposta = 1 2 3 4 5 Exerc´ıcio 1.4 Fac¸a os itens abaixo: a) Declare o vetor linha que vai de 1 ate´ 15 variando de 1.5 em 1.5. b) Obtenha o resultado da multiplicac¸a˜o entre o valor alocado na posic¸a˜o 5 e na posic¸a˜o 11. 6 c) Obtenha o vetor coluna. Existem inu´meras operac¸o˜es e manipulac¸o˜es que podem ser feitas com vetores. As operac¸o˜es alge´bricas ba´sicas como adic¸a˜o, subtrac¸a˜o, multiplicac¸a˜o, divisa˜o, radiciac¸a˜o e potenciac¸a˜o po- dem ser feitas com os mesmos operadores mostrados para varia´veis. Entretanto, para realiza´-las e´ obrigato´rio que as matrizes envolvidas possuam uma coereˆncia em relac¸a˜o ao seus tamanhos. Deste modo, para adic¸a˜o e subtrac¸a˜o e´ necessa´rio que as matrizes possuam o mesmo tamanho, tanto para linhas quanto para colunas. Ja´ para o caso da multiplicac¸a˜o, de acordo com a regra matema´tica, feita entre duas matrizes A e B e´ preciso que o nu´mero de colunas de A seja igual ao nu´mero de linhas de B. Ale´m disso, e´ interesse manipular vetores com func¸o˜es que ja´ existem no MatLab, algumas esta˜o mostradas na tabela abaixo. Func¸a˜o Comando length(V) Retorna o tamanho do vetor, nu´mero de elementos de V size(V) Retorna o nu´mero de linhas e colunas do vetor V sum(V) Retorna o somato´rio dos elementos do vetor V prod(V) Retorna o produto entre os elementos do vetor V norm(V) Retorna o valor da norma do vetor V cross(A,B) Retorna o produto vetorial entre A e B dot(A,B) Retorna o produto escalar entre A e B max(V) Retorna o maior valor de V min(V) Retorna o menor valor de V roots[] Retorna as ra´ızes de um polinoˆmio definido pelos seus coeficientes Exerc´ıcio 1.5 Declare um vetor A que vai de 1 ate´ 200 com incremento de 2.5 e responda aos itens abaixo a) Quais as dimenso˜es do vetor? b) Calcule o somato´rio dos elementos. c) Calcule o produto entre os elementos d) Calcule a norma do vetor e) Crie um vetor B que vai de 1 a 400 com incremento de 2.5. f) Calcule o produto escalar entre A e B. Qual o maior valor do vetor resultado? g) Calcule o produto escalar entre a = [1 2 3] e b = [3 4 5] 7 Exerc´ıcio 1.6 Encontre as ra´ızes dos polinoˆmios: xˆ4 + 3xˆ2 + 2x e xˆ2 + 4. 1.3 Matrizes Uma matriz e´ composta por elementos distribu´ıdos em i linhas e j colunas. Em linguagens de programac¸a˜o e´ utilizada de forma ana´loga aos vetores, visto que um vetor pode ser uma matriz linha ou uma matrizcoluna. A declarac¸a˜o de matrizes e´ feita da seguinte maneira: >> a = [1 2 3; 1 2 3] a = 1 2 3 1 2 3 >> b = [0 : 1 : 4; 0 : 2 : 8] b = 0 1 2 3 4 0 2 4 6 8 Tambe´m pode ser feita a concatenac¸a˜o de matrizes: >> c = [a, b] c = 1 2 3 0 1 2 3 4 1 2 3 0 2 4 6 8 Analogamente aos vetores, para acessar determinados elementos da matriz basta ’chamar’ a posic¸a˜o em que eles se encontram. Assim: >> c(1, 4) ans = 8 0 >> c(2, 7) ans = 6 >> c(1, :) ans = 1 2 3 0 1 2 3 4 Diversas operac¸o˜es podem ser feitas com matrizes. Pode-se somar ou multiplicar duas matri- zes atentando-se para a regra das dimenso˜es, explicada na sec¸a˜o anterior. Ale´m disso, existem func¸o˜es que permitem calcular o determinante, a inversa e a transposta de uma matriz. A Tabela abaixo lista alguns comando importantes. Comando Operac¸a˜o det() Calcula o determinante de uma matriz quadrada inv() Calcula a inversa de uma matriz ′ Calcula a transposta de uma matriz ones(m,n) Gera uma matriz quadrada unita´ria com m linhas e n colunas zeros(m,n) Gera uma matriz de valores nulos de m linhas e n colunas eye(m,n) Gera uma matriz identidade de m linhas e n colunas rand(m,n) Gera uma matriz com valores aleato´rios entre 0 e 1 de m linhas e n colunas trace() Gera um vetor com a soma dos elementos da diagonal principal de uma matriz quadrada Exemplo 1.2 Declare uma matriz com unita´ria 5x5 e responda aos itens. a) Calcule o determinante. b) Calcule a transposta. c) Calcule a inversa. d) Gere uma matriz identidade 5x2. e) Some as duas matrizes. 9 f) Multiplique as duas matrizes. Exerc´ıcio 1.7 Declare as matrizes A, B, C e D no MatLab e fac¸a as operac¸o˜es pedidas nos itens abaixo. A = [2 4 6; 8 7 11; 2 9 10], B = [1 3.5 8.75], C = [2.2 1.2 1.1; 5 6 7; 4.3 5.6 5.8; 2 11 2.4] e D = [0 1 3]. a) E = det(A− ΛI)comΛ = −6 b) F = (A)− 1B c) A.F d) Bt.C e) A soma dos elementos da diagonal principal da matriz C. Exerc´ıcio 1.8 Um triaˆngulo e´ composto pelos ve´rtices A(6,-1,2), B(-2,3,-4) e C(-3,1,5). De- termine o per´ımetro do triaˆngulo e aˆngulos entre os ve´rtices A e B. Comando Descric¸a˜o diag Exprime os elementos da diagonal principal da matriz norm(X,2) Calcula a norma 2 da matriz ou do vetor X norm(X) Executa a mesma func¸a˜o de norm(X,2) norm(X,1) Calcula a norma 1 da matriz ou do vetor X norm(X,inf) Calcula a norma infinito da matriz ou do vetor X Definic¸a˜o 1.1 A Norma de x ∈ Rn e´ um nu´mero real na˜o negativo que satisfaz as proprie- dades: 1) ‖x‖ ≥ 0, ∀x ∈ Rn 2) ‖αx‖ = |α| ‖x‖, ∀x ∈ Rn e ∀α ∈ R 3) ‖x+ y‖ ≤ ‖x‖+ ‖y‖, ∀x, y ∈ Rn Norma de matrizes e vetores: Considere a matriz A ∈ Rn×m. As normas matriciais mais usadas sa˜o: ‖A‖1 = max1≤j≤m { n∑ i=1 |aij| } Norma do Ma´ximo das Colunas 10 ‖A‖∞ = max1≤i≤n { m∑ j=1 |aij| } Norma do Ma´ximo das Linhas ‖A‖2 = ( n∑ i=1 m∑ j=1 |aij|2 )1/2 Norma Euclidiana A norma vetorial pode ser vista como um caso particular da norma matricial, onde x e´ um vetor do Rn, ou seja, x e´ uma matriz x× 1. Assim as normas para vetores sa˜o dadas por ‖x‖1 = n∑ i=1 |xi| Norma da soma ‖x‖∞ = max1≤i≤n |xi| Norma do Ma´ximo ‖x‖2 = ( n∑ i=1 |xi|2 )1/2 Norma Euclidiana 1.4 Polinoˆmios Para encontrar as ra´ızes de um polinoˆmio de grau n defina um vetor com os coeficientes do polinoˆmio e utilize o comando roots. Exemplo 1.3 Determine as ra´ızes do polinoˆmio p(x) = x3 + 2x2 − 5x− 6. p=[1 2 -5 -6]; roots(p) Exerc´ıcio 1.9 Determine as ra´ızes do polinoˆmio p(x) = x3 + 2x2 + 5x+ 6. Exerc´ıcio 1.10 Determine as ra´ızes do polinoˆmio p(x) = x3 + 7x2 − 13x− 58. O comando poly determina os coeficientes do polinoˆmio apartir de suas ra´ızes. Exemplo 1.4 Determine os coeficientes do polinoˆmio p(x) que possui as ra´ızes −3, 1, 2. r=[2 -3 1]; poly(r) O comando polyval determina o valor do polinoˆmio para uma determinada entrada. Se a entrada for uma matriz a func¸a˜o retorna o valor do polinoˆmio para cada elemento. Exemplo 1.5 Determine o valor do polinoˆmio p(x)x5+5x4−2x3+3x2+8x = 3.2 para x = √2 que possui as ra´ızes −3, 1, 2. 11 p=[1 5 -2 3 8 3.2]; >> polyval(p,sqrt(2)) O comando latex define uma expressa˜o simbo´lica para textos em formato Latex. Cap´ıtulo 2 Gra´ficos e Loops 2.1 Arquivos M Para problemas mais simples e´ ra´pido e eficiente introduzir os comandos no prompt do Matlab. Mas se o nu´mero de comandos e´ grande, se voceˆ precisa reexecutar pode-se utilizar arquivos de texto e pedir ao Matlab para executar. Esses arquivos sa˜o chamados arquivos M. Para criar um arquivo M, deˆ um selecione o item New Script do menu Home na barra de ferramentas do Matlab. Esse procedimento abre a janela do editor de texto do Matlab. Para executar o arquivo, apo´s teˆ-lo salvo, tecle F5 ou clique na seta verde Run. 2.2 Controle de fluxo: loops O Matlab possui recursos que permitem o controle de fluxo de execuc¸a˜o de comandos com base em estruturas de tomada de decisa˜o. Como essas estruturas, muitas vezes, envolvem di- versos comandos e´ aconselha´vel utilizar arquivos M para compilac¸a˜o. Os loops for possibilitam que um comando seja repetido por um nu´mero predefinido. Todo loop for deve ser finalizado com end. Exemplo 2.1 Somar uma unidade ao valor inicial x = 5. clc clear x = 5; n = 10; fork = 1 : n x = x+ 1; 12 13 end disp(x) Exerc´ıcio 2.1 Utilizando o loop for divida o intervalo [0, 2] em 10 subintervalos igualmente espac¸ados. Exerc´ıcio 2.2 Utilizando o loop construa uma matriz A de ordem 5 na qual os elementos aij sa˜o da forma aij = 1 i+j−1 . Os loops while executa um comando um nu´mero de vezes ate´ que uma pre´ determinada condic¸a˜o seja atingida. Exemplo 2.2 Dividir o extremo superior do intervalo [5, 100] ao meio ate´ que a amplitude do intervalo seja, no ma´ximo 2. clc clear a = 5; b = 100; e = b− a; while e > 2.0 b = b/2; e = b− a; end disp(e) Exerc´ıcio 2.3 Defina uma matriz identidade F e uma matriz randoˆmica A de ordem n aleato´ria. Construa uma algoritmo utilizando o loop while para fazer a operac¸a˜o F = A ∗ F/N ate´ que a norma 1 da matriz F seja maior que 0.1. Inicialize com N = 1. Os loops if-else-end executam comandos condicionalmente, com base em um teste relaci- onal. Exemplo 2.3 Verificar se o aluno esta´ aprovado ou reprovado em determinada disciplina apo´s fornecida sua nota. clc clear nota = input(′Entre com a nota a ser verificada :′); 14 ifnota >= 60 disp(′Aprovado′) else disp(′Reprovado′) end Exerc´ıcio 2.4 Construa um co´digo utilizando o loop if-else-end para determinar as ra´ızes de uma equac¸a˜o do segundo grau f = ax2 + bx+ c. 2.3 Gra´ficos Bidimensionais O comando mais comum para criac¸a˜o de gra´ficos em duas dimenso˜es (x, y) e´ o comando plot. S´ımbolo Cor Simbolo Marcador S´ımbolo Tipo de Linha b Azul . Ponto - Linha cont´ınua g Verde o C´ırculo : Linha pontilhada r Vermelho x Cruz -. Trac¸os e pontos c Ciano + Sinal de positivo – Linha tracejada m Magenta * Asteristico y Amarelo s Quadrado k Preto d Losanog w Branco v Traˆngulo para baixô Triaˆngulo para cima < Triaˆngulo para esquerda > Triaˆngulo para direita p Pentagrama h Hexagama Exemplo 2.4 Esse exemplo constro´i o gra´fico da func¸a˜o y = sen(x) no intervalo [0, 2pi]. >> x = linspace(0, 2 ∗ pi, 100); >> y = sin(x); >> plot(x, y) O comando linspace divide o intervalo [0, 2pi] em 100 pontos igualmente espac¸ados. Exemplo 2.5 Especificando o estilo da linha do gra´fico. >> x = linspace(−4, 4, 100); >> y = cos(x); >> f = sin(x); 15 >> plot(x, y,′ p′, x, f,′ r′) legend(′Cosseno′,′ Seno′) Comando Descric¸a˜ohold on Acrescenta novas curvas a` janela gra´fica existente hold off Libera a janela gra´fica aberta grid on Adiciona linhas de grade ao gra´fico grid off Remove as linhas de grade do gra´fico box off Retira a caixa do gra´fico xlabel Atribui nome ao eixo das abscissas ylabel Atribui nome ao eixo das ordenadas title Insere t´ıtulo no gra´fico legend Adiciona legenda ao gra´fico axis[xmin xmax ymin ymax] Define os valores mı´nimos e ma´ximos dos eixos clf Limpa a janela gra´fica sem fecha´-la figure Cria uma nova janela de figura ezplot Constro´i gra´fico de func¸o˜es definidas por objetos matema´ticos simbo´licos stem Constro´i gra´fico de uma sequeˆncia de dados discretos text(x,y,’string’) Cria objetos de texto ponto (x,y) do gra´fico. O comando subplot(m,n,p) subdivide a janela da figura em uma matriz com m por n regio˜es nas quais se pode trac¸ar gra´ficos e ativa a p-e´sima regia˜o. Os subgra´ficos sa˜o enumera- dos da esquerda para a direita e da primeira linha para a u´ltima. Exemplo 2.6 Exemplo do comando subplot: x=-2:0.01:2; y=exp(x.^2); z=cosh(x); subplot(2,1,1) plot(x,y) title( ’Gra´fico da func¸~ao exp(x^2)’) subplot(2,1,2) plot(x,z) title( ’Gra´fico da func¸~ao cosh(x)’) O comando replace substitui o respectivo gra´fico caso ele ja´ exista, por exemplo, sub- plot(m,n,p,’replace’). 16 Exerc´ıcio 2.5 Construa o gra´fico das func¸o˜es f(x) = x4, g(x) = 1 x , h(x) = √ x e k(x) = 3sec(x) no intervalo [1.8, 4.5] utilizando o comando subplot(2,2,string). Exerc´ıcio 2.6 Construa o gra´fico da func¸a˜o discreta tabelada abaixo de formas diferentes. Uti- lizando o argumento ′∗′ e o comando stem. x -1 -0.7 -0.4 -0.1 0.2 0.5 0.8 1.0 f(x) 36.55 17.264 8.155 3.852 1.820 0.86 0.406 0.246 2.4 Gra´ficos Tridimensionais Para construc¸a˜o de gra´ficos tridimencionais utiliza-se o comando surf. Exemplo 2.7 Esse exemplo constro´i o gra´fico da func¸a˜o z = x2 + y2 no intervalo [−7, 7]. clc clear x=-7:0.1:7; y=x; [X,Y]=meshgrid(x,y); z=X.^2+Y.^2; surf(X,Y,z) O comando meshgrid aceita dois vetores e produz duas matrizes que conteˆm os dados de entrada repetidos, de modo que todas as combinac¸o˜es poss´ıveis desses dados sa˜o consideradas para construc¸a˜o do gra´fico. Exemplo 2.8 Esse exemplo constro´i o gra´fico da parabolo´ide hiperbo´lico z = y2− x2 no inter- valo [−7, 7] e suas respectivas curvas de n´ıvel. clc clear x=-7:0.1:7; y=x; [X,Y]=meshgrid(x,y); z=Y.^2-X.^2; surf(X,Y,z) figure contour(z) O comando contour constro´i as curvas de n´ıvel do gra´fico da func¸a˜o. 17 Exerc´ıcio 2.7 Construa o gra´fico da func¸a˜o z = √ x2 + y2 no intervalo [−10, 10] e suas res- pectivas curvas de n´ıvel. Exemplo 2.9 Esse exemplo constro´i o cone apartir da revoluc¸a˜o da func¸a˜o y = x no intervalo [0, 1]. clc clear x = 0 : 0.05 : 2; y = x; plot(x, y) figure cylinder(y) O comando cylinder constro´i so´lido de revoluc¸a˜o da func¸a˜o f. Exerc´ıcio 2.8 Construa o gra´fico de revoluc¸a˜o func¸a˜o y = ex no intervalo [0, 3]. Exerc´ıcio 2.9 Construa o gra´fico da func¸a˜o z = x0.5 − ( y x )0.2 + ( 64 y )1/3 . Exerc´ıcio 2.10 Construa o gra´fico da func¸a˜o z = 1√ x2 + y2 . Cap´ıtulo 3 Ca´lculo Diferencial e Integral O MATLAB disponibiliza func¸o˜es que facilitam a operac¸a˜o de certos to´picos matema´ticos. Em geral e´ preciso trabalhar com varia´veis em geral. Para isso utilizamos a matema´tica simlo´lica. Comando Descric¸a˜o sym Define varia´veis, expresso˜es e objetos como simbo´lico syms Determina que os argumentos acompanhados tera˜o cara´ter simbo´lico findsym Quando se deseja determinar quais sa˜o os paraˆmetros simbo´licos em uma expressa˜o subs Substitui a varia´vel declarada simbo´lica por outra ou por um nu´mero Exemplo 3.1 Exemplo do comando subs: syms a b x=a^2+sqrt(b); a=3; b=\pi; subs(x) Exemplo 3.2 Determine a func¸a˜o inversa do polinoˆmio x(x(x− 6) + 11)− 6. syms x f=collect(x*(x*(x-6)+11)-6); f=collect(x*(x*(x-6)+11)-6); finverse(f) A tabela abaixo resume algumas func¸o˜es da matema´ticas ba´sica utilizados na biblioteca do Matlab. 18 19 Comando Descric¸a˜o collect Reescreve a expressa˜o como um polinoˆmio expand Expande a expressa˜o em produtos e somas horner Determina o fator em comum da expressa˜o factor Fatora o polinoˆmio, se os coeficientes sa˜o racionais poly Determina os coeficientes do polinoˆmio a partir de suas ra´ızes polyval Determina o valor do polinoˆmio para uma determinada entrada roots Determina as ra´ızes do polinoˆmio simplify Simplifica as expresso˜es, de forma mais geral. compose Calcula a composic¸a˜o das func¸o˜es finverse Encontra a func¸a˜o inversa polyder Determina a derivada de polinoˆmios diff Calcula a diferenc¸a entre os componentes de vetores quiver Desenha setas normais a` superf´ıcie da base del2 Laplaciano discreto Ca´lculo Diferencial e Integral O limite, a diferenciac¸a˜o e a integrac¸a˜o sa˜o ferramentas fundamentais do ca´lculo diferencial e integral. O Matlab possui func¸o˜es para aproximar a essas operac¸o˜es. Exemplo 3.3 Calcule o limite lim x→0 x2. syms x limit(x2) Exemplo 3.4 Fac¸a o estudo do limite lim x→1+ |x− 1| x− 1 . syms x limit(′(abs(x− 1)/(x− 1))′, x, 1,′ right′) 20 Comando Descric¸a˜o limit(F,x,a) Calcula o limite de uma expressa˜o simbo´lica com x tendendo a a limit(F,a) Determina o limite de tendendo a a limit(F) Determina o limite com a limit(F,x,a,’right’) Calcula o limite com x tendendo a a pela direita limit(F,x,a,’left’) Calcula o limite com x tendendo a a pela esquerda diff(S) Diferencia a expressa˜o simbo´lica varia´vel simbo´lica diff(S,’v’) Diferencia S em torno de uma varia´vel simbo´lica v diff(S,n) Diferencia S por n vezes, para um nu´mero n inteiro diff(S,’v’,n) Diferencia S por n vezes, em torno de uma varia´vel v int(S) Integrac¸a˜o indefinida da func¸a˜o S considerando uma varia´vel simbo´lica ja´ definida int(S,a,b) Integra a func¸a˜o S no intervalo [a, b] int(S,v,a,b) Integra a func¸a˜o S no intervalo [a, b] em func¸a˜o de uma varia´vel v Exerc´ıcio 3.1 Fac¸a o estudo do limite lim x→2 5x − 25 x− 2 R: 25ln(5). Exemplo 3.5 Determine a primeira derivada da func¸a˜o f(x) = √ ln(x) + ex. syms x; f=sqrt(log(x)+exp(x)); d=diff(f) Para visualizar a func¸a˜o obtida utiliza-se o comando pretty(d). Exerc´ıcio 3.2 Detemine a derivada terceira da func¸a˜o do exemplo 3.5. Exemplo 3.6 Calcule a integral da func¸a˜o f(x) = √ x2 + 5. syms x y=sqrt(x^2+5); f=int(y,x) Exemplo 3.7 Calcule a integral ∫ 4 1 √ x2 + 5 dx. syms x y=sqrt(x^2+5); f=int(y,x,1,4) Para visualizar o valor nume´rico utilze o comando eval(f) ao fim da operac¸a˜o. Exerc´ıcio 3.3 Utilizando integral, calcule a a´rea entre as curvas g(x) = √ x e f(x) = x2 no intervalo [0, 1]. Cap´ıtulo 4 Ca´lculo Nume´rico Sistemas Lineares Um sistema linear de ordem n se escreve da forma a11x1 + a12x2 + a13x3 + · · · + a1nxn = b1 a21x1 + a22x2 + a23x3 + · · · + a2nxn = b2 ... ... ... . . . ... ... an1x1 + an2x2 + an3x3 + · · · + annxn = bn. (4.1) onde aij sa˜o os coeficientes, xi sa˜o as inco´gnitas e bj sa˜o os termos independentes. Esse sistema possui uma representac¸a˜o matricial na forma Ax = b com A ∈ Rn×n, x, b ∈ Rn×1, ou seja, A = a11 a12 · · · a1n a21 a22 · · · a2n ... ... . . . ... an1 an2 · · · ann , x = x1 x2 ... xn e b = b1 b2 ... bn . Considere o sistema linear abaixo: −7x1 + 3x2 + 2x3 = −2 x1 + 3x2 − x3 = 3 x1 + x2 − 3x3 = −1 Exerc´ıcio 4.1 Considerando a matriz A, dos coeficientesdo sistema acima, responda as se- guintes questo˜es: a) verifique se a matriz A e´ diagonalmente dominante; 21 22 b) calcule os autovalores da matriz A; c) verifique se a matriz A e´ positiva definida; d) calcule o determinante da matriz A; e) calcule todas as normas vistas da matriz A; f) calcule todas as normas vistas do vetor b. Exerc´ıcio 4.2 a) A matriz do exerc´ıcio 4.1 e´ na˜o singular? b) O sistema linear acima pode ser resolvido pelo me´todo tradicional x = A−1.b? c) Se a resposta do item anterior for positiva, resolva o sistema. Comando Descric¸a˜o [L,U] = lu(A) Fornece a fatorac¸a˜o LU da matriz A (com pivoteamento) rref Resolve o sistema linear pelo me´todo de eliminac¸a˜o de Gauss-Jordan polyfit(x,y,n) Determina o polinoˆmio interpolador de grau n nos pontos x e y, pela fatorac¸a˜o QR. solve Determina a soluc¸a˜o de equac¸o˜es alge´bricas simbo´licas dsolve Determina a soluc¸a˜o de equac¸o˜es diferenciais ordina´rias simbo´licas trapz Determina a integrac¸a˜o de uma func¸a˜o a partir da Regra do Trape´zio quad Determina a integrac¸a˜o de uma func¸a˜o a partir da Regra de Simpson quadgk Determina a integrac¸a˜o pela quadratura de Gauss-Kronroad dblquad Determina a integrac¸a˜o dupla de uma func¸a˜o triplequad Determina a integrac¸a˜o tripla de uma func¸a˜o gradient Utiliza as diferenc¸as centradas para estimar a inclinac¸a˜o da curva em cada ponto divergence Determina o divergente de um campo vetorial quiver3 Constro´i o gra´fico de setas representando a velocidade Exemplo 4.1 Resolva o sistema linear do exerc´ıcio 4.1 pela fatorac¸a˜o LU. A=[-7 3 2; 1 3 -1; 1 1 -3]; b=[-2 3 -1]’; [L,U]=lu(A); y=L\b; x=U\y 23 Outra opc¸a˜o para utilizar a fatorac¸a˜o LU na resoluc¸a˜o de sistemas lineares e´ atrave´s do comando linsolve(A,b) inserido no exemplo acima na quarta linha. Exemplo 4.2 Resolva o sistema linear do exerc´ıcio 4.1 pelo me´todo de eliminac¸a˜o de Gauss- Jordan. A=[-7 3 2 -2; 1 3 -1 3; 1 1 -3 -1]; x=rref(A) Exerc´ıcio 4.3 Resolva o sistema linear abaixo. 2x1 + 2x2 + x3 + x4 = 7 x1 − x2 + x3 − x4 = 1 3x1 + 2x2 − 3x3 − 2x4 = 4 4x1 + 3x2 + 2x3 + x4 = 12 Exerc´ıcio 4.4 Resolva o sistema linear abaixo. 14 x1 − 11.179108 x2 + 29.978713 x3 = 7 −11.179108 x1 + 8.9266036 x2 − 23.938233 x3 = 1 29.978713 x1 − 23.938233 x2 + 67.658827 x3 = 4 Zero de func¸o˜es na˜o lineares e ajuste de curvas Um nu´mero x que satisfaz a equac¸a˜o f(x) = 0 e´ chamado de raiz ou zero da func¸a˜o f . Teorema 4.1 seja f(x) uma func¸a˜o cont´ınua em um intervalo [a, b]. Se f(a).f(b) < 0 enta˜o existe pelo menos uma raiz ξ ∈ [a, b]. Exemplo 4.3 Determine a raiz da func¸a˜o f(x) = x2 − 4 pro´xima a x = 1. y=@(x)x^2-4; fzero(y,1) Exerc´ıcio 4.5 Calcule uma raiz das func¸o˜es abaixo: a) f(x) = 2x − cos(x) b) f(x) = e3x − sen(x) 24 Comando Descric¸a˜o symsum Determina o somato´rio simbo´lico de uma expressa˜o taylor Expande em se´rie de Taylor lsqr Me´todo dos mı´nimos quadrados lsline Acrescenta uma linha ao gra´fico do ajuste linear pelo comando plot/scatter na figura atual fzero Encontra a raiz da equac¸a˜o fsolve Encontra a soluc¸a˜o de um sistema de equac¸o˜es na˜o lineares fminsearch Determina o mı´nimo de func¸a˜o irrestrita de va´rias varia´veis reais fminbnd Determina o mı´nimo de func¸a˜o de va´rias varia´veis reais, com restric¸a˜o cftool Ajuste de curvas de forma iterativa fuzzy Estudo do sistema de infereˆncia fuzzy Exemplo 4.4 Interpole a func¸a˜o f(x) = cos(x) no intervalo [0, 2 ∗ pi]. X = 0:2*pi; V = cos(X); Xq = 0:.25:2*pi; Vq = interp1(X,V,Xq); plot(X,V,’o’,Xq,Vq) Exemplo 4.5 Interpole a func¸a˜o f(x) = cos(x) no intervalo [0, 2 ∗ pi]. Interpole x = 2. x = linspace(0,2*pi,5); y = cos(x); p = interp1(x,y,[2],’linear’); disp(p) O argumento linear indica que a interpolac¸a˜o e´ feita por um polinoˆmio de primeiro grau. Tambe´m sa˜o aceitos outros argumentos, como por exemplo cubic ou splines os quais indicam, respectivemente interpolac¸a˜o por polinoˆmio de terceiro grau ou pos Splines. Exemplo 4.6 : Fac¸a o ajuste linear dos dados da tabela abaixo pelo me´todo dos mı´nimos qua- drados (MMQ): x -0.6 -0.5 -0.3 0 0.2 o.4 0.5 f(x) 0.45 0.4 0.5 0 0.2 0.6 0.5 25 x=[-0.6 -0.5 -0.3 0 0.2 0.4 0.5]; y=[0.45 0.4 0.5 0 0.2 0.6 0.5]; mmq=polyfit(x,y,1) O comando diff(x) calcula as diferenc¸as finitas ascendentes para dados fornecidos em um vetor x. Por exemplo, Exemplo 4.7 Calcule as diferenc¸as finitas de primeira ordem do vetor x = [−1 2 3 4 − 5]. x=[-1 2 3 4 -5]; diff(x) O comando diff(x,2) calcula as diferenc¸as finitas de segunda ordem do vetor x, e assim sucessivamente. Exerc´ıcio 4.6 Calcule as diferenc¸as finitas de terceira ordem do vetor x = [−1 2 3 4 − 5]. Exemplo 4.8 Calcule o ponto de mı´nimo da func¸a˜o f(x) = ex1 (4x21 + 2x 2 2 + 4x1x2 + 2x2 + 1)) a partir do ponto inicial x0 = (0, 0). f=@(x)exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); fminsearch(f,[0;0]) Exerc´ıcio 4.7 Determine o ponto de mı´nimo da func¸a˜o f(x) = 100 (x2 − x21)2+(1− x1)2 a partir do ponto inicial x0 = (0, 0). 4.1 Sistemas de equac¸o˜es na˜o lineares Considere o problema de determinar as ra´ızes de n equac¸o˜es na˜o lineares simultaˆneas, da forma: f1(x1, x2, . . . , xn) = 0 f2(x1, x2, . . . , xn) = 0 ... fn(x1, x2, . . . , xn) = 0 (4.2) onde fi,para i = 1, 2, . . . , n e´ uma func¸a˜o real de n varia´veis reais. Geometricamente, as ra´ızes desse sistema sa˜o os pontos (x∗1, x ∗ 2, . . . , x ∗ n) onde as curvas (f1, f2, . . . , fn) se encontram. 26 Exemplo 4.9 Resolver o sistema na˜o linear abaixo.{ x21 + x1x2 − 10 = 0 x2 + 3x1x 2 2 − 57 = 0 No Matlab: fun=@(x) [(x(1).^2)+x(1)*x(2)-10; x(2)+3*x(1)*x(2).^2-57]; fsolve(fun,[1;3]) Exerc´ıcio 4.8 Resolver o sistema na˜o linear abaixo.{ x2 + y2 − 2 = 0 −ex + y = 0 4.2 Integrac¸a˜o Nume´rica O comando quad calcula uma aproximac¸a˜o para a integral anal´ıtica, pelo me´todo de Simpson, com precisa˜o de 10−6 em default. Exemplo 4.10 Calcule a integral ∫ 4 1 cos (√ x2 + 5 ) dx. Integral=quad(’cos(sqrt(x.^2+5))’,1,4); fprintf(’Integral=%15.10f\n’,Integral) E´ poss´ıvel alterar a precisa˜o da integrac¸a˜o com a seguinte modificac¸a˜o no exemplo anterior. Integral=quad(’cos(sqrt(x.^2+5))’,1,4,1e-10); A definic¸a˜o de func¸o˜es e´ feita pelo comando function, esse comando pode ser utilizado para definir rotinas principais ou subprogramas. Para exemplificar vamos refazer o exemplo 4.10 utilizando um subprograma. Defina a func¸a˜o: function y=f(x) y=cos(sqrt(x.^2+5)); end O arquivo .m devera´ ser salvo com o nome escolhido para a function, ou seja, salve o arquivo como sendo f.m O programa principal (onde devera´ ser gerado o resultado) devera´ ser da seguinte forma: Integral=quad(@f,1,4,1e-10); fprintf(’Integral=%15.10f\n’,Integral) 27 4.3 Equac¸o˜es Diferenciais Ordina´rias As equac¸o˜es diferenciais modelam muitos casos da matema´tica aplicada e das engenharias. Em muitos casos a teoria garante a existeˆncia da soluc¸a˜o anal´ıtica, pore´m nem sempre e´ poss´ıvel obter essas expresso˜es. Surge enta˜o a necessidade das aproximac¸o˜es nume´ricas. Vamos nos concentrar em analisar esquemas nume´ricos para a soluc¸a˜o de Problemas de Valor Inicial (P.V.I.) de 1a ordem. Isto e´, encontrar a aproximac¸a˜o da func¸a˜o y(x) tal que { y′(x) = f(x, y) y(x0) = y0 (4.3) Os esquemas nume´ricos calculam a aproximac¸a˜o de y(x) nos pontos x1, x2, x3, . . . em que xk = x0 + kh para um passo h > 0. O valor da func¸a˜o (y(xk)) no ponto xk e´ aproximado por yk, o qual e´ obtido em func¸a˜o dos valores anteriores yk−1, yk−2, . . . , y0. Dessa forma, os esquemas nume´ricos determinama aproximac¸a˜o da func¸a˜o para valores x > x0, o que justifica o nome de problema de valor inicial. O me´todo nume´rico apresentado na equac¸a˜o abaixo e´ conhecido como me´todo de Euler. yk+1 = yk + hf(xk, yk). (4.4) Ou seja, dado uma aproximac¸a˜o no ponto yk obtemos a aproximac¸a˜o yk+1. De forma geral temos y(xk) ≈ yk. Esse me´todo possui as caracter´ısticas de ser de passo 1 e de ordem 1. Exemplo 4.11 : Usando o me´todo de Euler aproxime o PVI{ y′(x) = 2y y(0) = 1 em x = 0.5 para h = 0.1. Exerc´ıcio 4.9 Construa um co´digo para o Me´todo de Euler. Cap´ıtulo 5 Transformadas: Laplace e Fourier 5.1 Transformadas de Laplace Seja f uma func¸a˜o definida para t ≥ 0. A integral L{f(t)} = ∫ ∞ 0 e−stf(t) dt (5.1) e´ chamada de transformada de Laplace da func¸a˜o f , desde que a integral convirja. Exemplo 5.1 A transformada de Laplace da func¸a˜o f(t) = e−3t e´ dada por L (e−3t) = 1 s+3 para s > −3. Temos que F (s) = 1 s+3 e´ a Transformada inversa de Laplace da func¸a˜o f(x) = e−3x, ou seja, L−1 { 1 s+3 } = e−3x. Os comandos laplace e ilaplace calculam a transformada de Laplace e a transformada inversa de Laplace, respectivamente. Exemplo 5.2 Calcule a transformada de Laplace da func¸a˜o f(t) = e−3x. syms x f = eˆ (−3x); laplace(f); Exemplo 5.3 Calcule a transformada inversa de Laplace da func¸a˜o F (s) = 1 s+3 . syms t s F = 1/(s+ 3); f = ilaplace(F ); 28 29 Exemplo 5.4 Calcule a transformada inversa de Laplace da func¸a˜o F (s) = s+1 s3+2s2+4s . syms \ \ t \ \ s F= (s+1)/(s^3+2*s^2+4*s); f=ilaplace(F); pretty(f) ezplot(f) Exerc´ıcio 5.1 Calcule a transformada de Laplace da func¸a˜of(x) = sen(2x) e a transformada inversa da func¸a˜o F (s) = 2 s2+4 no Matlab. Construa o respectivo gra´fico. E´ poss´ıvel calcular a transformada de Laplace de func¸o˜es cont´ınuas por parte. Exerc´ıcio 5.2 Calcule a transformada inversa de Laplace das func¸o˜es abaixo e construa os respectivos gra´ficos. a) F (s) = s 3+2s2+6s+7 s2+s+5 b) F (s) = 2 s e−s − 1 s A func¸a˜o degrau unita´rio ou func¸a˜o de Heaviside e´ definida por: U(x− a) = { 0, se 0 ≤ x < a 1, se x ≥ a A func¸a˜o impulso unita´rio ou func¸a˜o delta de Dirac em um ponto arbitra´rio x = x0 e´ denotada por δ(x− x0) e definida por: δ(x− x0) = { 0, se x 6= x0 ∫ +∞ −∞ δ(x− x0)dx = 1, se x = x0 5.2 Transformadas de Fourier Ferramentas de domı´nio de frequeˆncia, tais como a se´rie de Fourier, as transformadas de Fourier e suas variantes discretas constituem uma das pedras angulares do processamento de sinais. Essas transformadas decompo˜em um sinal em uma sequeˆncia de componentes senoidais que identificam o conteu´do de domı´nio de frequeˆncia do sinal. Para ana´lise de Fourier a bibli- oteca do Matlab composta pela seguintes func¸o˜es: 30 fft, ifft, fft2, ifft2, fftn, ifftn, fftshift, ifftshift Essas func¸o˜es executam a transformada discreta de Fourier ou sua inversa em uma ou mais dimenso˜es. No estudo de problemas de fluxo de calor Fourier mostrou que uma func¸a˜o perio´dica ar- bitra´ria pode ser representada por uma se´rie infinita de func¸o˜es senoidais com frequeˆncia har- monicamente relacionadas. Para uma func¸a˜o de per´ıodo T uma se´rie de Fourier cont´ınua pode ser escrita f(t) = a0 + ∞∑ k=1 [akcos(kω0t) + bksen(kω0t)] (5.2) onde a frequeˆncia angular do primeiro modo (ω0 = 2pit) e´ chamada frequeˆncia fundamental, e seus mu´ltiplos 2ω0, 3ω0, etc sa˜o chamados de harmoˆnicos. Os coeficientes da equac¸a˜o 5.2 podem ser calculados por: a0 = 1 T ∫ T 0 f(t) dt (5.3) ak = 2 T ∫ T 0 f(t) cos(kω0t) dt (5.4) bk = 2 T ∫ T 0 f(t) sen(kω0t) dt (5.5) para k = 1, 2, .... A se´rie de Fourier tambe´m pode ser expressa usando uma forma mais compacta, utilizando a notac¸a˜o complexa baseada na fo´rmula de Euler e±ix = cos(x)± i sen(x) onde i = √−1 e x esta´ em radianos. Usando a relac¸a˜o acima a se´rie de Fourier se reduz a: f(t) = a0 + ∞∑ k=1 c˜ke ikω0t (5.6) onde os coeficientes sa˜o c˜k = 1 T ∫ T 2 −T 2 f(t) e−ikω0t dt. (5.7) A integral de Fourier e´ a ferramenta utilizada para estudar fenoˆmenos na˜o perio´dicos mas que causam interfereˆncia em receptores operando em uma larga escala de frequeˆncias. A integral de Fourier e´ dada por 31 F (ω) = ∫ ∞ −∞ f(t) e−iωt dt (5.8) para a respectiva se´rie de Fourier f(t) = 1 2pi ∫ ∞ −∞ F (ω) eiωt dω. (5.9) A equac¸a˜o 5.8 tambe´m e´ conhecida como transformada de Fourier de f(t) e a equac¸a˜o 5.9 e´ conhecida como transformada inversa de Fourier. 5.2.1 Transformada Discreta de Fourier (TFD) Em engenharia as func¸o˜es sa˜o, em geral, representadas por conjuntos finitos de valores discretos. A forma discreta das equac¸o˜es 5.8 e 5.9 e´ dada por: Fk = n−1∑ j=0 fj e −ikω0 j para k = 0, 1, . . . , n− 1 (5.10) e fj = 1 n n−1∑ k=0 Fk e ikω0 j para j = 0, 1, . . . , n− 1 (5.11) respectivamente. Onde ω0 = 2pi n . 5.2.2 Transformada Ra´pida de Fourier A transformada ra´pida de Fourier (FFT) e´ um algoritmo que foi desenvolvido para calcular a TFD de uma forma extremamente econoˆmica. Para o ca´lculo da TFD sa˜o necessa´rias n2 operac¸o˜es ao passo que a FFT utiliza n log2 n operac¸o˜es. Por exemplo, para n = 1000 a FFT e´ 100 vezes mais ra´pida. Como o Matlab na˜o admite ı´ndice zero e´ preciso deslocar os valores dos ı´ndices em uma unidade. Exemplo 5.5 Para ilustrar o uso da FFT, considere o problema que consiste em estimar a transformada cont´ınua de Fourier do sinal f(t) = 2e−3t para t ≥ 0. clc clear N=2^7; % pote^ncia de 2 aumentam a velocidade t=linspace(0,3,N); % instantes do tempo em que a func¸~ao sera´ calculada f=2*exp(-3*t); % calcula a func¸~ao Ts=t(2)-t(1); % primeiro perı´odo de tempo 32 Ws=2*pi/Ts; % freque^ncia de amostra rad/seg F=fft(f); % calcula a fft %disp(F) Fc=fftshift(F)*Ts; % desloca a escala W=Ws*(-N/2:(N/2)-1)/N; % eixo de freque^ncia Fa=2./(3+j*W); % transformada de fourier analı´tica plot(W,abs(Fa),W,abs(Fc),’o’) % gera o gra´fico legend(’Tranformada analı´tica’,’Transformada ra´pida’) A transformada de Fourier anal´ıtica de f(t) e´ dada por F (ω) = 2 3+jω Exerc´ıcio 5.3 Determine a FFT da func¸a˜o f(t) = sen ( t 2 ) para t ≥ 0. Cap´ıtulo 6 Aplicac¸a˜o para Engenharia Eletroˆnica e de Telecomunicac¸a˜o 33 Refereˆncias Bibliogra´ficas [1] HANSELMAN, D. e LITTLEFIELD, B., Matlab 6: Curso completo. Sa˜o Paulo: Pren- tice Hall, 2003. [2] BOYCE, W. E. e DIPRIMA, R. C., Elementary Differential Equations and Boundary Value Problems. 7a ed., Nova York: John Wiley & Sons Inc., 2001. [3] CHAPRA, S. C., Me´todos nume´ricos aplicados com Matlab para engenheiros e cientistas. 3a ed., Porto Alegre: AMGH Editora, 2013. [4] MARTINS, M. A. et al. Apostila de Matlab. Ceara´, 2010. [5] CAMPUS FILHO, F. F. Introduc¸a˜o ao Matlab. UFMG, 2013. [6] UNIVERSIDADE DA BEIRA INTERIOR Ca´lculo simbo´lico em MATLAB 34
Compartilhar