matlab apostila ufc

Upload: arsgirl

Post on 10-Apr-2018

257 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Matlab Apostila Ufc

    1/84

    Apostila de MATLAB 7.3

    Pgina 1 de 84

    UNIVERSIDADE FEDERAL DO CEAR

    DEPARTAMENTO DE ENGENHARIA ELTRICAPROGRAMA 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

  • 8/8/2019 Matlab Apostila Ufc

    2/84

    Apostila de MATLAB 7.3

    Pgina 2 de 84

    SUMRIO

    1. APRESENTAO....................................................................................................................4

    1.1. UTILIZANDO O HELP ..................................................................................................52. MATRIZES ...............................................................................................................................7

    2.1. DECLARAO.............................................................................................................7

    2.2. SOMA ........................................................................................................................8

    2.3. MULTIPLICAO .........................................................................................................8

    2.4. MATRIZES PR-DEFINIDAS...........................................................................................9

    2.5. PROPRIEDADES DE MATRIZES....................................................................................11

    2.6. TRABALHANDO COM MATRIZES ..................................................................................13

    3. VETORES...............................................................................................................................18

    3.1. DECLARAO...........................................................................................................18

    3.2. OPERAES ............................................................................................................19

    3.3. SISTEMAS DE COORDENADAS ...................................................................................22

    4. FUNES MATEMTICAS ..................................................................................................24

    4.1. FUNES ELEMENTARES..........................................................................................24

    4.2. PROPRIEDADES FUNDAMENTAIS................................................................................24

    4.3. NMEROS COMPLEXOS ............................................................................................26

    4.4. FUNES TRIGONOMTRICAS...................................................................................27

    4.5. APROXIMAO INTEIRA.............................................................................................295. GRFICOS.............................................................................................................................30

    5.1. GRFICOS BIDIMENSIONAIS.......................................................................................30

    5.2. GRFICOS TRIDIMENSIONAIS.....................................................................................33

    5.3. CONFIGURAO .......................................................................................................36

    6. MATEMTICA SIMBLICA ..................................................................................................46

    7. OPERAES MATEMTICAS BSICAS............................................................................47

    7.1. EXPRESSES NUMRICAS ........................................................................................48

    7.2. POLINMIOS.............................................................................................................49

    7.3. SOLUCIONANDO EQUAES OU SISTEMAS.................................................................52

    8. CLCULO DIFERENCIAL.....................................................................................................54

    8.1. LIMITES....................................................................................................................54

    8.2. DIFERENCIAO .......................................................................................................54

    8.3. INTEGRAO ............................................................................................................55

    8.4. INTEGRAIS DEFINIDAS PELA REGRA TRAPEZOIDAL......................................................56

    8.5. INTEGRAIS DEFINIDAS PELA REGRA DE SIMPSON ........................................................57

    8.6. INTEGRAO DUPLA .................................................................................................58

    8.7. INTEGRAO TRIPLA.................................................................................................58

    8.8. OUTRAS FUNES....................................................................................................58

  • 8/8/2019 Matlab Apostila Ufc

    3/84

    Apostila de MATLAB 7.3

    Pgina 3 de 84

    9. SRIES NUMRICAS............................................................................................................60

    9.1. SOMATRIO .............................................................................................................60

    9.2. SRIE DE TAYLOR.....................................................................................................60

    10.M-FILE....................................................................................................................................61

    10.1. DEFINIO...........................................................................................................6110.2. ORGANIZAO .....................................................................................................62

    11.PROGRAMANDO EM MATLAB............................................................................................63

    11.1. VERIFICAO DE ERROS ......................................................................................67

    12.ANLISE DE SINAIS.............................................................................................................68

    12.1. TRANSFORMAO DE VARIVEL INDEPENDENTE....................................................68

    12.2. FUNES PR-DEFINIDAS.....................................................................................70

    12.3. CONVOLUO......................................................................................................76

    12.4. EQUAES DE DIFERENAS .................................................................................77

    12.5. FFT(TRANSFORMADA RPIDA DE FOURIER) .........................................................79

    12.6. FILTROS DIGITAIS.................................................................................................82

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

  • 8/8/2019 Matlab Apostila Ufc

    4/84

    Apostila de MATLAB 7.3

    Pgina 4 de 84

    1. APRESENTAO

    MATLAB (MATrix LABoratory) uma linguagem de alto desempenho

    para computao tcnica. Integra computao, visualizao e programao emum 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 Varivel Descrio

    Format long 3.141592653589793 Com 16 dgitos

    Format short 3.1416 Com 5 dgitos

    Format short e 3.1416e+000 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 355/113 Aproximao racional

    Format hex 400921fb54442d18 Formato hexadecimal

  • 8/8/2019 Matlab Apostila Ufc

    5/84

    Apostila de MATLAB 7.3

    Pgina 5 de 84

    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 entreoutros.

    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:

  • 8/8/2019 Matlab Apostila Ufc

    6/84

    Apostila de MATLAB 7.3

    Pgina 6 de 84

    >> 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 rathera

    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:

  • 8/8/2019 Matlab Apostila Ufc

    7/84

    Apostila de MATLAB 7.3

    Pgina 7 de 84

    2. MATRIZES

    2.1. Declarao

    A declarao de matrizes feita da seguinte maneira:

    >> a = [1:10] %cria o vetor linha [1 2 3 4 5 6 7 8 9

    10]

    >> b = [0:0.5:3] %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 3 2 13

    5 10 11 8

    9 6 7 12

    4 15 14 1

    >>A(1,2); %Elemento de linha 1 e coluna 2

    >>A(:,3); %Elementos da coluna 3

    >>A(1,:); %Elementos da linha 1

    O MATLAB tambm aceita o concatenamento de matrizes, por

    exemplo:

    >> a=[ 4 1 ; 3 4];

    >> b= [ 2 3; 4 5];

    >> c=[a b];

    c =

    4 1 2 3

    3 4 4 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.

  • 8/8/2019 Matlab Apostila Ufc

    8/84

    Apostila de MATLAB 7.3

    Pgina 8 de 84

    2.2. Soma

    A soma de todos os elementos de uma matriz com um nmero feita

    da seguinte maneira:

    >> c =

    4 1 2 3

    3 4 4 5

    >> c+1

    ans =

    5 2 3 4

    4 5 5 6

    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 -2 14 8

    7 6 11 4

    2.3. Multiplicao

    Usa-se o sinal da multiplicao:

    >> a=[1 4 2; 7 8 5; 9 5 4];

    >> b=[4 2 -5; 0 1 3; 8 -2 1];

    >> c=a*b

    c =

    20 2 9

    68 12 -6

    68 15 -26

    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:

  • 8/8/2019 Matlab Apostila Ufc

    9/84

    Apostila de MATLAB 7.3

    Pgina 9 de 84

    >> 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 8 -100 8 15

    72 -10 4

    >> b./a

    ans =

    4.0000 0.5000 -2.5000

    0 0.1250 0.6000

    0.8889 -0.4000 0.2500

    >> a.^2

    ans =

    1 16 4

    49 64 25

    81 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 nuloszeros(m,n) Gera ma matriz m x n cujos termos so nulos

  • 8/8/2019 Matlab Apostila Ufc

    10/84

    Apostila de MATLAB 7.3

    Pgina 10 de 84

    >>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 1 1 1

    8 4 2 1

    27 9 3 1

    64 16 4 1

  • 8/8/2019 Matlab Apostila Ufc

    11/84

    Apostila de MATLAB 7.3

    Pgina 11 de 84

    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.6068

    0.2311 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 1

    2 3

    >> A'

    ans =1 2

    1 3

    det

    Def: Calcula o determinante de uma matriz

    Sintaxe:

    det(A) Calcula o determinante da matriz A

  • 8/8/2019 Matlab Apostila Ufc

    12/84

    Apostila de MATLAB 7.3

    Pgina 12 de 84

    >>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 4

    2 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 8

    4 9

    >> inv(A)

  • 8/8/2019 Matlab Apostila Ufc

    13/84

    Apostila de MATLAB 7.3

    Pgina 13 de 84

    ans =

    0.6923 -0.6154

    -0.3077 0.3846

    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

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

    A =

    1 -1

    4 1

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

    a =

    0 - 0.4472i 0 + 0.4472i

    -0.8944 -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:

  • 8/8/2019 Matlab Apostila Ufc

    14/84

    Apostila de MATLAB 7.3

    Pgina 14 de 84

    [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 osndices das linhas dos elementos da matriz e em cola matriz coluna contendo

    os ndices correspondentes as colunas dos elementos da matriz X.

    [row,col,v] = find(X, ...) Retorna em rowuma matriz coluna com os

    ndices das linhas dos elementos da matriz e em cola 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]

  • 8/8/2019 Matlab Apostila Ufc

    15/84

    Apostila de MATLAB 7.3

    Pgina 15 de 84

    ans =

    1 1

    2 3

    Veja no ultimo caso acima que re cretornam em os ndices das linhase das colunas correspondentes aos elementos que respeitam a expresso

    oferecida.

    Obviamente, os elementos a11 e a23 so os nicos maiores que 2.

    sort

    Def: Retornao vetor dado ou elementos de uma matriz em ordem

    crescenteSintaxe:

    sort(A) Retorna os elementos das colunas da matriz A em ordem

    crescente

    >> sort(A)

    ans =

    1 1

    2 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 2

    3 4

    >> fliplr(A)

    ans =

  • 8/8/2019 Matlab Apostila Ufc

    16/84

    Apostila de MATLAB 7.3

    Pgina 16 de 84

    2 1

    4 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 2

    3 4

    >> flipud(A)

    ans =

    3 4

    1 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

    um passo de

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

    R3

    2

    V1

    10Vdc

    V

    R4

    10

    R1

    1

    R2

    5

    I1

    2Adc

    0

    V

  • 8/8/2019 Matlab Apostila Ufc

    17/84

    Apostila de MATLAB 7.3

    Pgina 17 de 84

    1

    2

    1 1

    1

    1

    1 1 1 110

    1 5 2 211 1 1

    22 2 10

    i vR

    i G v

    vv

    G i G G v

    v G i

    - -

    -

    =

    =

    - + +

    = - +

    =

    =

    >> 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

    Time

    0s 0.1s 0.2s 0.3s 0.4s 0.5s 0.6s 0.7s 0.8s 0.9s 1.0s

    V(R1:2) V(R3:1)

    9.0V

    9.5V

    10.0V

    10.5V

    11.0V

  • 8/8/2019 Matlab Apostila Ufc

    18/84

    Apostila de MATLAB 7.3

    Pgina 18 de 84

    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

    helppara 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

  • 8/8/2019 Matlab Apostila Ufc

    19/84

    Apostila de MATLAB 7.3

    Pgina 19 de 84

    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.

  • 8/8/2019 Matlab Apostila Ufc

    20/84

    Apostila de MATLAB 7.3

    Pgina 20 de 84

    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 esubtrao, 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 umamatriz.

    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 1

    b =

    1 2

  • 8/8/2019 Matlab Apostila Ufc

    21/84

    Apostila de MATLAB 7.3

    Pgina 21 de 84

    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 =

    2 4

    b =

    2 1

    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.

  • 8/8/2019 Matlab Apostila Ufc

    22/84

    Apostila de MATLAB 7.3

    Pgina 22 de 84

    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)

    pol2cartDef: Converte do polar/cilndrico para o cartesiano.

    Sintaxe:

    [x,y] = pol2cart(theta,rho)

    [x,y,z] = pol2cart(theta,rho,z)

  • 8/8/2019 Matlab Apostila Ufc

    23/84

    Apostila de MATLAB 7.3

    Pgina 23 de 84

    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

  • 8/8/2019 Matlab Apostila Ufc

    24/84

    Apostila de MATLAB 7.3

    Pgina 24 de 84

    4. FUNES MATEMTICAS

    4.1. Funes Elementares

    O MATLAB contm um conjunto de funes que executam algumasfunes matemticas elementares, como mdulo e raiz quadrada. A seguir

    disponibilizaremos uma lista de funes com uma breve descrio:

    Funo Descrio

    log(X) Determina o logaritmo natural de X

    log10(X) Determina o logaritmo na base 10 de X

    log2(X) Calcula o logaritmo de X na base 2exp(X) Determina a expresso de eX

    sqrt(X) 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 gcde 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)

  • 8/8/2019 Matlab Apostila Ufc

    25/84

    Apostila de MATLAB 7.3

    Pgina 25 de 84

    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 nnmeros 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) vpode ser uma matriz com os nmeros nos quais

    deseja permut-los.

  • 8/8/2019 Matlab Apostila Ufc

    26/84

    Apostila de MATLAB 7.3

    Pgina 26 de 84

    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 iej(voltado mais para a engenharia). Porexemplo, 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.

  • 8/8/2019 Matlab Apostila Ufc

    27/84

    Apostila de MATLAB 7.3

    Pgina 27 de 84

    Funo Descrio

    abs(X) Retorna o mdulo do nmero complexo X

    angle(X) Retorna a fase do complexo X

    conj(X) Calcula o conjugado do nmero complexo Ximag(X) Determina a parte imaginria de X

    real(X) Determina a parte real de X

    Exerccio 7- Determina todos os parmetros intrnsecos ao nmero complexo(5 3 )

    9i

    e+ .

    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 Descrio

    cos(X) Cosseno do argumento X em radianos

    sin(X) Seno do argumento X em radianos

    tan(X) Tangente do argumento X em radianos

    sec(X) Secante do argumento X em radianos

    csc(X) Cossecante do argumento X em radianos

    cot(X) 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 dem cada funo. Por exemplo, calculemos o seno de

    30 em graus:

    >> sind(30)

    ans =

    0.5000

  • 8/8/2019 Matlab Apostila Ufc

    28/84

    Apostila de MATLAB 7.3

    Pgina 28 de 84

    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 hna 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 Sufixo Descrio Exemplo

    a Determina o arco de um valor atan

    d Determina com um argumento em graus cosd

    h Determina a funo hiperblica sinh

  • 8/8/2019 Matlab Apostila Ufc

    29/84

    Apostila de MATLAB 7.3

    Pgina 29 de 84

    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, estaimportncia 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)

  • 8/8/2019 Matlab Apostila Ufc

    30/84

    Apostila de MATLAB 7.3

    Pgina 30 de 84

    -6 -4 -2 0 2 4 6

    -1

    -0.5

    0

    0.5

    1

    x

    sin(x)

    5. GRFICOS

    5.1. Grficos Bidimensionais

    ezplot

    Def: Plota a expresso simblica ( )f x no domnio padro

    2 2xp p- < < .

    Sintaxe:

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

    >> ezplot('sin(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 decada 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;

  • 8/8/2019 Matlab Apostila Ufc

    31/84

    Apostila de MATLAB 7.3

    Pgina 31 de 84

    >> plot(t,sin(t))

    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))

    -2 -1 0 1 2 3 4 50

    50

    100

    150

    0 5 10 15 20 25 30 35-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • 8/8/2019 Matlab Apostila Ufc

    32/84

    Apostila de MATLAB 7.3

    Pgina 32 de 84

    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)

    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)

    1 2 3 4 5 6 7 8 90

    10

    20

    30

    40

    50

    60

  • 8/8/2019 Matlab Apostila Ufc

    33/84

    Apostila de MATLAB 7.3

    Pgina 33 de 84

    5.2. Grficos Tridimensionais

    ezplot3

    Def: Plota uma curva espacial de trs equaes paramtricas no

    domnio padro 0 2t p< < .

    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')

    1

    2

    3

    4

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    -1-0.8

    -0.6-0.4

    -0.20

    0.20.4

    0.60.8

    1

    -1

    -0.5

    0

    0.5

    1

    0

    1

    2

    3

    4

    5

    6

    7

    x

    x = cos(t), y = sin(t), z = t

    y

    z

  • 8/8/2019 Matlab Apostila Ufc

    34/84

    Apostila de MATLAB 7.3

    Pgina 34 de 84

    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)

    ezsurf

    Def: Plota a superfcie de um grfico de uma funo de duas variveis

    no domnio padro 2 2xp p- < < e 2 2yp p- < < .Sintaxe:

    ezsurf(X,Y,Z) Plota a superfcie paramtrica ( ),x x s t = , ( ),y y s t = e

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

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

    -1-0.8

    -0.6-0.4

    -0.20

    0.20.4

    0.60.8

    1

    -1

    -0.5

    0

    0.5

    1

    0

    5

    10

    15

    20

    25

    30

    35

  • 8/8/2019 Matlab Apostila Ufc

    35/84

    Apostila de MATLAB 7.3

    Pgina 35 de 84

    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 variveiscujo domnio determinado pelo usurio.

    Sintaxe:

    surf(X,Y,Z) Plota a superfcie paramtrica de zem funo de xe y.

    >> surf(X,Y,Z)

    -6

    -4-2

    0

    2

    4

    6

    -6

    -4

    -2

    0

    2

    4

    6

    0

    1

    2

    3

    4

    5

    6

    7

    x

    1/sqrt(x2 + y2)

    y

  • 8/8/2019 Matlab Apostila Ufc

    36/84

    Apostila de MATLAB 7.3

    Pgina 36 de 84

    5.3. Configurao

    Title

    Def: D um ttulo ao grfico

    Sintaxe:

    Title(string) D o ttulo stringao grfico atual.

    >> compass(2,3)

    >> title('Grfico Polar')

    -2-1.5

    -1-0.5

    00.5

    11.5

    2

    -2

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    2

    -0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    1

    2

    3

    4

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Grfico Polar

  • 8/8/2019 Matlab Apostila Ufc

    37/84

    Apostila de MATLAB 7.3

    Pgina 37 de 84

    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 xmina

    xmax, o eixo Y de ymina ymaxe o eixo Z de zmina zmax.

    >> t = 0:pi/50:10*pi;

    >> plot3(sin(t),cos(t),t)

    >> axis([-1.5 1.5 -1.5 1.5 -1 34])

    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

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    0

    5

    10

    15

    20

    25

    30

  • 8/8/2019 Matlab Apostila Ufc

    38/84

    Apostila de MATLAB 7.3

    Pgina 38 de 84

    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)

    -1-0.8

    -0.6-0.4 -0.2

    00.2

    0.40.6

    0.81

    -1

    -0.5

    0

    0.5

    1

    0

    5

    10

    15

    20

    25

    30

    35

  • 8/8/2019 Matlab Apostila Ufc

    39/84

    Apostila de MATLAB 7.3

    Pgina 39 de 84

    Legend

    Def: Adiciona uma legenda ao grfico.

    Sintaxe:

    Legend(string1,string2) Adiciona as legendas string1 e string2ao

    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)')

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

    0

    1

    2

    3

    4

    5

    6

    7

    8

  • 8/8/2019 Matlab Apostila Ufc

    40/84

    Apostila de MATLAB 7.3

    Pgina 40 de 84

    xlabel, ylabel, zlabel

    Def: D um ttulo aos eixos X, Y e Z.

    Sintaxe:

    xlabel(string) D o ttulo stringao eixo X.

    ylabel(string) D o ttulo stringao eixo Y.

    zlabel(string) D o ttulo stringao 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')

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

    0

    1

    2

    3

    4

    5

    6

    7

    8

    Grfico 1: y=sen(x)

    Grfico 2: y=exp(x)

  • 8/8/2019 Matlab Apostila Ufc

    41/84

    Apostila de MATLAB 7.3

    Pgina 41 de 84

    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])

    -1-0.8

    -0.6-0.4 -0.2

    00.2

    0.40.6

    0.81

    -1

    -0.5

    0

    0.5

    1

    0

    5

    10

    15

    20

    25

    30

    35

    x=sin(t)y=cos(t)

    z=t

  • 8/8/2019 Matlab Apostila Ufc

    42/84

    Apostila de MATLAB 7.3

    Pgina 42 de 84

    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 mlinhas, ncolunas,

    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(...)

    -1.5

    -1

    -0.5

    0

    0.5

    1

    1.5

    -1.5

    -1-0.5

    0

    0.5

    1

    1.5

    0

    5

    10

    15

    20

    25

    30

  • 8/8/2019 Matlab Apostila Ufc

    43/84

    Apostila de MATLAB 7.3

    Pgina 43 de 84

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

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

    Exerccio 8- Plote as funes a seguir com os respectivos comandos e de

    acordo com cada item: 5*sen(x) 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.

    -6 -4 -2 0 2 4 6

    -1

    -0.5

    0

    0.5

    1

    x

    sin(x)

    -4 -3 -2 -1 0 1 2 3 4 5 6

    0

    50

    100

    150

    200

    250

    x

    exp(x)

  • 8/8/2019 Matlab Apostila Ufc

    44/84

    Apostila de MATLAB 7.3

    Pgina 44 de 84

    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);

  • 8/8/2019 Matlab Apostila Ufc

    45/84

  • 8/8/2019 Matlab Apostila Ufc

    46/84

    Apostila de MATLAB 7.3

    Pgina 46 de 84

    6. MATEMTICA SIMBLICA

    H em algumas situaes a necessidade de se trabalhar com variveissimbolicamente, 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

  • 8/8/2019 Matlab Apostila Ufc

    47/84

    Apostila de MATLAB 7.3

    Pgina 47 de 84

    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 eB, utiliza-se lcmou gcd, respectivamente (observa-se que a sintaxe a mesma

  • 8/8/2019 Matlab Apostila Ufc

    48/84

    Apostila de MATLAB 7.3

    Pgina 48 de 84

    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 2 2x y- e de 3 3x y- . Em

    seguida, determine a inversa de xf e= e de tanh( )g 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. Oquadro abaixo resume bem cada funo.

    Funo Definio

    collect Agrupa os coeficientes de acordo com o grau

    expand Expande a expresso em produtos e somas

    horner Determina o fator em comum da expresso

    factor Fatora o polinmio, se os coeficientes so racionais

    simplify Simplifica as expresses, de forma mais geral.

    O dessas funes bastante semelhante, por exemplo, dada a

    expresso:

    ( )( )6 11 6 x x x- + -

    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

  • 8/8/2019 Matlab Apostila Ufc

    49/84

    Apostila de MATLAB 7.3

    Pgina 49 de 84

    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

    polinmio 3 28 4

    5 95 7

    x x x- + + representado como p=[5 -9 8/5 4/7]. bom

    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] % Declara um vetor linha [-2 -1]

    y =

    -2 -1

    >> z=poly(y) %z o polinmio (x+2)(x+1)=x+3x+2

    z = %que tem como razes -2 e -1

    1 3 2

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

    A = %Declara matriz

  • 8/8/2019 Matlab Apostila Ufc

    50/84

    Apostila de MATLAB 7.3

    Pgina 50 de 84

    1 5 3

    0 -2 9

    2 11 -1

    >> poly(A) %calcula o seu polinmio

    caracterstico

    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 =

    1 3 2

    >> x=roots(c) %Calcula as razes desse polinmio, que so -2

    e -1

    %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 desenvolvidopara cada elemento da matriz X.

  • 8/8/2019 Matlab Apostila Ufc

    51/84

    Apostila de MATLAB 7.3

    Pgina 51 de 84

    >> 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 -1.0000

    3.0000 2.8300

    >> valores=polyval(polinomio,a)

    valores =

    15.2000 -10.8000

    225.2000 187.2906

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

    polyfitDef: Determina o polinmio interpolador com os pontos dados por xe 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)

  • 8/8/2019 Matlab Apostila Ufc

    52/84

    Apostila de MATLAB 7.3

    Pgina 52 de 84

    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 varivelvar.

    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')

  • 8/8/2019 Matlab Apostila Ufc

    53/84

    Apostila de MATLAB 7.3

    Pgina 53 de 84

    dsolve('eq1,eq2,...','cond1,cond2,...', 'v')

    Exemplo 4- Determine a soluo dedx

    axdt

    = - .

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

    Exerccio 11- Determine a soluo dedx

    axdt

    = - .

    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 4a 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 em2

    p. Considere todas as

    unidades no S.I.

  • 8/8/2019 Matlab Apostila Ufc

    54/84

    Apostila de MATLAB 7.3

    Pgina 54 de 84

    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() elimitso 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 Fcom x

    tendendo a a;

    limit(F,a) determina o limite de Fcom 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 xtendendo a apela direita;

    limit(F,x,a,'left') calcula o limite com xtendendo a apela esquerda;

    Exemplo 5- Faa o seguinte limite pelo MATLAB:2

    21

    1lim

    1x

    x

    x+

    -

    -

    >> 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 Sem torno de uma varivel simblica v;

  • 8/8/2019 Matlab Apostila Ufc

    55/84

    Apostila de MATLAB 7.3

    Pgina 55 de 84

    diff(S,n) diferencia, para um ninteiro positivo, Spor nvezes;

    diff(S,'v',n) diferencia em torno de uma varivel v, Spor nvezes.

    Exemplo 6- Para determinar a derivada de 1 ordem de ( ) ln( )x

    f x x e= + ,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 Sem respeito a uma varivel

    simblica j definida;

    int(S,a,b) integra de forma definida a funo Sde aa b;

    int(S,v,a,b) integra de aa bem funo de uma varivel v;

    Exemplo 7- Dado a funo 2( ) 5 f x x= + , 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

  • 8/8/2019 Matlab Apostila Ufc

    56/84

    Apostila de MATLAB 7.3

    Pgina 56 de 84

    >>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 representadapor trapzios entre um intervalo [a,b]pr-definido, sendo o nmero de divises

    n. Em representao matemtica, tem-se:

    ( )0 1 1( ) ( ) 2 ( ) ... 2 ( ) ( )2

    b

    n na

    b a f x dx f x f x f x f x

    n-

    -= + + + +

    em que ix representa o ponto no final de cada trapzio, sendo 0x a= e

    nx 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)

  • 8/8/2019 Matlab Apostila Ufc

    57/84

    Apostila de MATLAB 7.3

    Pgina 57 de 84

    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:

    [ ]0 1 2 3 2 1( ) ( ) 4 ( ) 2 ( ) 4 ( ) ... 2 ( ) 4 ( ) ( )3

    b

    n n na

    b af x dx f x f x f x f x f x f x f x

    n- -

    - + + + + + + +

    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 de2x

    y e-= no intervalo de 0 a 3, faz-se o

    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

  • 8/8/2019 Matlab Apostila Ufc

    58/84

    Apostila de MATLAB 7.3

    Pgina 58 de 84

    8.6. Integrao Dupla

    O MATLAB possui a funo dblquadque 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 610- .

    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:

    triplequadDef: 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 610- .

    8.8. Outras funes

    gradient

    Def: Determina o gradiente numericamente.

    Sintaxe:

    FX = gradient(F) retorna o coeficiente do gradiente de Fem relao

    a x(default).

    [FX,FY,FZ,...] = gradient(F) retorna a matriz com os valores de x,

  • 8/8/2019 Matlab Apostila Ufc

    59/84

    Apostila de MATLAB 7.3

    Pgina 59 de 84

    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, Ye 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

    digo 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.20

    0.20.4

    0.60.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

    0.8

    1

  • 8/8/2019 Matlab Apostila Ufc

    60/84

    Apostila de MATLAB 7.3

    Pgina 60 de 84

    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 sem 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

    vde a at b.

    Exerccio 14- Determine os seguintes somatrios:

    a)1

    2

    0

    x

    x-

    b)( )

    2

    1

    1

    2 1n

    -

    9.2. Srie de Taylor

  • 8/8/2019 Matlab Apostila Ufc

    61/84

    Apostila de MATLAB 7.3

    Pgina 61 de 84

    10. M-FILE

    10.1. Definio

    O M-File uma ferramenta do MATLAB que auxilia a criao defunes. 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:

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%

    % Funo exemplo

    %

    % A funo recebe um vetor qualquer e retorna dois valores:

    %

    % vetor2 = vetor multiplicado por 2

    %

    % e v1 = o valor do primeiro elemento do vetor

    %

    %

    %

    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    %%%%

    function [vetor2, v1]= funcao(vetor)

    vetor2=vetor*2; %multiplica o vetor por 2

    v1=vetor(1); %retorna o primeiro elemento do vetor de

    entrada

    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!!

  • 8/8/2019 Matlab Apostila Ufc

    62/84

  • 8/8/2019 Matlab Apostila Ufc

    63/84

    Apostila de MATLAB 7.3

    Pgina 63 de 84

    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 aforma 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

    [Comandos]

    elseif

    [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

    [Comandos]

    end

    while

    Def: Comando de iterao. Executa um bloco de instrues enquanto a

    condio for verdadeira.

    Sintaxe:

  • 8/8/2019 Matlab Apostila Ufc

    64/84

    Apostila de MATLAB 7.3

    Pgina 64 de 84

    while

    [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

    case caso1

    [Comandos]

    case {caso1, caso2, caso3, ...}

    [Comandos]

    otherwise (Caso no seja nenhuma das outras

    condies)

    [Comandos]

    end

    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 windowum texto ou o valor de um vetor,

    sem escrever seu nome.

    Sintaxe:

  • 8/8/2019 Matlab Apostila Ufc

    65/84

    Apostila de MATLAB 7.3

    Pgina 65 de 84

    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

    breakDef: 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

  • 8/8/2019 Matlab Apostila Ufc

    66/84

    Apostila de MATLAB 7.3

    Pgina 66 de 84

    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 and or not Xor

    A B A &

    B

    A

    | B

    ~A Xor(A,B)

    0 0 0 0 1 0

    0 1 0 1 1 1

    1 0 0 1 0 1

    1 1 1 1 0 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

  • 8/8/2019 Matlab Apostila Ufc

    67/84

    Apostila de MATLAB 7.3

    Pgina 67 de 84

    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, tambmapresenta 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, eescolhendo 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.

  • 8/8/2019 Matlab Apostila Ufc

    68/84

    Apostila de MATLAB 7.3

    Pgina 68 de 84

    12. ANLISE DE SINAIS

    12.1. Transformao de Varivel Independente

    ( ) ( ) x t x t a b +

    1a < Expanso

    1a > Compresso

    0a < Reflexo

    0b 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

    -20 -15 -10 -5 0 5 10 15 20-4

    -2

    0

    2

    4

    6

    8

    10

    12

    -20 -15 -10 -5 0 5 10 15 20-4

    -2

    0

    2

    4

    6

    8

    10

    12

  • 8/8/2019 Matlab Apostila Ufc

    69/84

    Apostila de MATLAB 7.3

    Pgina 69 de 84

    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

    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

    -20 -15 -10 -5 0 5 10 15 20-2

    0

    2

    4

    6

    8

    -20 -15 -10 -5 0 5 10 15 20-2

    0

    2

    4

    6

    8

  • 8/8/2019 Matlab Apostila Ufc

    70/84

    Apostila de MATLAB 7.3

    Pgina 70 de 84

    12.2. Funes Pr-definidas

    Impulso:

    [ ]0, 0

    1, 0

    nn

    nd

    =

    =

    ( )0, 0

    1, 0

    tt

    td

    =

    =

    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)

    -20 -15 -10 -5 0 5 10 15 20-4

    -2

    0

    2

    4

    6

    8

    10

    12

    -20 -15 -10 -5 0 5 10 15 20-4

    -2

    0

    2

    4

    6

    8

    10

    12

  • 8/8/2019 Matlab Apostila Ufc

    71/84

  • 8/8/2019 Matlab Apostila Ufc

    72/84

    Apostila de MATLAB 7.3

    Pgina 72 de 84

    Exerccio: Determine:

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

    >> n=-20:20;

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

    >> stem(n,y)

    -2 -1 0 1 2 3 4 5 6 70

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    0.9

    1

    -20 -15 -10 -5 0 5 10 15 20-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • 8/8/2019 Matlab Apostila Ufc

    73/84

    Apostila de MATLAB 7.3

    Pgina 73 de 84

    -20 -15 -10 -5 0 5 10 15 20-1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    b) [ ] [ ]1

    32

    n

    y n u n

    = -

    >> n=-20:20;

    >> y=((1/2).^(n)).*degrau(n,3);

    >> stem(n,y)

    c) [ ] [ ]1cos 42

    y n n u np = +

    >> n=-20:20;

    >> y=cos(0.5*pi*n).*degrau(n,-4);

    >> stem(n,y)

    -20 -15 -10 -5 0 5 10 15 200

    0.02

    0.04

    0.06

    0.08

    0.1

    0.12

    0.14

  • 8/8/2019 Matlab Apostila Ufc

    74/84

    Apostila de MATLAB 7.3

    Pgina 74 de 84

    d) [ ] 2 ( )sen n y n e=

    >> n=-20:20;

    >> y=exp(2*(sin(n)));

    >> stem(n,y)

    e) [ ]n

    sinc

    2

    y n

    =

    >> x=-20:1:20;

    >> y=sinc(x/2);

    >> stem(x,y)

    -20 -15 -10 -5 0 5 10 15 200

    1

    2

    3

    4

    5

    6

    7

    8

    -20 -15 -10 -5 0 5 10 15 20-0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

  • 8/8/2019 Matlab Apostila Ufc

    75/84

    Apostila de MATLAB 7.3

    Pgina 75 de 84

    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 dirace 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); %Impulso no instante 5

    >> stem(x,y)

    heaviside

    Def: Determina a funo degrau no intervalo determinado por x.

    Sintaxe:

    dirac(x)

    >> x=-10:10;

    >> y=dirac(x-5); %Impulso no instante 5

    >> stem(x,y)

    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 ( ) ( 5)sen x xd - .

  • 8/8/2019 Matlab Apostila Ufc

    76/84

  • 8/8/2019 Matlab Apostila Ufc

    77/84

    Apostila de MATLAB 7.3

    Pgina 77 de 84

    y =

    6 12 6 0

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

    Exemplo 11- Determine a resposta de um sistema com a entrada

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

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

    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

    { }nh[n] 0,9 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)

  • 8/8/2019 Matlab Apostila Ufc

    78/84

    Apostila de MATLAB 7.3

    Pgina 78 de 84

    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 [ ] [ 1] [ 2] 0y n y n y n- - - - = 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 impzse

    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)

  • 8/8/2019 Matlab Apostila Ufc

    79/84

    Apostila de MATLAB 7.3

    Pgina 79 de 84

    O comando [h,t] = impz(b,a,n) avalia nvalores 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 hcontm os valores da resposta ao impulso e tcontm 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:

    ( ) ( )

    j t

    F S t e dt

    w

    w

    -

    -=

    1( ) ( )

    2

    j tS t F e d ww w

    p

    -

    =

    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

  • 8/8/2019 Matlab Apostila Ufc

    80/84

    Apostila de MATLAB 7.3

    Pgina 80 de 84

    dois sinais para o domnio da freqncia, multiplicamos e voltamos para o

    domnio do tempo. Veja a expresso abaixo:

    ( )( )( ) ( )* ( ) [ ( ). ( )]h tx t y t x t h t IFFT FFT FFT = =

    Exemplo 13- Dado o circuito RC abaixo, determine a resposta ao impulso e a

    corrente no capacitor ( )Ci t quando a entrada ( )x t igual ate- .

    Resoluo:

    Clculo da resposta ao impulso:

    Para R=40k W e C=300 mF

    Clculo da convoluo analiticamente:

    Lei dos ns:

    R Ci i i= +

    R

    dVi i C

    dt= +

    Em t=0, ( ) 0Ri t e id= =

    1 1( ) (0) (0 )

    dVt V V

    C dt C d += = =

    Re

    0 , (0 ) 0

    1(1) 0 ( )

    1( ) ( )

    tsoluoequaodiferencial RC

    tRC

    Em t i

    V dVC V t e R dt C

    dVi t h t C e

    dt RC

    + +

    -

    -

    = =

    = + =

    = = = -

    121

    ( )12

    t

    h t e A-

    = -

  • 8/8/2019 Matlab Apostila Ufc

    81/84

    Apostila de MATLAB 7.3

    Pgina 81 de 84

    Clculo da convoluo atravs do MATLAB:

    n=[0:0.08:81.84]; %amostragem

    x=exp(-n); %definio da entrada

    h=-exp(-n/12)/12; %definio da sada

    fftx=fft(x); %clculo da fft

    ffth=fft(h);

    ffty=fftx.*ffth; %multiplicao

    y=ifft(ffty); %inversa

    plot(n,-abs(y)*0.08)

    title('Convoluo');

    xlabel('t(s)');

    ylabel('i(A)');

    Exerccio 19- Calcule a convoluo das formas de onda5

    ( )

    ( ) cos(2.5 )

    t x t e

    h t t t

    - =

    = -

    ( )12

    0

    12 121112

    0

    1( ) ( ) ( ) ( )

    12

    12 11

    t tt

    C

    t tt t

    i t y t x h t d e e d

    e e ee d

    ll

    l

    l l l l

    l

    ---

    -

    -- --

    = = - = -

    -= - =

    0 10 20 30 40 50 60 70 80 90-0.07

    -0.06

    -0.05

    -0.04

    -0.03

    -0.02

    -0.01

    0Convoluo

    t(s)

    i(A)

  • 8/8/2019 Matlab Apostila Ufc

    82/84

    Apostila de MATLAB 7.3

    Pgina 82 de 84

    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 jwtz e= . Naforma geral a funo de transferncia H(z) a seguinte:

    ( )( )

    ( )

    B zH z

    A z=

    -1 -2 -

    0 1 2

    -1 -2 -

    0 1 2

    ...( )

    ...

    z n

    n

    z z n

    n

    b b z b z bH z

    a a z a a

    + + + +=

    + + + +

    ButterDef: 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.

    FreqzDef: 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=200Hz.

    Projetar um filtro para fs=200 Hz. Usar filtro de 2a ordem, Butterworth. Filtrar o sinal. Plotar a resposta em freqncia.

  • 8/8/2019 Matlab Apostila Ufc

    83/84

    Apostila de MATLAB 7.3

    Pgina 83 de 84

    % Exemplo de filtros

    fs=200; % Freqncia de amostragem

    t=0:1/fs:1; % Tempo de amostragem

    T=1/fs;x=sin(2*pi*5*t)+sin(2*pi*80*t); % sinal de entrada

    figure(4)

    plot(t,x)

    title('Sinal de Entrada')

    xlabel('tempo (s)')

    ylabel('amplitude')

    [B,A]=butter(2,20/(fs/2)); % Determinar os coeficientes

    B % Mostrar coeficientes B

    A % 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.

  • 8/8/2019 Matlab Apostila Ufc

    84/84

    Apostila de MATLAB 7.3

    13. REFERNCIAS BIBLIOGRFICAS

    [ 1 ] CARNAHAN, Brice, LUTHER, H. A. & WILKES, James O. Appliednumerical 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.