Você está na página 1de 84

Apostila de MATLAB 7.

UNIVERSIDADE FEDERAL DO CEAR DEPARTAMENTO DE ENGENHARIA ELTRICA PROGRAMA DE EDUCAO TUTORIAL

Apostila de

Decio Haramura Junior Guilherme Martins Gomes Nascimento Lus Paulo Carvalho dos Santos Luiz Fernando Almeida Fontenele Pedro Andr Martins Bezerra

Fortaleza CE Abril / 2008


Pgina 1 de 84

Apostila de MATLAB 7.3 SUMRIO

1. APRESENTAO....................................................................................................................4 1.1. UTILIZANDO O HELP ..................................................................................................5

2. MATRIZES ...............................................................................................................................7 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. DECLARAO .............................................................................................................7 SOMA ........................................................................................................................8 MULTIPLICAO .........................................................................................................8 MATRIZES PR-DEFINIDAS ...........................................................................................9 PROPRIEDADES DE MATRIZES....................................................................................11 TRABALHANDO COM MATRIZES ..................................................................................13

3. VETORES...............................................................................................................................18 3.1. 3.2. 3.3. DECLARAO ...........................................................................................................18 OPERAES ............................................................................................................19 SISTEMAS DE COORDENADAS ...................................................................................22

4. FUNES MATEMTICAS ..................................................................................................24 4.1. 4.2. 4.3. 4.4. 4.5. FUNES ELEMENTARES ..........................................................................................24 PROPRIEDADES FUNDAMENTAIS ................................................................................24 NMEROS COMPLEXOS ............................................................................................26 FUNES TRIGONOMTRICAS ...................................................................................27 APROXIMAO INTEIRA .............................................................................................29

5. GRFICOS .............................................................................................................................30 5.1. 5.2. 5.3. GRFICOS BIDIMENSIONAIS.......................................................................................30 GRFICOS TRIDIMENSIONAIS.....................................................................................33 CONFIGURAO .......................................................................................................36

6. MATEMTICA SIMBLICA ..................................................................................................46 7. OPERAES MATEMTICAS BSICAS............................................................................47 7.1. 7.2. 7.3. EXPRESSES NUMRICAS ........................................................................................48 POLINMIOS.............................................................................................................49 SOLUCIONANDO EQUAES OU SISTEMAS.................................................................52

8. CLCULO DIFERENCIAL .....................................................................................................54 8.1. 8.2. 8.3. 8.4. 8.5. 8.6. 8.7. 8.8. LIMITES ....................................................................................................................54 DIFERENCIAO .......................................................................................................54 INTEGRAO ............................................................................................................55 INTEGRAIS DEFINIDAS PELA REGRA TRAPEZOIDAL ......................................................56 INTEGRAIS DEFINIDAS PELA REGRA DE SIMPSON ........................................................57 INTEGRAO DUPLA .................................................................................................58 INTEGRAO TRIPLA.................................................................................................58 OUTRAS FUNES ....................................................................................................58

Pgina 2 de 84

Apostila de MATLAB 7.3


9. SRIES NUMRICAS............................................................................................................60 9.1. 9.2. SOMATRIO .............................................................................................................60 SRIE DE TAYLOR.....................................................................................................60

10. M-FILE ....................................................................................................................................61 10.1. 10.2. DEFINIO ...........................................................................................................61 ORGANIZAO .....................................................................................................62

11. PROGRAMANDO EM MATLAB............................................................................................63 11.1. VERIFICAO DE ERROS ......................................................................................67

12. ANLISE DE SINAIS .............................................................................................................68 12.1. 12.2. 12.3. 12.4. 12.5. 12.6. TRANSFORMAO DE VARIVEL INDEPENDENTE ....................................................68 FUNES PR-DEFINIDAS.....................................................................................70 CONVOLUO ......................................................................................................76 EQUAES DE DIFERENAS .................................................................................77 FFT (TRANSFORMADA RPIDA DE FOURIER) .........................................................79 FILTROS DIGITAIS.................................................................................................82

13. REFERNCIAS BIBLIOGRFICAS......................................................................................84

Pgina 3 de 84

Apostila de MATLAB 7.3 1. APRESENTAO

MATLAB (MATrix LABoratory) uma linguagem de alto desempenho para computao tcnica. Integra computao, visualizao e programao em um ambiente de fcil uso onde problemas e solues so expressos em linguagem matemtica. Usos tpicos: Matemtica e computao; Desenvolvimento de algoritmos; Aquisio de dados; Modelagem, simulao e prototipagem; Anlise de dados, explorao e visualizao; Construo de interface visual do usurio.

No preciso declarar o tipo das variveis utilizadas no programa, mas o usurio pode escolher qual o formato que vai ser utilizado. Usam-se os seguintes comandos:

Comando MATLAB Format long Format short Format short e

Varivel 3.141592653589793 3.1416 3.1416e+000

Descrio Com 16 dgitos Com 5 dgitos Com 5 dgitos notao cientfica

Format long e

3.141592653589793e+000

Com

16

dgitos

em

notao cientfica Format + Retorna + para valores positivos e - para

valores negativos Format rat Format hex 355/113 400921fb54442d18 Aproximao racional Formato hexadecimal

Pgina 4 de 84

Apostila de MATLAB 7.3 1.1. Utilizando o HELP Indubitavelmente, a melhor apostila tutorial sobre o MATLAB que possa existir o HELP do prprio MATLAB. Todas as informaes possveis h no HELP, principalmente sobre as toolboxes, sobre funes, SIMULINK e entre outros. O HELP pode ser aberto de vrias formas. A primeira atravs da barra de menu, ilustrado abaixo:

Uma outra forma pela tecla de atalho F1. Uma terceira forma pelo boto START, posicionado logo abaixo do COMMAND HISTORY, de acordo com a figura abaixo.

Dando continuidade, quando deseja obter informaes sobre uma dada funo, possvel consultar diretamente no HELP ou pelo COMMAND WINDOW. Para isso, basta digitar help e em seguida a funo requerida, de acordo com o exemplo abaixo:

Pgina 5 de 84

Apostila de MATLAB 7.3


>> help dirac DIRAC Delta function. DIRAC(X) is zero for all X, except X == 0 where it is infinite. DIRAC(X) is not a function in the strict sense, but rather a distribution with int(dirac(x-a)*f(x),-inf,inf) = f(a) and diff(heaviside(x),x) = dirac(x). See also heaviside. Overloaded functions or methods (ones with the same name in other directories) help sym/dirac.m Reference page in Help browser doc dirac

Veja que as informaes sobre a funo dirac apareceram no prprio COMMAND WINDOW. Caso queira consultar na pgina do HELP, basta utilizar doc e em seguida o nome da funo, pois ela encaminhar imediatamente a pgina no HELP que possui a funo desejada. Por exemplo:

>> doc dirac

Assim, aps efetuado este comando, ir aparecer a janela do HELP com o seguinte:

Pgina 6 de 84

Apostila de MATLAB 7.3 2. MATRIZES

2.1. Declarao A declarao de matrizes feita da seguinte maneira:

>> a = [1:10] 10] >> b = [0:0.5:3]

%cria o vetor linha [1 2 3 4 5 6 7 8 9

%cria o vetor [0 0.5 1 1.5 2 2.5 3]

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1] A =

16 5 9 4

3 10 6 15

2 11 7 14

13 8 12 1

>>A(1,2); >>A(:,3); >>A(1,:);

%Elemento de linha 1 e coluna 2 %Elementos da coluna 3 %Elementos da linha 1

O MATLAB tambm aceita o concatenamento de matrizes, por exemplo:

>> a=[ 4 1 ; 3 4]; >> b= [ 2 >> c=[a b]; 3; 4 5];

c = 4 3 1 4 2 4 3 5

Obs.: bom lembrar que o MATLAB tem como primeiro ndice do vetor o nmero 1, diferente da linguagem C que usa o primeiro ndice como 0.

Pgina 7 de 84

Apostila de MATLAB 7.3 2.2. Soma A soma de todos os elementos de uma matriz com um nmero feita da seguinte maneira:

>> c = 4 3 >> c+1 ans = 5 4 2 5 3 5 4 6 1 4 2 4 3 5

A soma de matrizes feita da maneira tradicional:

>> d=[ 1 2 7 8 ; 4 7 5 8] ; >> e=[ 5 -4 7 0; 3 -1 6 -4]; >> d+e ans = 6 7 -2 6 14 11 8 4

2.3. Multiplicao Usa-se o sinal da multiplicao:

>> a=[1 4 2; 7 8 5; 9 5 4]; >> >> c = 20 68 68 2 12 15 9 -6 -26 b=[4 2 -5; 0 1 3; 8 -2 1]; c=a*b

Obs.: Se quisermos realizar outra operao matemtica (exceto a soma e a subtrao) entre os elementos com mesmo ndice das matrizes devemos colocar um ponto antes do operador. Observe os exemplos abaixo:

Pgina 8 de 84

Apostila de MATLAB 7.3


>> a=[1 4 2; 7 8 5; 9 5 4]; >> b=[4 2 -5; 0 1 3; 8 -2 1]; >> c=a.*b c = 4 0 72 8 8 -10 -10 15 4

>> b./a ans = 4.0000 0 0.8889 0.5000 0.1250 -0.4000 -2.5000 0.6000 0.2500

>> a.^2 ans = 1 49 81 16 64 25 4 25 16

2.4. Matrizes pr-definidas ones Def: Esta funo gera uma matriz cujos valores so unitrios Sintaxe: ones(n) Gera uma matriz quadrada cujos termos so unitrios ones(m,n) Gera ma matriz m x n cujos termos so unitrios
>>ones(2)

ans = 1 1 1 1

zeros Def: Esta funo gera uma matriz cujos valores so nulos Sintaxe: zeros(n) Gera uma matriz quadrada cujos termos so nulos zeros(m,n) Gera ma matriz m x n cujos termos so nulos Pgina 9 de 84

Apostila de MATLAB 7.3


>>zeros(2)

ans = 0 0 0 0

eye Def: Gera uma matriz identidade Sintaxe: eye(n) Gera uma matriz identidade n x n eye(m,n) gera uma matriz de ordem m x n cujos termos que possuem i=j so unitrios .

>>eye(2)

ans =

1 0

0 1

vander Def: Calcula a matriz de Vandermonde a partir de um vetor dado Sintaxe: Vander(A) Calcula a matriz de Vandermonde a partir de A

A=[1 2 3 4]; >> vander(A)

ans = 1 8 27 64 1 4 9 16 1 2 3 4 1 1 1 1

Pgina 10 de 84

Apostila de MATLAB 7.3 rand Def: Cria uma matriz com valores aleatrios Sintaxe: rand(m) Cria uma matriz m x m com valores aleatrios entre 0 e 1. rand(m,n) Cria uma matriz m x n com valores aleatrios entre 0 e 1.

rand(2)

ans = 0.9501 0.2311 0.6068 0.4860

2.5. Propriedades de matrizes (apstrofo) Def: Calcula a matriz transposta Sintaxe: A Gera a matriz transposta de A

>>A=[1 1; 2 3]

>>A = 1 2 1 3

>> A'

ans = 1 1 2 3

det Def: Calcula o determinante de uma matriz Sintaxe: det(A) Calcula o determinante da matriz A

Pgina 11 de 84

Apostila de MATLAB 7.3


>>det(A)

ans = 1

trace Def: Retorna um vetor com a soma dos elementos da diagonal principal de uma matriz Sintaxe: trace(A) Retorna a soma dos elementos da diagonal principal da matriz A

A = 1 2 4 1

>> trace(A)

ans = 2

inv Def: Determina a matriz inversa dada Sintaxe: inv(A) Retorna a soma dos elementos da diagonal principal da matriz A

>> A = [5 8; 4 9]

A=

5 4

8 9

>> inv(A)

Pgina 12 de 84

Apostila de MATLAB 7.3

ans =

0.6923 -0.6154 -0.3077 eig Def: Calcula os autovalores e autovetores de uma matriz Sintaxe: eig(A) Retorna os autovalores de uma matriz quadrada [a, b] = eig(A) Retorna em a uma matriz com os autovetores e em b uma matriz com os autovalores 0.3846

>> A=[1 -1; 4 1]

A = 1 4 -1 1

>> [a,b]=eig(A)

a = 0 - 0.4472i -0.8944 0 + 0.4472i -0.8944

b = 1.0000 + 2.0000i 0 0 1.0000 - 2.0000i

2.6. Trabalhando com matrizes size Def: Retorna as dimenses de uma matriz Sintaxe:

Pgina 13 de 84

Apostila de MATLAB 7.3 [m,n] = size(A) Retorna em m o nmero de linhas e em n o nmero de colunas

>> A=[1 1; 2 3]; >> [m,n]=size(A)

m = 2

n = 2

find Def: Procura os elementos em uma matriz de tal modo a respeitar a lgica fornecida, retornando os ndices que descrevem estes elementos. Sintaxe: ind = find(X) Retorna os ndices dos elementos no-nulos ma matriz X. [row,col] = find(X, ...) Retorna em row uma matriz coluna com os ndices das linhas dos elementos da matriz e em col a matriz coluna contendo os ndices correspondentes as colunas dos elementos da matriz X. [row,col,v] = find(X, ...) Retorna em row uma matriz coluna com os ndices das linhas dos elementos da matriz e em col a matriz coluna contendo os ndices que descrevem as colunas dos elementos da matriz X e em v a matriz contendo os elementos de X.

A=[1 1; 0 3]; >> find(A)

ans = 1 3 4 >> X = [3 2 0; -5 0 7; 0 0 1]; >> [r,c,v] = find(X>2); >> [r c]

Pgina 14 de 84

Apostila de MATLAB 7.3


ans =

1 2

1 3

Veja no ultimo caso acima que r e c retornam em os ndices das linhas e das colunas correspondentes aos elementos que respeitam a expresso oferecida. Obviamente, os elementos a11 e a23 so os nicos maiores que 2. sort Def: Retorna o vetor dado ou elementos de uma matriz em ordem crescente Sintaxe: sort(A) Retorna os elementos das colunas da matriz A em ordem crescente

>> sort(A)

ans = 1 2 1 4

fliplr Def: Espelha as colunas de uma matriz Sintaxe: fliplr(A) Espelha as colunas da matriz A

>> A=[1 2;3 4]

A = 1 3 2 4

>> fliplr(A)

ans =

Pgina 15 de 84

Apostila de MATLAB 7.3

2 4

1 3

flipud Def: Espelha as linhas de uma matriz Sintaxe: flipud(A) Espelha as linhas da matriz A

>> A=[1 2;3 4]

A = 1 3 2 4

>> flipud(A)

ans = 3 1 4 2

Exerccio 1- Gere uma seqncia de nmeros mltiplos de 3 compreendidos entre 100 e 132, dispostos num vetor por ordem decrescente. Exerccio 2- Gere uma seqncia a comear em e a acabar em com um passo de /15.

Exemplo 1- Dado o circuito, calcule as tenses nos ns 1 e 2:


R1 1
V

R3 N 2

N
V

V1 10Vdc R2 5 R4 10 I1 2Adc

Pgina 16 de 84

Apostila de MATLAB 7.3

1 v R i = G v i= 1 1 1 10 + + 1 = 1 5 2 -1 2 2 -1 -1 G i = G G v v = G -1 i -1 2 v1 1 1 v2 + 2 10

>> i=[10/1 ; 2]

i = 10 2

>> G=[1/1+1/5+1/2 -1/2 ; -1/2 1/2+1/10 ]

G = 1.7000 -0.5000 -0.5000 0.6000

>> v=inv(G)*i

v = 9.0909 10.9091

11.0V

10.5V

10.0V

9.5V

9.0V 0s V(R1:2) 0.1s 0.2s V(R3:1) 0.3s 0.4s 0.5s Time 0.6s 0.7s 0.8s 0.9s 1.0s

Pgina 17 de 84

Apostila de MATLAB 7.3 3. VETORES

3.1. Declarao possvel trabalhar com vetores no MATLAB, cuja representao feita baseando-se numa matriz linha. Por exemplo, para obter o vetor (1,3,8), basta iniciarmos com:

>> R=[1 3 8]

R = 1 3 8

Portanto, todas as operaes se tornam possveis a partir do uso de funes apropriadas. importante salientar que certas funes exigem a declarao de vetores por matriz coluna, entretanto, nada que uma consulta no help para ajudar. Uma operao bsica com vetores na determinao do nmero de elementos, a partir da funo length, assim como no clculo do seu mdulo, usando a funo norm, ambas definidas abaixo. Logo depois, sero dadas algumas funes que trabalham com vetores. length Def: Retorna o nmero de elementos que compem o vetor. Sintaxe: length (A) Calcula o numero de termos do vetor A

>>A=[8 9 5 7]; >> length(A)

ans = 4

Pgina 18 de 84

Apostila de MATLAB 7.3 norm Def: Retorna o tamanho, ou seja, o mdulo do vetor. Sintaxe: norm(A) Calcula o mdulo do vetor A

>> x = [0 5 1 7];

>> sqrt(0+25+1+49)

% Forma Euclidiana

ans = 8.6603

>> norm(x) % Usando norm

ans = 8.6603

Exerccio 3- Tome um nmero inteiro aleatoriamente, entre 0 a 100, e crie um vetor com o nmero de elementos igual ao nmero escolhido. Determine o seu mdulo e a sua dimenso.

3.2. Operaes Quando se deseja calcular o produto vetorial, ou cruzado, de vetores, utiliza-se a funo cross, apresentada a seguir: cross Def: Calcula o produto vetorial entre A e B. Sintaxe: C = cross(A,B) C = cross(A,B,dim)

De modo anlogo, define-se a funo dot como a responsvel pelo produto escalar de dois vetores dados, conforme definio a seguir.

Pgina 19 de 84

Apostila de MATLAB 7.3 dot Def: Determina o produto escalar entre dois vetores. Sintaxe: C = dot(A,B) C = dot(A,B,dim)

>> a = [1 7 3]; >> b = [5 8 6]; >> c = cross(a,b) >> d = dot(a,b)

Alm disso, qualquer outra operao possvel, como soma e subtrao, mas se deve atentar-se o fato de que ambos os vetores devem possuir a mesma dimenso. Dando continuidade, sero definidas algumas funes que podero ser teis quando se trabalha com vetores ou at mesmo com matrizes. min Def: Retorna os valores mnimos de um vetor ou o das colunas de uma matriz. Sintaxe: min(A) Retorna em um vetor linha os maiores valores de cada linha da matriz A min(A,B) Retorna uma matriz com os menores valores de cada posio correspondente de ambas as matrizes [a,b]=min(A) Retorna em a os menores valores de cada coluna e em b a posio dos mesmos nas suas respectivas colunas

>> A=[1 4; 2 4]; >> [a,b]=min(A)

a = 1 b = 1 2 1

Pgina 20 de 84

Apostila de MATLAB 7.3 max Def: Retorna os valores mximos de um vetor ou o das colunas de uma matriz. Sintaxe: max(A) Retorna em um vetor linha os maiores valores de cada linha da matriz A max(A,B) Retorna uma matriz com os maiores valores de cada posio correspondente de ambas as matrizes [a,b]=max(A) Retorna em a os maiores valores de cada coluna e em b a posio dos mesmos nas suas respectivas colunas

>> [a,b]=max(A)

a =

b =

sum Def: Calcula o somatrio dos elementos de um vetor ou o somatrio das colunas de uma matriz. Sintaxe: sum(x) retorna a(o) soma/produto dos elementos de um vetor ou a(o) soma/produto das colunas de uma matriz

>> sum(A)

prod Def: Calcula o produtrio dos elementos de um vetor ou o produtrio das colunas de uma matriz.

Pgina 21 de 84

Apostila de MATLAB 7.3 Sintaxe: prod(x) retorna a(o) soma/produto dos elementos de um vetor ou a(o) soma/produto das colunas de uma matriz

>> prod(A)

Exerccio 4- Os trs vrtices de um tringulo esto em A (6,-1,2), B (-2,3,-4) e C (-3,1,5). Determine o vetor unitrio perpendicular ao plano no qual o tringulo est localizado. Tambm determine o ngulo BAC no vrtice A. Exerccio 5- Os trs vrtices de um tringulo esto em A (6,-1,2), B (-2,3,-4) e C (-3,1,5). Determine o vetor unitrio perpendicular ao plano no qual o tringulo est localizado. Tambm determine o ngulo BAC no vrtice A.

3.3. Sistemas de Coordenadas Existem funes no MATLAB que possibilitam as transformadas de coordenadas, conforme listadas a seguir: cart2pol Def: Converte do cartesiano para o polar/cilndrico. Sintaxe: [theta,rho,z] = cart2pol(x,y,z) [theta,rho] = cart2pol(x,y) pol2cart Def: Converte do polar/cilndrico para o cartesiano. Sintaxe: [x,y] = pol2cart(theta,rho) [x,y,z] = pol2cart(theta,rho,z)

Pgina 22 de 84

Apostila de MATLAB 7.3 cart2sph Def: Transforma do cartesiano para o esfrico. Sintaxe: [theta,phi,r] = cart2sph(x,y,z) sph2cart Def: Transforma do esfrico para o cartesiano. Sintaxe: [x,y,z] = sph2cart(theta,phi,r)

Um exemplo para o uso destas funes na utilizao das equaes de potenciais eltricos para determinadas distribuies de carga que so simtricos a um sistema de coordenadas. Vejamos o exemplo abaixo.

Exemplo 2- Um dipolo eltrico formado colocando uma carga de 1nC em (1,0,0) e uma outra carga de -1nC em (-1,0,0). Determine as linhas equipotenciais geradas a partir dessa configurao.

>> [x,y,z] = meshgrid(-0.5:.012:0.5); >> [teta,fi,r] = cart2sph(x,y,z); v = (1e-9*0.2*cos(teta))./(4.*pi.*8.85e-12.*r.^2); >> contourslice(x,y,z,v,[-0.5:0.5],[-0.5:0.5],[-0.5:0.5]); >> colormap hsv

Pgina 23 de 84

Apostila de MATLAB 7.3 4. FUNES MATEMTICAS

4.1. Funes Elementares O MATLAB contm um conjunto de funes que executam algumas funes matemticas elementares, como mdulo e raiz quadrada. A seguir disponibilizaremos uma lista de funes com uma breve descrio:

Funo log(X) log10(X) log2(X) exp(X) sqrt(X)

Descrio Determina o logaritmo natural de X Determina o logaritmo na base 10 de X Calcula o logaritmo de X na base 2 Determina a expresso de eX Retorna a raiz quadrada de X

4.2. Propriedades Fundamentais O MATLAB possui tambm funes que possibilitam os clculos elementares de matemtica, tais como mmc, mdc e entre outros. Por exemplo, as funes gcd e lcm retornam o mximo divisor comum e o mnimo mltiplo comum, respectivamente. Vejamos abaixo essas e outras funes similares:

gcd Def: Determina o mximo divisor comum entre dois parmetros. Sintaxe: G = gcd(A,B)

lcm Def: Determina o mnimo mltiplo comum entre dois parmetros. Sintaxe: G = lcm(A,B)

Pgina 24 de 84

Apostila de MATLAB 7.3 factorial Def: Retorna o fatorial de um argumento. Sintaxe: factorial(N)

nchoosek Def: Desenvolve a fatorao binomial, isto , retorna o nmero de

combinaes de n tomada k a k. Sintaxe: C = nchoosek(n,k)

primes Def: Devolve uma lista com n nmeros primos. Sintaxe: p = primes(n)

mod Def: Calcula o quociente da diviso de dois argumentos. Sintaxe: M = mod(X,Y)

rem Def: Determina o resto da diviso de dois argumentos. Sintaxe: R = rem(X,Y)

perms Def: Desenvolve todas as permutaes possveis dos argumentos

dados. Sintaxe: P = perms(v) v pode ser uma matriz com os nmeros nos quais deseja permut-los.

Pgina 25 de 84

Apostila de MATLAB 7.3 4.3. Nmeros Complexos O MATLAB proporciona um conjunto de funes que nos auxiliam no manuseio de nmeros complexos. Inicialmente, para definir um nmero complexo utilizam-se os operadores i e j (voltado mais para a engenharia). Por exemplo, para definirmos a=5+8i , fazemos:

>> X=2+3i X = 2.0000 + 3.0000i >> Y=2+3j Y = 2.0000 + 3.0000i

H uma outra forma de definir um nmero complexo no MATLAB, atravs da funo complex. A sua vantagem est na maior liberdade que se tem para alterar a parte imaginria, real, mdulo ou at mesmo a fase do nmero, no ponto de vista computacional. A definio dessa funo descrita como: complex Def: Retorna um nmero complexo a partir da sua parte real e da sua parte imaginria. Sintaxe: c = complex(a,b)

Exerccio 6- Determina o nmero complexo 5+9i utilizando a funo complex, Determina tambm a soma de 8+9i com 8e8i.

Quando se deseja trabalhar com mdulo, ngulo de fase, conjugado, ou entre outros, tornam-se fceis de serem calculados quando se utiliza a funo adequada. Na tabela a seguir sero denotadas algumas funes que possibilitam isso.

Pgina 26 de 84

Apostila de MATLAB 7.3 Funo abs(X) angle(X) conj(X) imag(X) real(X) Descrio Retorna o mdulo do nmero complexo X Retorna a fase do complexo X Calcula o conjugado do nmero complexo X Determina a parte imaginria de X Determina a parte real de X

Exerccio 7- Determina todos os parmetros intrnsecos ao nmero complexo


9e(5+3i ) .

4.4. Funes Trigonomtricas Quando trabalhamos com trigonometria, o MATLAB dispe de funes que operam neste ramo matemtico. O quadro abaixo resume bem algumas funes que possuem este fim.

Funo cos(X) sin(X) tan(X) sec(X) csc(X) cot(X)

Descrio Cosseno do argumento X em radianos Seno do argumento X em radianos Tangente do argumento X em radianos Secante do argumento X em radianos Cossecante do argumento X em radianos Cotangente do argumento X em radianos

Veja acima que estas funes retornam um valor correspondente a um argumento em radianos. Quando deseja entrar com um argumento em grau, basta utilizar o sufixo d em cada funo. Por exemplo, calculemos o seno de 30 em graus:

>> sind(30) ans = 0.5000

Pgina 27 de 84

Apostila de MATLAB 7.3 Entretanto, quando deseja calcular o arco correspondente a um valor pra uma dada funo, basta utilizar o prefixo a diante as funes. Como exemplo, determinemos o arco-tangente de 1 em radianos:

>> atan(1) ans = 0.7854

Caso queiramos saber em grau, faramos:

>> atand(1) ans = 45

Por fim, quando se deseja determinar a funo hiperblica, basta utilizar o sufixo h na funo dada. Vejamos no comando a seguir:

>> cosh(3) ans = 10.0677

De fato, o resultado coerente, pois:

>> (exp(3)+exp(-3))/2 ans = 10.0677

A tabela abaixo resume bem o uso de sufixo e prefixo nas funes trigonomtricas:

Prefixo a

Sufixo

Descrio Determina o arco de um valor

Exemplo atan cosd sinh

d h

Determina com um argumento em graus Determina a funo hiperblica

Pgina 28 de 84

Apostila de MATLAB 7.3 4.5. Aproximao Inteira Na biblioteca de funes do MATLAB, h uma variedade que trabalha no intuito do arredondamento de nmeros. Indubitavelmente, a mais importante a round, que arredonda para o inteiro mais prximo. Obviamente, esta importncia depende do ambiente prtico no qual a funo est sendo submetida. Algumas dessas funes, alm da round, esto definidas a seguir: ceil Def: Arredonda os elementos de A para o inteiro mais prximo e maior que os elementos de A. Sintaxe: B = ceil(A) floor Def: Arredonda os elementos de A para o inteiro mais prximo e menor que os elementos de A. Sintaxe: B = floor(A) fix Def: Arredonda os elementos de A para o inteiro mais prximo de tal modo que esteja em direo ao zero. Sintaxe: B = fix(A) round Def: Arredonda os elementos de A para o inteiro mais prximo desses elementos. Tambm vlido para nmeros complexos. Sintaxe: Y = round(X)

Pgina 29 de 84

Apostila de MATLAB 7.3 5. GRFICOS

5.1. Grficos Bidimensionais ezplot Def: Plota a expresso simblica f ( x) no domnio padro
-2p < x < 2p .

Sintaxe: ezplot(f) Plota a expresso f ( x) .


>> ezplot('sin(x)')
sin(x)

0.5

-0.5

-1

-6

-4

-2

0 x

plot Def: Plota as colunas de um vetor versus os ndices de cada elemento, se o vetor for real. Se for complexo plota a parte real pela parte imaginria de cada elemento. Sintaxe: plot(X) Se X for real, plota as colunas de X pelos ndices de cada elemento. plot(X) Se X for complexo, plota a parte real pela parte imaginria de cada elemento. equivalente a plot(real(X),imag(X)). plot(X,Y) Plota os elementos de X pelos de Y.
>> t = 0:pi/50:10*pi;

Pgina 30 de 84

Apostila de MATLAB 7.3


>> plot(t,sin(t))

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1

10

15

20

25

30

35

line Def: Cria uma linha no grfico atual. Sintaxe: line(X,Y) Cria uma linha definida nos vetores X e Y no grfico atual. line(X,Y,Z) Cria uma linha no espao tridimensional.

>> x=-2:0.01:5; >> line(x,exp(x))

150

100

50

0 -2

-1

Pgina 31 de 84

Apostila de MATLAB 7.3 stem Def: Plota uma seqncia de dados discretos. Sintaxe: stem(Y) Plota a seqncia de dados do vetor Y em um domnio discreto ao longo do eixo-x stem(X,Y) Plota X em funo de Y em um domnio discreto. X e Y devem ser vetores ou matrizes de mesmo tamanho.

>> x=-4:4; >> y=exp(x); >> stem(y)

60

50

40

30

20

10

compass Def: Plota vetores de componentes cartesianas a partir da origem de um grfico polar. Sintaxe: compass(U,V) Plota o vetor de componentes cartesianas U e V partindo da origem do grfico polar.

>> compass(2,3)

Pgina 32 de 84

Apostila de MATLAB 7.3

90 4 120 3 60

150

30

180

210

330

240 270

300

5.2. Grficos Tridimensionais ezplot3 Def: Plota uma curva espacial de trs equaes paramtricas no domnio padro 0 < t < 2p . Sintaxe: ezplot3(x,y,z) Plota a curva paramtrica x = x(t ) , y = y (t ) e z = z (t ) .
>> ezplot3('cos(t)','sin(t)','t')
x = cos(t), y = sin(t), z = t

7 6 5 4 z 3 2 1 0 1 0.5 0 -0.5 -1 y -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 1

0.8

Pgina 33 de 84

Apostila de MATLAB 7.3 plot3 Def: Plota tridimensionalmente um grfico. Sintaxe: plot(X,Y,Z) Plota uma ou mais linhas no espao tridimensional atravs de pontos cujas coordenadas so elementos dos vetores ou matrizes X,Y e Z.

>> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t)

35 30 25 20 15 10 5 0 1 0.5 0 -0.5 -1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 1

0.8

ezsurf Def: Plota a superfcie de um grfico de uma funo de duas variveis no domnio padro -2p < x < 2p e -2p < y < 2p . Sintaxe: ezsurf(X,Y,Z) Plota a superfcie paramtrica x = x ( s, t ) , y = y ( s, t ) e

z = z ( s, t ) no domnio -2p < s < 2p e -2p < t < 2p .


>> ezsurf('1/sqrt(x^2 + y^2)')

Pgina 34 de 84

Apostila de MATLAB 7.3


1/sqrt(x 2 + y 2)

7 6 5 4 3 2 1 0 6 4 2 0 -2 -4 -6 y -6 x -2 -4 0 2 4 6

meshgrid Def: Prepara a criao de uma superfcie de um grfico tridimensional. Sintaxe: [X,Y] = meshgrid(x,y) Transforma o domnio especificado pelos vetores x e y em matrizes de vetores X e Y, as quais podem ser usadas para preparar a plotagem de superfcie de um grfico tridimensional de uma funo de duas variveis.

>> [X,Y] = meshgrid(-2:.2:2, -2:.2:2); >> Z = X.* exp(-X.^2 - Y.^2);

surf Def: Plota a superfcie de um grfico de uma funo de duas variveis cujo domnio determinado pelo usurio. Sintaxe: surf(X,Y,Z) Plota a superfcie paramtrica de z em funo de x e y.

>> surf(X,Y,Z)

Pgina 35 de 84

Apostila de MATLAB 7.3

0.5 0.4 0.3 0.2 0.1 0 -0.1 -0.2 -0.3 -0.4 -0.5 2 1.5 1 0.5 0 -0.5 -1 -1.5 -2 -2 -1.5 -0.5 -1 0 0.5 1.5 1 2

5.3. Configurao Title Def: D um ttulo ao grfico Sintaxe: Title(string) D o ttulo string ao grfico atual.

>> compass(2,3) >> title('Grfico Polar')

Grfico Polar 90 4 120 3 60

150

30

180

210

330

240 270

300

Pgina 36 de 84

Apostila de MATLAB 7.3 axis Def: Determina os limites dos eixos coordenados X, Y e Z. Sintaxe: Axis([xmin xmax ymin ymax zmin zmax]) Define o eixo X de xmin a xmax, o eixo Y de ymin a ymax e o eixo Z de zmin a zmax.

>> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t) >> axis([-1.5 1.5 -1.5 1.5 -1 34])

30 25 20 15 10 5 0 1.5 1 0.5 0 -0.5 -1 -1.5 -1.5 -0.5 -1 0 0.5 1 1.5

grid Def: Adiciona ou remove as linhas de grade em um grfico. Sintaxe: grid on Adiciona as linhas de grade em um grfico. grid off Remove as linhas de grade em um grfico.

>> t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t) >> grid on

Pgina 37 de 84

Apostila de MATLAB 7.3

35 30 25 20 15 10 5 0 1 0.5 0 -0.5 -1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 1

0.8

Hold Def: Determina se objetos so adicionados ao grfico ou se substituem o existente. Sintaxe: Hold on Adiciona objetos no mesmo grfico Hold off Substitui os objetos existentes em um grfico pelos atuais.

>> x=-6:0.01:6; >> y=sin(x); >> plot(x,y) >> hold on >> t=-6:0.01:2; >> k=exp(t); >> plot(t,k)

Pgina 38 de 84

Apostila de MATLAB 7.3

-1 -6

-4

-2

Legend Def: Adiciona uma legenda ao grfico. Sintaxe: Legend(string1,string2) Adiciona as legendas string1 e string2 ao grfico atual.

>> x=-6:0.01:6; >> y=sin(x); >> plot(x,y) >> hold on >> t=-6:0.01:2; >> k=exp(t); >> plot(t,k) >> legend('Grfico 1: y=sen(x)','Grfico 2: y=exp(x)')

Pgina 39 de 84

Apostila de MATLAB 7.3

8 Grfico 1: y=sen(x) Grfico 2: y=exp(x) 7

-1 -6

-4

-2

xlabel, ylabel, zlabel Def: D um ttulo aos eixos X, Y e Z. Sintaxe: xlabel(string) D o ttulo string ao eixo X. ylabel(string) D o ttulo string ao eixo Y. zlabel(string) D o ttulo string ao eixo Z.

>> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t) >> xlabel('x=sin(t)') >> ylabel('y=cos(t)') >> zlabel('z=t')

Pgina 40 de 84

Apostila de MATLAB 7.3

35 30 25 20 z=t 15 10 5 0 1 0.5 0 -0.5 -1 y=cos(t) -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 1

0.8

x=sin(t)

xlim, ylim, zlim Def: Estipula os limites dos eixos X,Y e Z. Sintaxe: Xlim([xmin xmax]) Define o eixo X de xmin a xmax. Ylim([ymin ymax]) Define o eixo Y de ymin a ymax. Zlim([zmin zmax]) Define o eixo Z de zmin a zmax.

>> t = 0:pi/50:10*pi; >> plot3(sin(t),cos(t),t) >> xlim([-1.5 1.5]) >> ylim([-1.5 1.5]) >> zlim([-1 34])

Pgina 41 de 84

Apostila de MATLAB 7.3

30 25 20 15 10 5 0 1.5 1 0.5 0 -0.5 -1 -1.5 -1.5 -0.5 -1 0 0.5 1 1.5

figure Def: Cria uma nova janela para plotar grficos. Sintaxe: figure figure('PropertyName',propertyvalue,...) figure(h) h = figure(...) subplot Def: Divide a janela do grfico em uma matriz definida pelo usurio, podendo trabalhar com qualquer um. Sintaxe: h = subplot(m,n,p) or subplot(mnp) divide em m linhas, n colunas, plotando o grfico na posio p. Caso tenha uma matriz retangular, a contagem inicia-se no sentido anti-horrio do grfico superior esquerdo. subplot(m,n,p,'replace') subplot(m,n,p,'v6') subplot(h) subplot('Position',[left bottom width height]) h = subplot(...)

Pgina 42 de 84

Apostila de MATLAB 7.3


>> subplot(2,1,1),ezplot('sin(x)') >> subplot(2,1,2),ezplot('exp(x)')

sin(x) 1

0.5

-0.5

-1 -6 -4 -2 0 x 2 4 6

exp(x) 250 200 150 100 50 0 -4 -3 -2 -1 0 x 1 2 3 4 5 6

Exerccio 8- Plote as funes a seguir com os respectivos comandos e de acordo com cada item: 5*sen(x) plot; 4*sen(x+/3) ezplot; 3*sen(2*x) stem. a) Todas as funes no mesmo grfico; b) Cada funo em uma janela diferente; c) Todas as funes na mesma janela, mas em grficos diferentes.

Pgina 43 de 84

Apostila de MATLAB 7.3

Exemplo 3- Criao de arquivo em formato AVI

aviobj=avifile('Filme Seno.avi','fps',50); hold on; grid on; x=-4*pi:0.1:4*pi; for k=1:1:size(x,2)-1 xx=[x(k) x(k+1)]; yy=[sin(x(k)) sin(x(k+1))]; h=plot(xx,yy); set(h,'EraseMode','xor'); axis ([-10 10 -1.5 1.5]); frame=getframe(gca); aviobj=addframe(aviobj,frame); end aviobj=close(aviobj);

Pgina 44 de 84

Apostila de MATLAB 7.3

aviobj=avifile('Complexo.avi','fps',50); hold off; grid on; t=0:0.01:4*pi; x=cos(t); y=sin(t); for k=1:1:length(t) c=x(k)+i*y(k); h=compass(c); set(h,'EraseMode','xor'); frame=getframe(gca); aviobj=addframe(aviobj,frame); end aviobj = close(aviobj);

Pgina 45 de 84

Apostila de MATLAB 7.3 6. MATEMTICA SIMBLICA

H em algumas situaes a necessidade de se trabalhar com variveis simbolicamente, pois nos possibilita uma viso mais geral sobre o resultado de um problema. Como de praxe, o MATLAB no nos abandona neste quesito, reservando funes que possibilitam este mtodo. Uma funo bastante importante a syms, que declara as variveis como simblica. Uma outra funo a sym, que transforma uma expresso para a forma literal. Mais detalhes dessas funes so dadas a seguir: syms Def: Determina que os argumentos acompanhados tero carter simblico . Sintaxe: syms arg1 arg2 ... sym Def: Define variveis, expresses e objetos como simblicos. Sintaxe: S = sym(A) x = sym('x')

Como exemplo, veja a diferena dessas duas funes executando os comandos a seguir:

>> rho = sym('(1 + sqrt(5))/2') >> syms x y >> f = x^2*y + 5*x*sqrt(y)

Em alguns casos, quando se desejar determinar quais as variveis simblicas numa expresso, usa-se a funo findsym, que retorna os parmetros que so simblicos. Uma outra funo a subs, que substitui a

Pgina 46 de 84

Apostila de MATLAB 7.3 varivel declarada inicialmente simblica por uma outra ou mesmo por um nmero. Suas definies esto listadas abaixo: findsym Def: Determina as variveis simblicas em uma expresso. Sintaxe: findsym(S) findsym(S,n) subs Def: Define variveis, expresses e objetos como simblicos. Sintaxe: R = subs(S) R = subs(S, new) R = subs(S,old,new)

Exemplo: Dado o procedimento abaixo:

y=3;w=30; syms a b n t x z f = x^n+y; g = sin(a*t + b)-cosd(w);

Exemplo: Determine os parmetros que so simblicos em f e em g, assim como, de acordo com a ordem das variveis simblicas que aparecer, substituir todos pelo valor 2,3 para f e 4,7,1 para g, respectivamente.

7. OPERAES MATEMTICAS BSICAS

Nas variedades de funes que o MATLAB oferece, h algumas dedicadas para as operaes matemticas elementares, como na fatorao, calcular a funo inversa, em encontrar m.m.c. ou m.d.c., assim como determinar as razes de um polinmio. Por exemplo, para determinar o m.m.c. ou m.d.c. de dois nmeros A e B, utiliza-se lcm ou gcd, respectivamente (observa-se que a sintaxe a mesma Pgina 47 de 84

Apostila de MATLAB 7.3 que a declarada na seo 4.2). Isso tambm vlido para polinmios. Quando se quer determinar a inversa de uma funo, o comando finverse o adequado para isso. Exemplo: Calcule o m.m.c. dos polinmios x 2 - y 2 e de x3 - y 3 . Em seguida, determine a inversa de f = e x e de g = tanh( y ) .

7.1. Expresses Numricas Uma curiosidade que o MATLAB dispe de um conjunto de funes que contribuem para a fatorao, expanso, simplificaes e entre outros. O quadro abaixo resume bem cada funo. Funo collect expand horner factor simplify Definio Agrupa os coeficientes de acordo com o grau Expande a expresso em produtos e somas Determina o fator em comum da expresso Fatora o polinmio, se os coeficientes so racionais Simplifica as expresses, de forma mais geral. O dessas funes bastante semelhante, por exemplo, dada a expresso:
x ( x ( x - 6 ) + 11) - 6

Para agrup-la de al modo que possa ter uma organizao em relao ao grau do polinmio, faz:

>> syms x >> collect(x*(x*(x-6)+11)-6)

ans = -6+x^3-6*x^2+11*x

Pgina 48 de 84

Apostila de MATLAB 7.3 Exerccio 9- Verifique a relao trigonomtrica fundamental utilizando a funo simplify, logo aps, determine a forma expandida de tan( x + y ) .

7.2. Polinmios Agora trataremos com os polinmios. Para definir um polinmio no MATLAB, basta entrar com uma matriz linha, nos quais os elementos dela representam os coeficientes do maior para o menor grau. Por exemplo, o
8 4 polinmio 5 x3 - 9 x 2 + x + representado como p=[5 -9 8/5 4/7]. bom 5 7

lembrar que o seu polinmio pode ter elementos irracionais como, por exemplo,

2 ou p .
As principais funes destinadas para os polinmios so descritas a seguir. poly Def: Determina os coeficientes do polinmio a partir de suas razes. Caso a entrada seja uma matriz, este calcula o polinmio caracterstico da matriz. Sintaxe: p = poly(A) p = poly(r)

>> y=[-2 -1] y =

% Declara um vetor linha [-2 -1]

-2

-1

>> z=poly(y) z =

%z o polinmio (x+2)(x+1)=x+3x+2 %que tem como razes -2 e -1

>> A=[1 5 3; 0 -2 9; 2 11 -1]

A =

%Declara matriz

Pgina 49 de 84

Apostila de MATLAB 7.3

1 0 2

5 -2 11

3 9 -1

>> poly(A) caracterstico

%calcula

seu

polinmio

ans =

1.0000

2.0000 -106.0000

-5.0000

roots Def: Retorna um vetor coluna com a(s) raiz(es) do polinmio fornecido. Sintaxe: r = roots(c)

>> c=[1 3 2]

% declara um vetor correspondente ao polinmio

% x+3x+2 c =

>> x=roots(c) e -1

%Calcula as razes desse polinmio, que so -2

%Observe a oposio entre as funes roots e poly x =

-2 -1

polyval Def: Determina o valor do polinmio para uma determinada entrada. Se a entrada for uma matriz, a funo retorna o valor do polinmio para cada elemento. Sintaxe: y = polyval(p,X) y receber os valores do polinmio desenvolvido para cada elemento da matriz X. Pgina 50 de 84

Apostila de MATLAB 7.3


>> polinomio=[1 5 -2 8 3.2] %polinmio=x4+5x3-2x+8x+3.2

polinomio =

1.0000

5.0000

-2.0000

8.0000

3.2000

>> a=[1 -1; 3 2.83]

a =

1.0000 3.0000

-1.0000 2.8300

>> valores=polyval(polinomio,a)

valores = 15.2000 225.2000 -10.8000 187.2906

%valores(1,1)= a(1,1)4+5a(1,1)3-2 a(1,1)+8 a(1,1)+3.2

polyfit Def: Determina o polinmio interpolador com os pontos dados por x e y com o grau n. Os coeficientes so retornados numa matriz linha.

Sintaxe: p = polyfit(x,y,n)

>> x=[0: 0.1: 2.5]; >> y=sqrt(x); >> polinomio_interpolador=polyfit(x,y,3); >> pontos_interpoladores=polyval(polinomio_interpolador,x); >> plot(x,y,'color','r') >> hold on >> plot(x,pontos_interpoladores)

Pgina 51 de 84

Apostila de MATLAB 7.3 Exerccio 10- So dados os pontos (1;-1), (2;-7), (5;-8) e (8;10). Determine o polinmio que interpola estes pontos. Em seguida, calcule as suas razes e o esboce em um grfico, destacando o ponto no qual se tem o valor do polinmio para x=3.

7.3. Solucionando Equaes ou Sistemas Quando voc tiver um emaranhado de equaes, resultando em um sistema, o MATLAB poder ser uma tima soluo. Ao utilizar a funo solve, voc ser capaz de economizar tempo e evitar resolver um tedioso sistema braalmente. A declarao desta funo segue abaixo: solve Def: Determina o valor do polinmio para uma determinada entrada. Quando a soluo armazenada em uma varivel, o retorno dado em uma estrutura de dados. Sintaxe: solve(eq) Resolve a equao eq=0 solve(eq,var) Determina as solues de eq=0, em funo da varivel var. solve(eq1,eq2,...,eqn) Resolve um sistema de equaes definidas. g = solve(eq1,eq2,...,eqn,var1,var2,...,varn) Calcula as solues de um sistema de solues em funo das variveis pr-definidas.

Partindo para um mbito mais complexo, quando se trata de equaes diferenciais, a funo destinada para este caso a dsolve, definida abaixo:

dsolve Def: Soluciona simbolicamente uma equao ou sistema de equaes diferenciais ordinrias. Sintaxe: r = dsolve('eq1,eq2,...', 'cond1,cond2,...','v') r = dsolve('eq1','eq2',...,'cond1','cond2',...,'v') Pgina 52 de 84

Apostila de MATLAB 7.3 dsolve('eq1,eq2,...','cond1,cond2,...', 'v')

Exemplo 4- Determine a soluo de


>> dsolve('Dx = -a*x')

dx = -ax . dt

Exerccio 11- Determine a soluo de

dx = -ax . dt

Exerccio 12- Eu tinha o triplo da idade que tu tinhas, quando eu tinha a idade que tu tens. Quando tu tiveres a minha idade, a diferena de nossas idades ser de duas dcadas. Determine nossas idades utilizando a funo solve. Exerccio 13- Sabe que a acelerao de um carro em uma estrada a = -4 x , em que x representa a posio no instante t . Determine a posio no instante , sabendo que este carro parte, no instante 0, do ponto 1, sendo que o motorista parou instantaneamente enquanto estava em unidades no S.I.

p . Considere todas as 2

Pgina 53 de 84

Apostila de MATLAB 7.3 8. CLCULO DIFERENCIAL

O MATLAB disponibiliza funes que facilitam a operao de certos clculos que so difceis para o usurio. Por exemplo, a funo diff(), int() e limit so algumas delas, nas quais diferenciam, integram ou calculam o limite de uma funo de acordo com os parmetros oferecidos, respectivamente. Vejamos essas e outras funes a seguir:

8.1. Limites limit Def: Determina o limite de uma expresso simblica Sintaxe: limit(F,x,a) calcula o limite de uma expresso simblica F com x tendendo a a; limit(F,a) determina o limite de F com uma varivel simblica tendendo a a; limit(F) determina o limite com a = 0 como default; 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;
x2 -1 x2 -1

Exemplo 5- Faa o seguinte limite pelo MATLAB: lim +


x 1

>> limit('(abs(x^2)-1)/(x^2-1)',x,1,'right')

8.2. Diferenciao diff Def: Calcula a diferencial de uma funo/matriz dada. Sintaxe: diff(S) diferencia a expresso simblica S em funo de uma varivel simblica; diff(S,'v') diferencia S em torno de uma varivel simblica v; Pgina 54 de 84

Apostila de MATLAB 7.3 diff(S,n) diferencia, para um n inteiro positivo, S por n vezes; diff(S,'v',n) diferencia em torno de uma varivel v, S por n vezes.

Exemplo 6- Para determinar a derivada de 1 ordem de f ( x) = ln( x) + e x , faz-se:

>> syms x; >>f=sqrt(log(x)+exp(x)); >> diff(f)

ans =

1/2/(log(x)+exp(x))^(1/2)*(1/x+exp(x))

>> pretty(ans)

8.3. Integrao int Def: Calcula integral de uma funo simblica dada. Sintaxe: int(S) integrao indefinida a funo S em respeito a uma varivel simblica j definida; int(S,a,b) integra de forma definida a funo S de a a b; int(S,v,a,b) integra de a a b em funo de uma varivel v;

Exemplo 7- Dado a funo f ( x) = x 2 + 5 , calcule a integral: Indefinida


>> syms x >> y=sqrt(x^2+5); >> f=int(y,x) 1/2*x*(x^2+5)^(1/2)+5/2*asinh(1/5*5^(1/2)*x)

Definida de 2 a 5 Pgina 55 de 84

Apostila de MATLAB 7.3


>>g = int(y,x,2,5)

5/2*30^(1/2)+5/2*log(5^(1/2)+6^(1/2))-3-5/4*log(5)

Caso a visualizao de f no seja satisfatria, usa-se a funo pretty, que transforma a sada de acordo com a representao matemtica, conforme ilustra abaixo:
>> pretty(f)

Como a integral calculada de forma simblica, no calculado o valor numrico da funo g. Entretanto, o MATLAB no deixa a desejar neste ponto, como ao utilizar a funo eval. Por exemplo, fazendo a instruo abaixo, voc obtm:

>> eval(g)

8.4. Integrais definidas pela Regra Trapezoidal um mtodo utilizado quando a rea sob uma curva representada por trapzios entre um intervalo [a,b] pr-definido, sendo o nmero de divises n. Em representao matemtica, tem-se:
b-a ( f ( x0 ) + 2 f ( x1 ) + ... + 2 f ( xn-1 ) + f ( xn ) ) 2n

f ( x)dx =

em que xi representa o ponto no final de cada trapzio, sendo x0 = a e


xn = b . No MATLAB a funo que possibilita a partir deste mtodo o trapz,

definida abaixo: trapz Def: Determina a integrao de uma funo a partir da Regra do Trapzio. Sintaxe: Z = trapz(Y) Z = trapz(X,Y)

Pgina 56 de 84

Apostila de MATLAB 7.3 8.5. Integrais definidas pela Regra de Simpson O mtodo de Simpson baseado, dado trs pontos sobre a curva da funo, na aproximao desses pontos em uma parbola. Ento, tomados n subintervalos, onde n par, e cuja extremidade da curva delimitada por f (a ) e por f (b) , logo, a integral de uma funo f ( x) denotada por:

f ( x)dx

b-a [ f ( x0 ) + 4 f ( x1 ) + 2 f ( x2 ) + 4 f ( x3 ) + ... + 2 f ( xn-2 ) + 4 f ( xn-1 ) + f ( xn )] 3n

A maioria das calculadoras programadas utiliza esta a regra, que mais utilizada em termos computacionais. No MATLAB, a funo encarrega para esse fim a quad, mostrada abaixo: quad Def: Determina a integrao de uma funo a partir da Regra de Simpson. Sintaxe: q = quad(fun,a,b) q = quad(fun,a,b,tool) tool corresponde ao erro que a integral retornar, sendo o default de 10 3 - .

bom destacar que fun deve ser uma funo do tipo arquivo.m. Por exemplo, para calcular a integral de y = e - x no intervalo de 0 a 3, faz-se o
2

seguinte: Primeiro se cria o arquivo.m correspondente a funo que deseja integrar, ou seja:

function y=funcao(x) y=exp(-x^2);

Em seguida, basta utilizar a funo quad, conforme modelo abaixo:

>> quad('funcao',0,3) ans = 0.8862

Pgina 57 de 84

Apostila de MATLAB 7.3 8.6. Integrao Dupla O MATLAB possui a funo dblquad que determina a integral dupla de uma funo, conforme definio abaixo: dblquad Def: Determina a integrao dupla de uma funo. Sintaxe: q = dblquad(fun,xmin,xmax,ymin,ymax) q = dblquad(fun,xmin,xmax,ymin,ymax,tol) tol a preciso que deseja calcular, sendo o default 10-6 .

8.7. Integrao Tripla Tambm possvel calcular a integral tripla de uma funo no MATLAB, utilizando neste caso a funo triplequad, cuja definio segue abaixo: triplequad Def: Determina a integrao tripla de uma funo. Sintaxe: triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax) triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) tol a preciso que deseja calcular, sendo o default 10-6 .

8.8. Outras funes gradient Def: Determina o gradiente numericamente. Sintaxe: FX = gradient(F) retorna o coeficiente do gradiente de F em relao a x(default). [FX,FY,FZ,...] = gradient(F) retorna a matriz com os valores de x, y, z..., respectivamente. Pgina 58 de 84

Apostila de MATLAB 7.3 divergence Def: Determina o divergente de um campo vetorial. Sintaxe: div = divergence(X,Y,Z,U,V,W) determina o divergente do campo vetorial 3D U, V e W. X, Y e Z definem os limites de U, V e W,

respectivamente. div = divergence(X,Y,U,V) calcula agora para 2D. div = divergence(U,V,W) usa como default para X, Y e Z o valor de meshgrid(1:n,1:m,1:p).

Exemplo 8- Um exemplo clssico para o uso de gradiente seria na determinao do Campo Eltrico devido ao efeito de uma carga pontual de 18C. O cdigo segue abaixo.

>> [x,y,z]=meshgrid(-1:0.3:1); >> V=(18e-12)./(4.*pi.*8.85e-12.*sqrt(x.^2+y.^2+z.^2)); >> [px,py,pz]=gradient(V,0.3,0.3,0.3); >> Ex=(-1).*px; >> Ey=(-1).*py; >> Ez=(-1).*pz; >> quiver3(x,y,z,Ex,Ey,Ez) >> axis([-1 1 -1 1 -1 1])

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 1 0.5 0 -0.5 -1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 1

0.8

Pgina 59 de 84

Apostila de MATLAB 7.3 Veja que a funo quiver plota o que representaria o campo eltrico devido carga.

9. SRIES NUMRICAS

9.1. Somatrio Uma funo muito utilizada em Sries Numricas a symsum, que encontra o somatrio simblico de uma expresso. A sua descrio segue abaixo: symsum Def: Determina o somatrio simblico de uma expresso. Sintaxe: r = symsum(s) encontra o somatrio da funo s em funo de uma varivel simblica pr-definida. r = symsum(s,v) fornece o somatrio em funo da varivel v. r = symsum(s,a,b) determina o somatrio de s variando a incgnita de a at b. r = symsum(s,v,a,b) determina o somatrio de s variando a incgnita v de a at b.

Exerccio 14- Determine os seguintes somatrios:


x -1 0

a)

x2

b)

( 2n - 1)

9.2. Srie de Taylor

Pgina 60 de 84

Apostila de MATLAB 7.3 10.M-FILE

10.1. Definio O M-File uma ferramenta do MATLAB que auxilia a criao de funes. Atravs dela podemos definir o nome da funo, suas entradas e sadas. Para criar um novo M-file deve-se clicar em File New M-File. A declarao inicial a seguinte:
function [saida1, saida2, ...] = nome(entrada1, entrada2, ...)

%declarao do cdigo ...

Exemplo:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% % % % % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%% e v1 = o valor do primeiro elemento do vetor vetor2 = vetor multiplicado por 2 A funo recebe um vetor qualquer e retorna dois valores: Funo exemplo

function [vetor2, v1]= funcao(vetor) vetor2=vetor*2; %multiplica o vetor por 2 v1=vetor(1); entrada %retorna o primeiro elemento do vetor de

Para chamar a funo basta digitar na janela de comando o nome da funo com as entradas entre parnteses. Lembrar de salvar o M-File com o mesmo nome da funo!! Pgina 61 de 84

Apostila de MATLAB 7.3 Na janela de comandos do MATLAB podemos colocar um vetor como exemplo:
>> A=[2 A = 2 5 -8 4 1 6 5 -8 4 1 6]

>> [x,y]=funcao(A) x = 4 y = 2 10 -16 8 2 12

10.2. Organizao Para uma melhor organizao podemos fazer comentrios utilizando o smbolo %, ou selecionando o texto inteiro e teclando Crtl+R, ou %{ para abrir o comentrio por bloco e %} para fechar. Podemos ainda utilizar o smbolo %% para que, no mesmo M-File, o usurio possa rodar apenas algumas partes do programa. Para rodar somente a parte selecionada, tecle Ctrl+Enter e para rodar o programa inteiro clique em F5 ou em:

Exemplo:

Ao teclar Ctrl+Enter somente a Primeira Parte ser executada

Pgina 62 de 84

Apostila de MATLAB 7.3 11.PROGRAMANDO EM MATLAB

O MATLAB tambm oferece um ambiente para a programao assim como a linguagem C. As funes so bem parecidas, modificando apenas a forma de declar-la. if Def: Operao condicional. Executa as funes contidas no comando. Pode ser utilizado com else, que executa caso a condio declarada for falsa, e com elseif, que executa a funo caso outra condio posteriormente declarada for verdadeira. Para mais de uma condio, utiliza-se para e, &&, e para ou, ||. Sintaxe: if <condio> [Comandos] elseif <condio> [Comandos] else [Comandos] end for Def: Comando de iterao. Permite que um conjunto de instrues seja executado at que a condio seja satisfeita. Sintaxe: for <condio> [Comandos] end while Def: Comando de iterao. Executa um bloco de instrues enquanto a condio for verdadeira. Sintaxe:

Pgina 63 de 84

Apostila de MATLAB 7.3 while <condio> [Comandos] end switch Def: Operao condicional. Testa sucessivamente o valor da expresso dada e direciona para o caso especificado. Funciona como um bloco de ifs Sintaxe: switch <condio> case caso1 [Comandos] case {caso1, caso2, caso3, ...} [Comandos] otherwise condies) [Comandos] end (Caso no seja nenhuma das outras

a = 3; switch a case {2} disp('Resposta um') case {3} disp(' Resposta dois') case '5' disp(' Resposta tres') otherwise disp('Resposta ?') end

disp Def: Escreve no command window um texto ou o valor de um vetor, sem escrever seu nome. Sintaxe:

Pgina 64 de 84

Apostila de MATLAB 7.3 disp(x) input Def: Pede uma entrada do usurio pelo command window. Sintaxe: entrada = input(O que deseja?)

X = input('Entre um nmero\n') num = 10*X

Command Window:
Entre um nmero 23 X = 23 num = 230

break Def: Quebra um lao for ou while. Sintaxe: break

for i = 0:5 if i == 1 break end i = i + 1 end

Command Window:
i = 0 i = 1

Pgina 65 de 84

Apostila de MATLAB 7.3 continue Def: Passa para o prximo lao de um for ou while. Sintaxe: continue

for i = 0:3 if i == 1 && i == 2 continue end i = i + 1 end

Command Window:
i = 1 i = 4

Operadores Lgicos Def: Operadores lgicos

Entradas A B B 0 0 1 1 0 1 0 1

and A& |B 0 0 0 1

or A

not ~A

Xor Xor(A,B)

0 1 1 1

1 1 0 0

0 1 1 0

Exerccio 15- Utilizando matemtica simblica, crie um programa que calcule as razes de uma dada funo atravs dos mtodos abaixo. A entrada deve conter uma funo simblica e a preciso da raiz. a) Bisseco b) Newton-Raphson

Pgina 66 de 84

Apostila de MATLAB 7.3 11.1. Verificao de Erros

muito comum que depois de implementado, um programa apresente erros de lgica ou de sintaxe. O MATLAB, como em compiladores C, tambm apresenta uma ferramenta de Debug. Com essa ferramenta possvel se executar o cdigo do programa passo a passo, de modo a tornar mais fcil a localizao e de um erro e a sua correo. Abaixo segue alguns procedimentos para se Debugar:

1. Primeiro se adiciona break points, clicando com o boto direito do mouse nas linhas em que temos interesse de comear a verificao, e escolhendo a opo Set/Clear Breakpoint. Quando utilizamos um breakpoint numa linha, surge um ponto vermelho sua esquerda. 2. Depois de se criar os breakpoints pode-se chamar o m.file digitando o seu nome no workspace 3. O programa ser rodado at que o primeiro breakpoint seja encontrado. A partir da pode-se pressionar F10 para a execuo da linha seguinte do programa. 4. Caso se queira pular para o prximo breakpoint, basta pressionar F5 echo on/off Mostra o cdigo do M-file que est sendo executado no momento.

Pgina 67 de 84

Apostila de MATLAB 7.3 12.ANLISE DE SINAIS

12.1. Transformao de Varivel Independente

x ( t ) x (a t + b )

a < 1 Expanso a > 1 Compresso


a < 0 Reflexo

b 0 Deslocamento

Deslocamento no tempo:
clear, clc, clf x=-2:6; y=2*x; n0=input('n0= '); subplot(2,1,1),stem(x,y), grid on, xlim([-20 20]) hold on xnovo=x+n0; subplot(2,1,2),stem(xnovo,y);grid on, xlim([-20 20]) hold off

12 10 8 6 4 2 0 -2 -4 -20 -15 -10 -5 0 5 10 15 20

12 10 8 6 4 2 0 -2 -4 -20 -15 -10 -5 0 5 10 15 20

Pgina 68 de 84

Apostila de MATLAB 7.3 Reflexo


clear, clc, clf x=-2:8; y=x; subplot(2,1,1),stem(x,y), grid on, xlim([-20 20]) hold on xl=-x; subplot(2,1,2),stem(xl,y);grid on, xlim([-20 20]) hold off

-2 -20

-15

-10

-5

10

15

20

-2 -20

-15

-10

-5

10

15

20

Escalonamento
clear, clc, clf x=-2:6; y=2*x; a=input('a= ') subplot(2,1,1),stem(x,y), grid on, xlim([-20 20]) hold on xl=x/a; subplot(2,1,2),stem(xl,y);grid on, xlim([-20 20]) hold off

Pgina 69 de 84

Apostila de MATLAB 7.3


12 10 8 6 4 2 0 -2 -4 -20 -15 -10 -5 0 5 10 15 20

12 10 8 6 4 2 0 -2 -4 -20 -15 -10 -5 0 5 10 15 20

12.2. Funes Pr-definidas Impulso: 0, n 0 d [ n] = 1, n = 0


0, t 0 d (t ) = 1, t = 0

function [u] = impulso(n,N) for k=1:length(n) if n(k)~=N u(k)=0; else u(k)=1; end end

Command Window:
>> x=-2:7; >> y=impulso(x,3); >> stem(x,y)

Pgina 70 de 84

Apostila de MATLAB 7.3

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0 -2

-1

Degrau
0, n < 0 u [n] = 1, n 0 0, t < 0 u (t ) = 1, t 0

function [u] = degrau(n,N) for k=1:length(n) if n(k)<N u(k)=0; else u(k)=1; end end

Command Window:
>> n=-2:7; >> y=degrau(n,3); >> stem(n,y)

Pgina 71 de 84

Apostila de MATLAB 7.3

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0 -2

-1

Exerccio: Determine: a) y [ n ] = u [ n + 10] - 2u [ n + 5] + u [ n - 6]

>> n=-20:20; >> y=degrau(n,-10)-2*degrau(n,-5)+degrau(n,6); >> stem(n,y)

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1 -20

-15

-10

-5

10

15

20

Pgina 72 de 84

Apostila de MATLAB 7.3


1 b) y [ n ] = u [ n - 3] 2
>> n=-20:20; >> y=((1/2).^(n)).*degrau(n,3); >> stem(n,y)
n

0.14

0.12

0.1

0.08

0.06

0.04

0.02

0 -20

-15

-10

-5

10

15

20

1 c) y [ n ] = cos p n u [ n + 4] 2
>> n=-20:20; >> y=cos(0.5*pi*n).*degrau(n,-4); >> stem(n,y)
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1 -20

-15

-10

-5

10

15

20

Pgina 73 de 84

Apostila de MATLAB 7.3 d) y [ n ] = e 2 sen ( n )


>> n=-20:20; >> y=exp(2*(sin(n))); >> stem(n,y)
8

0 -20

-15

-10

-5

10

15

20

n e) y [ n ] = sinc 2
>> x=-20:1:20; >> y=sinc(x/2); >> stem(x,y)

0.8

0.6

0.4

0.2

-0.2

-0.4 -20

-15

-10

-5

10

15

20

Pgina 74 de 84

Apostila de MATLAB 7.3 bom salientar que nos exemplos anteriores foram dados exemplos de programas no qual se obtm as funes impulso e degrau. Entretanto, o MATLAB tambm possui funes que possibilitam isso de forma mais rpida, que so as funes dirac e a heaviside, conforme veremos a seguir: dirac Def: Obtm a funo delta de Dirac, ou seja, a funo impulso no intervalo determionado por x.. Sintaxe: dirac(x)

>> x=-10:10; >> y=dirac(x-5); >> stem(x,y) %Impulso no instante 5

heaviside Def: Determina a funo degrau no intervalo determinado por x. Sintaxe: dirac(x)

>> x=-10:10; >> y=dirac(x-5); >> stem(x,y) %Impulso no instante 5

Exemplo 9- Sabe-se que a funo impulso a derivada da funo degrau. Determina este fato utilizando o MATLAB.

>> syms x >> diff(heaviside(x),x) ans = dirac(x)

Exerccio 16- Verifique a integral de sen( x) d ( x - 5) .

Pgina 75 de 84

Apostila de MATLAB 7.3 12.3. Convoluo A convoluo uma ferramenta matemtica que expressa a sada de um sistema de tempo, seja este discreto ou contnuo, em funo de uma entrada pr-definida e da resposta ao impulso do sistema. O MATLAB possui uma funo chamada de conv que realiza a convoluo de sinais de durao finita. Por exemplo, sejam dois vetores x e h representando sinais. O comando y = conv(x, h) gera um vetor y que denota a convoluo dos sinais x e y. Veja que o nmero de elementos em y dado pela soma do nmero de elementos em x e y menos um, devido ao processo de convoluo. O vetor ny dado pelo espao de tempo tomado pela convoluo definido pelo intervalo entre a soma dos primeiros elementos de nx e nh e a soma dos ltimos elementos de nx e nh, sendo nx o espao tempo definido para o vetor x e nh o espao de tempo definido para o vetor h. ( ny = [(min(nx) + min(nh)):(max(nx) +max(nh))]; ) . Vejamos a sintaxe de conv abaixo: conv Def: Determina a convoluco de dois sinais ou a multiplicao de dois polinmios. Sintaxe: w = conv(u,v)

h=[1,2,1]; x=[2,3,-2]; y=conv(x,y)

Exemplo 10- Determine os coeficientes do polinmio obtido ao multiplicar os polinmios 5x 2 + 3x com 2x + 2 .

>> a=[3 3 0]; >> b=[2 2]; >> y=conv(a,b)

Pgina 76 de 84

Apostila de MATLAB 7.3


y = 6 12 6 0

Logo, o polinmio obtido seria 6x 3 + 12x 2 + 6x .

Exemplo 11- Determine


h[n] = u[n] - u[n - 10] .

resposta

de

um

sistema

com

entrada

x[n] = u[n - 2] - u[n - 7] , sabendo que a resposta desse sistema ao impulso

h=ones(1,10); x=ones(1,5); n=2:15; y=conv(x,h); stem(n,y);

Exerccio 17- Use o MATLAB para determinar a sada do sistema com entrada

x[n] = 2 {u[n + 2] - u[n - 12]} sabendo que a resposta ao impulso desse sistema
h[n] = 0,9n {u[n - 2] - u[n - 13]} .

12.4. Equaes de Diferenas As Equaes de Diferenas uma forma de expressarmos um sistema na forma recursiva que permita que a sada do sistema fosse computada a partir do sinal de entrada e das sadas passadas. Um comando que possvel realizar uma funo similar seria o filter, definida a seguir: filter Def: Expressa a descrio em equao de diferenas de um sistema em uma forma recursiva que permita que a sada do sistema seja computada a partir do sinal de entrada e das sadas passadas. Sintaxe: y = filter(b,a,X) y = filter(b,a,X,zi) Pgina 77 de 84

Apostila de MATLAB 7.3 Veja acima que apareceu o parmetro zi, que determina a condio inicial de y. Este zi uma matriz com as condies iniciais, sendo os valores passados de y.

Exemplo 12- Um exemplo clssico no uso de filter determinar a seqncia de Fibonacci, definida como o nmero atual ser igual a soma dos dois nmeros anteriores. Em linguagem matemtica, tem-se y[n] - y[n - 1] - y[n - 2] = 0 em que y a sada do sistema. Veja que ele no depende de uma entrada, mas ao usarmos o filter, necessrio usar a entrada apenas para definir o nmero de elementos da seqncia no qual se deseja obter, assim como um parmetro indispensvel para o uso da funo filter. Ser dado como condio inicial a matriz [1 0], correspondentes a entrada no desejada y[-1] e y[-2], indispensvel para obter os outros valores. O cdigo do programa que pode ser implementado no M-file segue abaixo. Neste caso, se deseja adquirir 20 valores.

a=[1, -1, -1]; b=[0]; x=ones(1,20); y=filter(b,a,x,[1 0])

Exerccio 18- Determine, utilizando filter, a seqncia tribonacci.

Quando se trabalha com sistemas de equaes de diferenas, no qual precisa determinar a resposta desse sistema ao impulso, o comando impz se torna bastante til. A sua sintaxe segue abaixo: impz Def: Determina a resposta ao impulso de um sistema de equaes de diferenas. Sintaxe: [h,t] = impz(b,a) [h,t] = impz(b,a,n) Pgina 78 de 84

Apostila de MATLAB 7.3 O comando [h,t] = impz(b,a,n) avalia n valores da resposta ao impulso de um sistema descrito por uma equao de diferenas. Os coeficientes da equao de diferenas esto contidos nos vetores b e a no que se refere a filter. O vetor h contm os valores da resposta ao impulso e t contm os ndices de tempo correspondentes.

12.5. FFT (Transformada Rpida de Fourier) A Transformada de Fourier leva uma funo no domnio do tempo para o domnio da freqncia, no qual podemos analisar as freqncias mais importantes (com maior amplitude) de uma funo. A transformada inversa de Fourier faz o processo inverso, passa uma funo do domnio da freqncia para o domnio do tempo.

A Transformada de Fourier e sua inversa podem ser calculadas a partir das expresses abaixo, respectivamente:

F (w ) =

S (t )e

- jwt

dt

1 S (t ) = 2p

F (w )e

jwt

dw

Onde w a freqncia fundamental.

A FFT (Transformada rpida de Fourier) um algoritmo computacional otimizado que calcula a Transformada Discreta de Fourier mais rapidamente. A FFT tambm pode servir de aproximao para a Transformada de Tempo Discreto de Fourier, Srie de Fourier e a prpria Transformada de Fourier.

Uma propriedade da Transformada de Fourier que a transformada da convoluo de duas funes equivale multiplicao das duas no domnio da freqncia. Portanto para calcular a convoluo de uma funo levamos os Pgina 79 de 84

Apostila de MATLAB 7.3 dois sinais para o domnio da freqncia, multiplicamos e voltamos para o domnio do tempo. Veja a expresso abaixo:
y (t ) = x (t ) * h(t ) = IFFT [ FFT ( x (t )).FFT ( h (t ))]

Exemplo 13- Dado o circuito RC abaixo, determine a resposta ao impulso e a corrente no capacitor iC (t ) quando a entrada x(t ) igual a e- t .

Resoluo: Clculo da resposta ao impulso:


Lei dos ns: i = iR + iC
dV dt Em t=0, i = d (t ) e iR = 0 i = iR + C

1 dV 1 d (t ) = V (0) = V (0+ ) = C dt C

Em t = 0+ , i (0+ ) = 0 V dV 1 -t Re soluoequao diferencial (1) 0 = + C V (t ) = e RC R dt C dV 1 - t RC i (t ) = h(t ) = C =e dt RC


h(t ) = 1 - t 12 e A 12

Para R=40k W e C=300 m F

Clculo da convoluo analiticamente:

Pgina 80 de 84

Apostila de MATLAB 7.3


iC (t ) = y (t ) =
-t

1 -(t -l )12 x(l )h(t - l ) d l = e- l - e dl 12 - 0


t t t -t

e 12 -11l 12 e 12 - e-t =e dl = 12 11 0

Clculo da convoluo atravs do MATLAB:


n=[0:0.08:81.84]; x=exp(-n); h=-exp(-n/12)/12; fftx=fft(x); ffth=fft(h); ffty=fftx.*ffth; y=ifft(ffty); plot(n,-abs(y)*0.08) title('Convoluo'); xlabel('t(s)'); ylabel('i(A)'); %multiplicao %inversa %amostragem %definio da entrada %definio da sada %clculo da fft

Convoluo 0

-0.01

-0.02

-0.03 i(A) -0.04 -0.05 -0.06 -0.07

10

20

30

40 t(s)

50

60

70

80

90

x(t ) = e -5t Exerccio 19- Calcule a convoluo das formas de onda h(t ) = cos(2.5t ) - t

Pgina 81 de 84

Apostila de MATLAB 7.3 12.6. Filtros Digitais O Matlab possui inmeras funes que permitem ao usurio descobrir a funo transferncia de diferentes tipos de filtros digitais: A funo de transferncia digital definida por H(z) onde z = e forma geral a funo de transferncia H(z) a seguinte:
H ( z) = H ( z) = B( z ) A( z ) b0 + b1 z -1 + b2 z -2 + ... + bn z -n a0 + a1 z -1 + a2 z -2 + ... + an z -n
jwt

. Na

Butter Def: Determina os coeficientes de um filtro Butterworth. Esse filtro pode ser passa baixa, passa alta, passa banda, rejeita banda. Sintaxe: [B,A] = Butter(N, Wn, tipo) Determina os coeficientes da funo transferncia dada a freqncia de corte e o tipo de filtro. Caso nada seja posto em tipo, o Matlab interpreta filtro passa baixa como padro. Freqz Def: Calcula os valores de uma funo complexa H(z) Sintaxe: Freqz(B,A,n) Utiliza 3 argumentos de entrada. O primeiro um vetor contendo os coeficientes do polinmio B(z) da Equao (1). O segundo um vetor contendo os coeficientes do polinmio A(z). O terceiro para especificar o nmero de valores de freqncias normalizadas que se quer no intervalo de 0 a p.

Exemplo 14 Gerar um sinal com duas senides de freqncias 5 e 80 Hz, com fs=200 Hz. Projetar um filtro para fs=200 Hz. Usar filtro de 2a ordem, Butterworth. Filtrar o sinal. Plotar a resposta em freqncia.

Pgina 82 de 84

Apostila de MATLAB 7.3


% Exemplo de filtros

fs=200; t=0:1/fs:1; T=1/fs;

% Freqncia de amostragem % Tempo de amostragem

x=sin(2*pi*5*t)+sin(2*pi*80*t); figure(4) plot(t,x) title('Sinal de Entrada') xlabel('tempo (s)') ylabel('amplitude')

% sinal de entrada

[B,A]=butter(2,20/(fs/2)); B A

% Determinar os coeficientes

% Mostrar coeficientes B % Mostrar coeficientes A

% Plotagem da resposta em freqncia h1=freqz(B,A,100) figure(1) plot(abs(h1)) grid title('Resposta em freqncia') xlabel('freqnca (Hz)') ylabel('amplitude')

% Filtragem figure(2) y=filter(B,A,x); plot(t,y,'k-') title('Sinal de Entrada') xlabel('tempo (s)') ylabel('amplitude')

Exerccio 20- Projete um filtro passa-alta de Butterworth de ordem 6, com freqncia de corte de 10 Hz. Use fs=400 Hz. Sinais a serem filtrados: senides de 1 e 20 Hz. Use as funes butter, filter e freqz.

Pgina 83 de 84

Apostila de MATLAB 7.3 13.REFERNCIAS BIBLIOGRFICAS

[1]

CARNAHAN, Brice, LUTHER, H. A. & WILKES, James O. Applied

numerical methods. John Wiley & Sons, Inc. Nova Iorque 1969.

[2]

GES, Hilder & TONAR, Ubaldo. Matemtica para Concursos. 6

Edio. ABC Editora. Fortaleza CE. 2001.

[3]

HAYKIN, Simon & VEEN, Barry Van. Sinais e Sistemas. Editora

Bookman. Porto Alegre RS. 2001

[4]

HAYT, William H. Jr. & BUCK, Jonh A. Eletromagnetismo. 6 Edio.

Editora LTC. Rio de Janeiro RJ. 2001.

[5]

LEITHOLD, Louis. O Clculo com Geometria Analtica. 3 Edio.

Volume I. Editora Habra. So Paulo SP. 1994.

[6]

NILSSON, James W & RIEDEL, Susan A. Circuitos Eltricos. 6 Edio.

Editora LTC. Rio de Janeiro RJ. 2003.

Pgina 84 de 84

Você também pode gostar