meu manual de matlab

Upload: jezebel-guedes

Post on 20-Feb-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/24/2019 Meu Manual de Matlab

    1/22

    Curso de Extensao:

    MatLab

    Sistema Interativo para Computacao Numerica

    Luziane F. de Mendonca

    Universidade Estadual de Campinas

    Centro Superior de Educacao Tecnologica - CESET

  • 7/24/2019 Meu Manual de Matlab

    2/22

    Parte I - NOCOES BASICAS SOBRE O SOFTWARE MATLAB

    Vera Lucia da Rocha Lopes Luziane Ferreira de Mendonca

    [email protected] [email protected]

    O MatLab e uma ferramenta computacional muito poderosa. Dentre inumeras outrasfuncoes, este software faz operacoes matematicas elementares como adicao, subtracao,

    multiplicacao e divisao, opera com numeros complexos, calcula razes quadradas, potencias,

    logaritmos e funcoes trigonometricas, armazena e recupera dados; cria, executa e armazena

    sequencias de comandos para automatizar o calculo de equacoes; faz comparacoes logicas

    e controla a ordem na qual os comandos sao executados; desenha o grafico dos dados de

    diversas maneiras e em varias dimensoes, executa algebra matricial, manipula polinomios,

    integra funcoes, manipula equacoes simbolicamente, etc., e ele vai alem disso.

    MatLab (MATrix LABoratory) e um software interativo de alto desempenho voltado

    para o calculo numerico. O MatLab integra varias areas da matematica em ambiente facil

    de usar, onde problemas e solucoes sao expressos da forma como eles sao escritos matemati-

    camente, ao contrario da programacao tradicional. Este software e amplamente utilizado

    por Engenheiros e Matematicos devido a grande abrangencia dos seus toolboxes, e de toda

    a estrutura que e possvel montar por meio dos arquivos de rotinas (aplicativos).

    Umtoolboxe uma colecao de funcoes internas que extendem a capacidade do MatLab

    em uma area particular. Essas funcoes, em geral, estao agrupadas em um unico diretorio,

    sao bem documentadas e sinalizadas, e incluem demonstracoes de como usa-las.

    A melhor forma de assimilar os seus comandos e perder a resistencia inicial e comecar

    a executar as primeiras operacoes e a entrada de dados. Em pouco tempo, a necessidade de

    fazer operacoes um pouco mais complexas surge, e o usuario busca por si so o aprendizado de

    mais funcoes deste software. De facil manicuplacao, o MatLab logo se torna uma ferramenta

    indispensavel ao usuario, que pode utiliza-lo das mais variadas formas.

    Esta apostila dedica-se ao usuario que deseja obter o seu primeiro contato com o

    software, descrevendo as funcoes basicas e tambem alguns dos recursos mais utilizados;

    o contexto matematico abordado aqui exige apenas o ensino medio como nvel mnimo,

    embora este software tambem possa ser utilizado como auxiliar didatico no ensino basico,

    e ate mesmo como ferramenta de trabalho no ensino superior.

  • 7/24/2019 Meu Manual de Matlab

    3/22

    1 Consideracoes Iniciais

    Uma vez carregado o MatLab, observamos o smbolo , ao qual chamaremos deprompt,

    e indica que o MatLab esta pronto para receber algum comando.

    Comecamos com a entrada de numeros e exemplos de operacoes basicas. Por exemplo,

    digitando

    a= 1

    temos como resposta:

    a= 1

    analogamente,

    b= 2

    b= 2

    assim, para somar e para subtrair dois numeros, digitamos

    c= a+b, d= a bc= 3

    d= 2

    No final de cada linha de comando, podemos colocar ; indicando para o MatLab

    executar o comando, mas nao exibir o resultado. Por exemplo, na multiplicacao:

    e= d c;

    o valor de e sera armazenado pelo MatLab, embora nao seja exibido na tela; caso precise

    ver qualquer um dos valores anteriores, digite a letra correspondente e o MatLab o exibira:

    e

    e= 6

    Os smbolos usados para as operacoes basicas entre numeros sao:

    Smbolo Operacao

    + adicao

    subtracao

    multiplicacao

    / divisao

    potenciacao

    Tabela 1: Operacoes basicas.

    O MatLab possui um conjunto de funcoes ja programadas, como as listadas nas

    tabelas a seguir, o que nao impede que construamos nossas proprias funcoes. As funcoes

  • 7/24/2019 Meu Manual de Matlab

    4/22

    trigonometricas podem ser calculadas usando os seguintes comandos:

    Smbolo Funcao

    sin(a) seno dea

    cos(a) coseno de a

    tan(a) tangente de a

    sec(a) secante de a

    csc(a) cosecante de a

    acot(a) arco cotangente dea

    asin(a) arco seno dea

    acos(a) arco coseno dea

    atan(a) arco tangente dea

    asec(a) arcosecante dea

    acsc(a) arco cosecante dea

    acot(a) arco cotangente dea

    Tabela 2: Funcoes trigonometricas.

    Outras funcoes podem ser calculadas diretamente utilizando os seguintes comandos:

    Smbolo Funcao

    sqrt(a) raz quadrada dea

    exp(a) exponencial de a

    log(a) logaritmo natural de a

    log2(a) logaritmo de a na base 2

    log10(a) logaritmo de a na base 10

    abs(a) calcula o modulo de a

    sign(a) retorna 1 se a e negativo,

    0 se a e nulo e 1 se a e positivo

    rem(a, b) resto da divisao entrea e b

    mod(a, b) valor dea modulo b

    round(a) inteiro mais proximo de afix(a) inteiro proximo dea mais proximo de 0

    floor(a) inteiro proximo e menor do que a

    ceil(a) inteiro proximo e maior do que a

    Tabela 3: Funcoes basicas.

  • 7/24/2019 Meu Manual de Matlab

    5/22

    1.1 Numeros Complexos

    Este software tambem consegue trabalhar com numeros complexos, e toma como padrao

    a letra i ou j como o numero imaginario. Assim, para armazenar um numero complexo

    basta digitar

    a= 4 + 3 i

    a= 4 + 3ialem disso, existem funcoes especiais destinadas a esses numeros:

    Smbolo Funcao

    real(a) parte real de a

    imag(a) parte imaginaria de a

    conj(a) conjugado complexo dea

    abs(a) modulo de a

    Tabela 4: Funcoes complexas.

    Uma observacao importante a fazer e que o MatLab faz distincao entre

    letras maiusculas e minusculas; logo, o numero A e diferente do numero a.

    1.2 Vetores

    Alem dos numeros reais e complexos, podemos trabalhar com vetores e matrizes. Paraentrarmos com o vetor coluna v = [1 2 3]T, por exemplo, basta digitar

    v= [1; 2; 3]

    v= 123

    O comando dot(u, v) calcula o produto interno entre os vetoresu e v. A adicao

    e a subtracao entre dois vetores pode ser calculada de maneira analoga a descrita para os

    numeros reais; pode-se multiplicar ou dividir um vetor por um escalar usando os smbolos

    e /.

    Tambem e possvel fazer operacoes com cada uma das componentes de um mesmo

    vetor ou entre dois ou mais vetores; para isto, basta digitar as letras que representam os

    vetores, e antes da operacao desejada, um ponto; por exemplo, para elevar cada componente

  • 7/24/2019 Meu Manual de Matlab

    6/22

    do vetorv ao quadrado, basta digitar:

    u= v. 2

    u= 149

    ou para multiplicar u e v componente a componente, basta digitar

    r= u. vr= 1

    827

    As funcoes da Tabela 2 e algumas funcoes da Tabela 3 podem ser aplicadas direta-

    mente a cada uma das componentes de um vetor:

    w= tan(u)

    w= 1.5574

    1.15780.4523

    O valor de ja e conhecido previamente pelo MatLab e pode ser chamado atraves

    da linha de comando:

    pi

    ans= 3.1416

    Caso desejemos visualizar mais casas decimais, podemos digitar o comando format

    long, e para retornar ao modo que exibe apenas 4 casas decimais, basta digitar format

    short:

    format long

    pi

    ans= 3.14159265358979

    format short

    pi

    ans= 3.1416

    Algumas vezes precisamos escrever vetores cujas componentes diferem entre si sempre

    de um mesmo valor; por exemplo, em t= [3 5 7 9 . . . 109]T, cujas componentes deslocam-

    se sempre com valor 2, seria muito complicado inserir esse vetor por completo na tela de

    comando. Assim, podemos apenas informar o valor inicial, o final, e o tamanho do passo

  • 7/24/2019 Meu Manual de Matlab

    7/22

    (distancia entre cada componente), que o proprio MatLab monta o vetor:

    t= 3 : 2 : 109

    t= 357...

    109

    Os demais comandos que podem ser utilizados em vetores seguem na tabela abaixo:

    Smbolo Funcao

    length(a) numero de componentes de a

    max(a) maior componente dea

    min(a) menor componente de a

    sum(a) soma das componentes dea

    prod(a) produto das componentes dea

    mean(a) media das componentes dea

    std(a) desvio padrao das componentes de a

    norm(a) norma euclidiana dea

    sort(a) ordena as componentes deaem ordem crescente

    diff(a) novo vetor com as diferecas de 2 componentes

    consecutivas de a

    Tabela 5: Funcoes para vetores.

    1.3 Matrizes

    Para entrar com uma matriz, basta entrar com os elementos linha por linha, separando as

    colunas por vrgula (ou apenas espaco), e as linhas por ponto-e-vrgula:

    M= [1, 2, 3; 4,5, 6; 7, 8,9]

    M = 1 2 3

    4 5 67 8 9

    As matrizes mais conhecidas possuem comandos especiais para monta-las, como a

    matriz identidade (comando eye), a matriz nula (comando zeros) e uma matriz formada

    por numeros 1 (comando ones); o que vier entre parenteses ao lado de cada um desses

    comandos corresponde ao numero de linhas e colunas da matriz, respectivamente:

  • 7/24/2019 Meu Manual de Matlab

    8/22

    I = eye(3, 3), Y = zeros(3, 2), Z = ones(2, 5)

    I = 1 0 00 1 00 0 1

    Y = 0 00 00 0

    Z = 1 1 1 1 11 1 1 1 1

    e possvel tambem gerar uma matriz com elementos aleatorios entre 0 e 1 por meio do

    comandorand(n,m), onde n representa o numero de linhas e m o de colunas.

    R = rand(3, 3)

    R= 0.9501 0.4860 0.45650.2311 0.8913 0.0185

    0.6068 0.7621 0.8214Podemos visualizar apenas uma componente da matriz, indicando a linha e a coluna

    em que se encontram:

    M(2, 3)

    ans= 6

    ou ate mesmo uma coluna (ou linha) inteira, entrando com o valor da coluna desejada e

    colocando : no lugar das linhas (ou colunas):

    M(:, 2)

    ans= 258

    B1 =M(3, :)

    B1 = 6 7 8

    Observemos os dois exemplos anteriores: a segunda coluna de Mfoi apenas exibida,

    e nao sera armazenada como vetor; enquato que a terceira linha de Malem de ser exibidana tela, foi armazenada como o vetor B1.

    Por fim tambem podemos selecionar apenas um pedaco da matriz para ser visualizado,

    indicando as linhas e colunas iniciais e finais

    M(1 : 2, 2 : 3)

  • 7/24/2019 Meu Manual de Matlab

    9/22

    ans= 2 35 6

    O comandoreshape(A,m,n)produz uma matrizmncujos elementos sao tomandos

    das colunas de A, da primeira coluna em diante; por exemplo,

    A= [1 4 9; 16 25 36], B = reshape(A, 3, 2)

    A = 1 4 9

    16 25 36B = 1 25

    16 94 36

    Outros comandos que podem ser utilizados em matrizes:

    Smbolo Funcao

    diag(A, k) vetor formado pela diagonalk de A

    diag(v) matriz cuja diagonal e o vetorv

    triu(A) matriz triangular superior formada pelos elementos da

    parte triangular superior de A

    tril(A) matriz triangular inferior formada pelos elementos da

    parte triangular inferior deA

    det(A) determinante de A

    inv(A) inversa de A

    rank(A) posto de A

    transpose(A) transposta de Aeig(A) autovalores de A

    svd(A) fatoracao SVD de A

    lu(A) fatoracao LU de A

    qr(A) fatoracao QR de A

    chol(A) fatoracao de Cholesky de A

    blkdiag(A, B, . . .) matriz bloco-diagonal, cuja diagonal e formada pelas

    matrizesA, B, . . .

    fliplr(A) reordena as colunas de A da direita para a esquerda

    flipud(A) redordena as linhas deA de baixo para cima

    rot90(A) rotaciona a matriz em 90 graus

    Tabela 6: Funcoes para matrizes.

  • 7/24/2019 Meu Manual de Matlab

    10/22

    2 Outros Comandos Importantes

    Alguns comandos permitem a visualizacao de diretorios ou pastas, limpar a memoria ou

    exibir as variaveis ja armazenas, limpar a tela de trabalho, etc., sendo muito uteis durante

    o manuseio do software; dentre os comandos listados na tabela a seguir, help e de grande

    utilidade, uma vez que exibe um resumo das funcoes de um dado comando (por exemplo,

    help chol); se usarmos so help, sera exibido uma lista de topicos, descrevendo os toolboxese as areas que possuem programas especficos ja implementados.

    Smbolo Funcao

    who exibe as variaveis

    whos exibe as variaveis e seus conteudos

    clear all apaga todas as variaveis da memoria

    clearb apaga a variavelb da memoria

    exit/quit finaliza o MatLabclc/home limpa a tela de trabalho

    clf limpa a figura atual

    ls oudir lista o conteudo da pasta atual

    helpcomando exibe ajuda sobrecomando

    Tabela 7: Funcoes auxiliares

    Quando nada da certo ou os resultados obtidos diferem dos que sao esperados, e

    comum o usuario perguntar por que?(em ingles, why?). Tantas vezes digitada na tela

    principal por desespero, esta palavra tornou-se um comando; o comando why tenta dar

    uma justificativa ao usuario por meio de um gerador aleatorio de frases:

    why

    Some hamster insisted on it.

    3 GraficosEste software permite desenhar graficos em duas e em tres dimensoes.

  • 7/24/2019 Meu Manual de Matlab

    11/22

    3.1 Graficos em 2D

    O comando plotdesenha o grafico de uma funcao, desde que o usuario forneca os pontos

    do domnio e os pontos da imagem, em dois vetores de tamanhos iguais; por exemplo, a

    sequencia de comandos abaixo vai produzir o grafico da funcao f(x) =x cos(x) :

    x= 10 : 0.1 : 10; y= x. sin(x); plot(x, y)

    10 8 6 4 2 0 2 4 6 8 106

    4

    2

    0

    2

    4

    6

    8

    Por padrao, o MatLab desenha o grafico da funcao em azul, mas voce podera escolhar

    entre as cores amarelo (y), rosa (m), azul claro (c), vermelho (r), verde (g), azul (b), branco

    (w) ou preto (k); tambem e possvel escolher o formato da linha entre solida (), pontilhada

    (:), pontilhada e tracejada (.), e apenas tracejada (); por fim, podemos escolher marcas

    nas linhas: pontos (.), crculos (o), marca em x (x), sinal positivo (+), estrela (), quadrado

    (s), losango (d), triangulo invertido (v), triangulo em pe (), triangulo deitado para a

    esquerda (), pentagrama (p) ou hexagrama (h).

    Para tanto, basta colocar no final do comando ploto smbolo que esta entre parenteses,

    correspondente a opcao desejada; por exemplo, a sequencia de comandos abaixo vai produzir

    o grafico da funcao s(x) =seno(x) em vermelho, no intervalo de 10 a 10:

    x= 10 : 0.1 : 10; s= sin(x); plot(x,s, r)

    10 8 6 4 2 0 2 4 6 8 101

    0.8

    0.6

    0.4

    0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Outra possibilidade e fazer varios graficos em uma mesma figura; para tanto, usa-se

    o comandohold. A partir do momento em que desejamos que os graficos fiquem na mesma

    figura, digitamoshold on, e depois, quando quisermos graficos em figuras diferentes, basta

    digitarhold off; por exemplo, a sequencia de comandos abaixo vai produzir os graficos das

  • 7/24/2019 Meu Manual de Matlab

    12/22

    funcoes ex(xd) = exp(xd 1), tracejado em vermelho, e c(xd) = cos(xd), pontilhado em

    preto, no intervalo de 2 a 2:

    clear all

    xd= 2 : 0.01 : 2; ex= exp(xd 1); plot(xd, ex, r )

    hold on

    c= cos(xd); plot(xd, c, k:)

    hold off

    2 1.5 1 0.5 0 0.5 1 1.5 20.5

    0

    0.5

    1

    1.5

    2

    2.5

    3

    Alem do controle de cores, tipos de linha e marcadores, o comando plot permite

    o controle da espessura da linha (comando LineWidth - padrao 0.5pt); em relacao aos

    marcadores, podemos controlar o tamanho (comandoMarkerSize- padrao 6pt), e selecionar

    suas cores (comandos MarkerEdgeColor e MarkerFaceColor). Como exemplo, temos os

    graficos das funcoesy1(x1) =x12 e y2(x1) =x13. O primeiro sera desenhado usando uma

    linha solida verde, com marcadores em formato de o, cuja cor foi selecionada como rosa;

    o segundo grafico sera desenhado usando uma linha tracejada preta, com marcadores em

    formato de quadrados, e cada um desses quadrados tera preenchimento na cor vermelha e

    tamanho de 10pt.

    clear all

    x1 = 1 : 0.1 : 1; y1 =x1. 2; y2 =x1. 3;

    hold on

    plot(x1, y1, g o, MarkerEdgeColor, m, LineWidth, 2);

    plot(x1, y2, ks, MarkerSize, 10, MarkerFaceColor, r)

    hold off

  • 7/24/2019 Meu Manual de Matlab

    13/22

    1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 11

    0.8

    0.6

    0.4

    0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    Podemos usar outros comandos ao inves de plot, quando desejamos obter escala

    logartmica em um dos eixos ou em ambos. Nesse caso, podemos usar os comandossemilogx

    (o qual desenha o grafico com escala logaritmica em x),semilogy(o qual desenha o grafico

    com escala logartmica emy) e loglog(o qual desenha o grafico com escala logartmica em

    ambos os eixos).

    No exemplo a seguir, utilizamos os graficos dos polinomios de Legendre ([2], pagina

    95) para ilustrar o uso dos comandosxlabel,ylabel,titlee legend, os quais inserem na figura,

    respectivamente, o nome do eixo x, do eixo y , o ttulo e a legenda.

    clear all

    x= 1 : 0.01 : 1; p1 =x; p2 = (3/2) x. 2 (1/2);

    p3 = (5/2) x. 3 (3/2) x; p4 = (35/8) x. 4 (15/4) x. 2 + (3/8);

    plot(x, p1, r:, x , p2, g , x , p3, b, x , p4, m);

    legend(n= 1, n= 2, n= 3, n= 4, 4)

    xlabel(x, FontSize, 12, FontAngle, italic)

    ylabel(Pn

    , FontSize, 12, FontAngle, italic)

    title(Polinomios de Legendre, FontSize, 14)

    grid on insere a grade tracejada no grafico

    1 0.8 0.6 0.4 0.2 0 0.2 0.4 0.6 0.8 11

    0.8

    0.6

    0.4

    0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    x

    Pn

    Polinomios de Legendre

    n=1n=2n=3n=4

  • 7/24/2019 Meu Manual de Matlab

    14/22

    Nos textos inseridos nas figuras, e posvel introduzir letras gregas (e smbolos), assim

    como alterar o formato da letra; neste ultimo caso, usamos \rm para texto normal, \bf

    para texto em negrito e \itpara texto em italico. Quanto as letras gregas, basta digitar os

    comandos citados na tabela a seguir:

    Smbolo Funcao Smbolo Funcao

    \alpha \Gamma

    \beta \Delta

    \gamma \Theta...

    ... ...

    ...

    \omega \Omega

    Tabela 8: Letras gregas.

    As funcoes mais utilizadas para desenhar um grafico em duas dimensoes sao dadas

    na tabela abaixo:

    Smbolo Funcao

    plot grafico simples de x y

    loglog grafico em escala logartmica em ambos os eixos

    semilogx grafico em escala logartmica no eixo x

    semilogy grafico em escala logartmica no eixo y

    plotyy grafico dex y com eixo y a direita e a esqueda

    polar grafico com coordenadas polares

    fplot grafico direto de uma funcao

    fill polgono fechado e preenchido

    area grafico com area preenchida

    pie grafico em formato torta

    comet desenha o grafico de forma animada

    bar grafico de barras

    Tabela 9: Graficos em duas dimensoes.

    O comandosubplot(m,n,p) desenha graficos em uma mesma janela, porem em planos

    independentes; os argumentos m e nrepresentam o numero de linhas e colunas em que os

    graficos serao dispostos e p a posicao do subplot na qual sera inserido o proximo grafico,

    respectivamente. Em geral, usa-se este comando, e a seguir (na mesma linha), digita-se o

  • 7/24/2019 Meu Manual de Matlab

    15/22

    comando para desenhar o grafico. Para ilustrar, seguem abaixo as linhas de comandos para

    gerar seis graficos, dispostos em duas linhas e tres colunas (subplot(2,3,p)); em cada uma

    das figuras sao exibidos graficos gerados por comandos diferentes, que possuem a mesma

    funcao que o comandoplotpara casos especiais. Em particular, o comando fplotdesenha o

    grafico de uma funcao previamente definida (em arquivo) ou definida na linha de comando;

    neste comando, pode-se selecionar os limites superiores e inferiores dos eixos e o tipo de

    linha do desenho (cor e formado).

    x= 1 : 0.01 : 4; y = x. 4 4 x+ 10; w = sin(x);theta= 0 : 0.01 : 2 pi;

    P = [0.1 0.3 0.7 0.8; 0.3 0.8 0.6 0.1]; rho= ones(1,length(theta));

    subplot(2, 3, 1), fplot(x cos(x) ((1 x) sin(x)), [4 pi4 pi], r:);

    subplot(2, 3, 2), fill(P(1, :), P(2, :), [0.8 0.8 1]);

    subplot(2, 3, 2), fill(P(1, :), P(2, :), [0.8 0.8 1]);

    subplot(2, 3, 3), loglog(x,y, b);

    subplot(2, 3, 4), polar(theta, rho,

    r

    );subplot(2, 3, 5), pie([2 4 3 5],North,South,East,West);

    subplot(2, 3, 6), area(x,w);

    10 0 1020

    15

    10

    5

    0

    5

    10

    15

    0 0.5 10.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    0.8

    100

    100

    101

    102

    103

    0.5

    1

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    North

    South

    East

    West

    1 2 3 41

    0.5

    0

    0.5

    1

    3.2 Graficos em 3D

    Para graficos em tres dimensoes, pode-se tambem desenhar graficos de linha (de forma

    analoga a feita com graficos 2-D):

  • 7/24/2019 Meu Manual de Matlab

    16/22

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

    grid on; xlabel(t), ylabel(sin(t)), zlabel(cos(t))

    1

    0.5

    0

    0.5

    1

    1

    0.5

    0

    0.5

    10

    5

    10

    15

    20

    25

    30

    35

    tsin(t)

    cos(t)

    Tambem de forma analoga ao descrito em duas dimensoes, podemos tracar graficos

    de barras e torta

    x= [1.5 3.4 4.2]; Y = [7 6 5; 6 8 1; 4 5 9; 2 3 4; 9 7 2];

    subplot(1, 2, 1), pie3(x, [0 1 0])

    subplot(1, 2, 2), bar3(Y, stacked)

    46%

    37%

    16%

    1

    2

    3

    4

    5

    0

    5

    10

    15

    20

    Em 3 dimensoes, podemos desenhar superfcies (e suas respectivas curvas de nvel,

    no plano x y). Como exemplo, os primeiros 4 graficos abaixo (por linha) sao referentes

    a comandos diferentes para desenho de superfcies, e os ultimos dois graficos, referentes ao

    desenho da mesma supefcie com suas curvas de contorno:

    x= 0 : 0.1 :pi; P =x x; P P =sin(P);

    subplot(2, 3, 1), mesh(P P); subplot(2, 3, 2), meshz(P P);

    subplot(2, 3, 3), surf (P P); subplot(2, 3, 4), waterfall(P P);

    subplot(2, 3, 5), meshc(P P); subplot(2, 3, 6), surf c(P P);

  • 7/24/2019 Meu Manual de Matlab

    17/22

    0

    20

    400

    20

    40

    1

    0

    1

    0

    20

    40

    0

    20

    40

    1

    0

    1

    0

    20

    40

    0

    2040

    1

    0.5

    0

    0.5

    1

    0

    20

    40 0

    20

    40

    1

    0

    1

    0

    20

    400

    20

    40

    1

    0

    1

    0

    20

    40

    0

    20

    40

    1

    0.5

    0

    0.5

    1

    As curvas de nvel tambem podem ser desenhadas em um grafico independente.

    x= 0 : 0.1 :pi; P =x x; P P =sin(P);

    subplot(2, 1, 1), ezcontour(sin(x. 2 y. 2), [3 3 1 1]);

    subplot(2, 3, 2), contour(x,x,PP, 20);

    3 2 1 0 1 2 31

    0.5

    0

    0.5

    1

    x

    y

    sin(x.2y.

    2)

    0 0.5 1 1.5 2 2.5 30

    0.5

    1

    1.5

    2

    2.5

    3

    Em resumo, alguns dos comandos principais para desenho de graficos em 3D podem

    ser listados na tabela a seguir:

  • 7/24/2019 Meu Manual de Matlab

    18/22

    Smbolo Funcao

    surf(x,y,Z) superfcie (eixos x e y), imagem na matriz Z.

    surfc(x,y,Z) superfcie e curvas de nvel (eixosxe y), imagem na matriz Z.

    surfl(x,y,Z) superfcie com projecoes de sombras (eixos x ey), imagem na matriz Z.

    mesh(x,y,Z) superfcie em grade (eixosx ey), imagem na matriz Z.

    meshc(x,y,Z) superfcie em grade e curvas de nvel (eixosx e y), imagem na matriz Z.

    meshz(x,y,Z) superfcie em grade com cortina (eixosx e y), imagem na matriz Z.

    waterfall(x,y,Z) superfcie com grade so nas colunas (eixos x ey), imagem na matriz Z.

    contour(Z) curvas de nveis de superfcie com imagem emZ.

    ezcontour(f, I) curvas de nveis da funcao f .

    contour3(Z) curvas de nveis em 3 D de superfcie com imagem em Z.

    contourf(Z) curvas de nveis preenchidas de superfcie com imagem emZ.

    meshigrid(x, y) geracao de malhas com eixos em x e y.

    Tabela 10: Graficos em tres dimensoes.

    4 Arquivos de Programas

    Ja sabemos que o MatLab possui algumas funcoes programadas (tais como as funcoes

    trigonometricas), mas na maioria dos casos gostaramos de trabalhar com funcoes que

    possuem expressoes nao tao simples (ou apenas diferentes).

    Os arquivos de programas se aplicam exatamente a esse caso, e outros tantos em quedesejamos realizar calculos que sao uma combinacao de funcoes internas do MatLab. Pode-

    mos digitar a sequencia de comandos desejada e salva-la como um arquivo de programa.

    Dessa forma, podemos criar funcoes, que realizam calculos particulares, de acordo com as

    nossas necessidades.

    Para tanto, na tela principal do MatLab, acesse a barra superior clicando em File,

    em seguidaNewe depoisM-file. Automaticamente, o MatLab abre uma nova janela (o seu

    editor) com uma folha em branco, aonde voce deve digitar o seu novo programa; quandotodos os comandos estiverem digitados na ordem desejada, salve o seu programa indo em

    Filee depois em Save As; entao digite o nome do seu programa, que sera salvo como um

    arquivo com extensao .m. Para executar o seu programa, basta digitar o nome do arquivo

    na tela principal do MatLab.

  • 7/24/2019 Meu Manual de Matlab

    19/22

    Por exemplo, vamos supor que desejamos visualizar o grafico do polinomio p(x) =

    (x 6) (x 5) (x 4) (x 3) (x 2) (x 1); tambem gostaramos de calcular o

    seu falor em um certo ponto a (que deve ser fornecido pelo usuario) e marcar no grafico da

    funcao o ponto (a, p(a)).

    Comecamos, como dito anteriormente, clicando em File, em seguida Newe depois

    M-file. Uma nova janela se abrira (editor), e nela voce podera digitar a seguinte sequencia

    de comandos:

    % Desenhando o grafico da funcao

    x= 0.9 : 0.05 : 6.1;

    p= (x 6). (x 5). (x 4). (x 3). (x 2). (x 1);

    plot(x,p, r )

    grid on

    hold on

    % Entrando com o valor de a

    a= input(Entre com o valor dea :);

    pa= (a 6) (a 5) (a 4) (a 3) (a 2) (a 1);

    disp(V alor dep(a) :), pa

    % Desenhando o ponto (a, p(a))

    plot(a,pa, b)

    A seguir, salve o seu programa indo em Filee depois emSave As; escolha o local aonde

    vai salva-lo (por exemplo, uma pasta chamada Programas, que se encontra no disco C), e

    depois digite um nome para o seu arquivo (por exemplo, polinomio6.m). Para fazer o seu

    programa ser executado, basta retornar a janela principal do MatLab e digitarpolinomio6.

    Uma observacao importante a ser feita e que devemos tomar cuidado em que pasta

    salvamos o arquivo polinomio6.m. Na tela principal do MatLab, no canto direito superior,

    ha um lugar escrito Current Directory; nesse lugar, devemos indicar para o MatLab em

    qual pasta se encontra o arquivo polinomio6.m, para que ele possa localizar e conseguir

    executar (no nosso exemplo, la devera ser digitado C:\Programas).

  • 7/24/2019 Meu Manual de Matlab

    20/22

    5 Sobre Fractais

    5.1 Triangulo Sierpinski

    Consiste em um exemplo classico do uso de fractais. A ideia consiste em, dado um triangulo

    inicial, sao encontrados os pontos medios de cada um de seus tres lados. Entao, esses pontos

    medios sao unidos, de modo a dividir o triangulo inicial em 4 triangulos (sendo um central,

    invertido, e os outros tres em cada canto).

    Entao, em cada um desses tres triangulos, sao encontrados os pontos medios dos seus

    lados, e para cada um deles o procedimento acima descrito e executado.

    Esse sequencia de passos podera ser realizada infinitamente; nesse caso, caso pudessemos

    recortar apenas um dos triangulos menores, este triangulo apresentaria o mesmo desenho

    que o triangulo original.

    O programa em Matlab que o executa possui a seguinte linha de comando:

    gasket([5;0], [5;0], [0; sqrt(75)], 5)

    onde as tres primeira entradas indicam os tres vertices do triangulo maior, e o ultimo

    numero indica quantas vezes o passo acima sera realizado.

    5.2 Fractal fern

    O arquivo fern.m produz o conhecido Fern Fractal descrito por Michael Barnsley. Tal

    rotina gera e grafica uma sequencia de pontos no plano cartesiano, gerados de forma cuida-

    dosamente disposta.

    O grafico fern (em portugues, samambaia), e gerado por meio de repetidas rotacoes

    de um ponto no plano. Para entendermos como funciona, considere um ponto x no plano,

    com coordenadasx1ex2.Sao utilizadas quatro diferentes formas de rotacionar esse ponto,

    todas elas seguindo a forma

    x Ax+b

    usando diferentes matrizes A e diferentes vetores b. Esse tipo de transformacao recebe o

    nome especial detransformacao afim. Dentro do programa, a transformacao mais utilizada

  • 7/24/2019 Meu Manual de Matlab

    21/22

    e

    A=

    0.85 0.040.04 0.85

    e b =

    0

    1.6

    Ao multiplicarmosxpor essa matrizA,podemos perceber que ele se encurta (diminui)

    e tambem sofre uma pequena rotacao no eixo x; quando somamos o vetor b, adicionamos

    1.6 na segunda componente de x. Podemos entao concluir que uma sequencia dessas tran-

    formacoes fara com quex se mova para cima e para a direita, gerando assim o formato da

    ponta da samambaia.

    As outras tres transformacoes presentes no programa sao responsaveis por mover o

    ponto para a direita (fazendo as folhas da direita), mover para a esquerda (fazendo as folhas

    da esquerda) ou deixar o ponto mais centralizado (fazendo o caule).

    Para compreendermos melhor, vale a pena olharmos o programa fern.me todos os

    seus comentarios.

    O resultado, e supreendente!

    Referencias

    [1] Coral A. M., Santos M. P., Basto T. D. A., Curso de MatLab, Coordenacao: Mirna

    de Borba, Grupo PET de Engenharia de Producao, Departamento de Engenharia de

    Producao e Sistemas - UFSC, Florianopolis, 1999.

    [2] Cunha M. C. C., Metodos Numericos, Editora da Unicamp, 2a. edicao, 2000.

    [3] Golub G. H., Van Loan C. F.,Matrix Computations, second edition. The Johns Hop-

    kins University Press, 1989.

    [4] Gomes-Ruggiero M. Ap., Lopes V. L. R., Calculo Numerico - Aspectos Teoricos e

    Computacionais, Makron Books, 2a. edicao, Sao Paulo, 1996.

    [5] Higham D. J., Higham N. J.,MatLab Guide, Society for Industrial and Applied Math-

    ematics - SIAM, Philadelphia, 2000.

    [6] Noll V., Apostila de MatLab, Grupo PET de Engenharia Eletrica, Departamento de

    Engenharia Eletrica - UFMS, Campo Grande - MS.

  • 7/24/2019 Meu Manual de Matlab

    22/22

    [7] Sampaio R., Cataldo E., Riquelme R.,Introducao ao MatLab, Pontifcia Universidade

    Catolica, Rio de Janeiro, 1997.

    [8] Sampaio R., Trindade M. A.,Introducao ao MatLab, Pontifcia Universidade Catolica,

    Rio de Janeiro, 2002.

    [9] Sigmon K., MatLab Primer, Department of Mathematics, University of Florida,

    Gainesville - Florida - USA, Third Edition, 1993.

    [10] Zeri L. M. M., Apostila de MatLab, Projeto Apostila, Instituto Nacinal de Pesquisas

    Espaciais - INPE, Sao Bernardo do Campo - SP, 2001.

    -

    Lembramos que o software Matlab e um shareware, ou seja, um software pago. En-

    tratanto, e possvel encontrar sites que possuem informacoes diversas sobre o software

    Matlab, tais como programas especialmente desenvolvidos para esse software, desenhos

    curiosos, games, screensavers, etc., todos com download disponvel.

    Visite o site:

    www.mathworks.com/matlabcentral

    e divirta-se!