apostila_matlab

Upload: eduardonm5486

Post on 18-Oct-2015

17 views

Category:

Documents


0 download

TRANSCRIPT

  • Noes Bsicas de Programao

    em MATLAB

    Alex Jenaro Becker

    Daiane Medianeira Ilha da Silva

    Francisco Helmuth Soares Dias

    Luclia Kowalski Pinheiro

    Santa Maria, Outubro de 2010

  • Noes Bsicas de Programao em MATLAB

    2

    APRESENTAO

    Este trabalho trata-se da Apostila do Minicurso Noes Bsicas de

    Programao em MATLAB, elaborado e ministrado pelos bolsistas do PET

    Matemtica da UFSM: Daiane Medianeira Ilha da Silva e Francisco Helmuth

    Soares Dias, e pelos colaboradores Alex Jenaro Becker e Luclia Kowalski

    Pinheiro.

    A Apostila traz noes bsicas do software matemtico MATLAB :

    Ambiente de trabalho, comandos bsicos, funes bsicas,

    manipulao de matrizes;

    comandos para clculo de limites, derivadas e integrais, clculo

    de zeros de funes;

    comandos para plotagem de grficos bidimensionais e

    tridimensionais,

    Noes bsicas de programao em MATLAB.

    Nossa inteno com a proposta do Minicurso, no cobrir todos os

    tpicos do MATLAB, at por que isso seria praticamente impossvel, pois

    nossos conhecimentos so restritos se comparados amplitude e s

    abrangentes possibilidades de utilizao do mesmo. Alm do mais a carga

    horria seria insuficiente.

    Pretende-se, com o Minicurso e a Apostila incentivar e motivar o estudo

    da ferramenta MATLAB, a partir das noes bsicas que apresentaremos.

    Boa aprendizagem!

  • Noes Bsicas de Programao em MATLAB

    3

    SUMRIO

    1. INTRODUO.............................................................................................................................4 1.1 O ambiente MATLAB............................................................................................................5

    2. COMANDOS BSICOS.................................................................................................................6 2.1 Operaes Bsicas...............................................................................................................6 2.1.1 Comandos para utilizao de Funes:...............................................................7 2.2 Comandos de ajuda...8 2.2.1 O comando help.................................................................................................8 2.2.2 O comando lookfor.............................................................................................9

    3. MANIPULAO DE MATRIZES...................................................................................................10 3.1 Matrizes elementares........................................................................................................10 3.2 Operaes com matrizes....................................................................................................10

    4. ZEROS DE FUNES...................................................................................................................12 5. MXIMOS E MNIMOS DE FUNES.................................................................................................12 6. CLCULO ............................................................................................................................................13

    6.1 Construindo funes com variveis simblicas.................................................................13 6.2 Limites ..............................................................................................................................13 6.2.1 Limite lateral esquerda...................................................................................14 6.2.2 Limite lateral direita.......................................................................................14 6.3 Derivadas............................................................................................................................14 6.4 Integrao.........................................................................................................................14 6.4.1 Integrais Indefinidas..........................................................................................14 6.4.2 Integrais Definidas.............................................................................................15

    7. PLOTANDO GRFICOS NO MATLAB..........................................................................................15 7.1 O comando plot ...............................................................................................................16 7.1.1 Comando subplot.............................................................................................22 7.2 Comando fplot...................................................................................................................23 7.3 Coordenadas Polares.........................................................................................................24 7.4 Curvas Paramtricas..........................................................................................................25 7.5 Diagramas Bidimensionais.................................................................................................26

    8. ALGORITMOS...........................................................................................................................31 8.1 Representao de Algoritmos..........................................................................................32 8.1.1 Linguagem Natural..........................................................................................33 8.1.2 Fluxograma Convencional...............................................................................33 8.1.3 Pseudo-Cdigo.................................................................................................35

    9. M-FILES: CRIANDO SEUS PRPRIOS PROGRAMAS E FUNES..................................................36 9.1 Sada de dados - Comando format....................................................................................39 9.2 Sada de dados - Funo Disp............................................................................................40 9.3 Sada de dados - Sada fprintf............................................................................................40 9.4 Sada de dados - Interao com o usurio atravs do comando input..............................42 9.5 Sada de dados - Operadores lgicos................................................................................43

    10. CONDICIONAIS E LAOS.........................................................................................................44 10.1 A estrutura condicional if-end.........................................................................................44 10.2 A estrutura condicional if-else-end..................................................................................45 10.3 A estrutura condicional if-elseif-else-end........................................................................45 10.4 O lao for.........................................................................................................................47 10.5 O lao while.....................................................................................................................51 10.6 O comando break............................................................................................................54 10.7 O comando switch...........................................................................................................56

    11. VETORIZAO........................................................................................................................57 12. RESERVA DE ESPAO PARA VARIVEIS...................................................................................58 13. CAIXAS DE DILOGOS.............................................................................................................58 14.MTODOS NUMRICOS...........................................................................................................61

    14.1 Bisseo............................................................................................................................61 14.2 Newton.............................................................................................................................63 14.3 Secante.............................................................................................................................65

  • Noes Bsicas de Programao em MATLAB

    4

    O MATLAB (do ingls Matrix Laboratory) um software de computao

    numrica de anlise e visualizao de dados. Embora seu nome signifique Laboratrio

    de Matrizes, seus propsitos atualmente so bem mais amplos. Ele nasceu como um

    programa para operaes matemticas sobre matrizes, mas ao longo dos anos

    transformou-se em um sistema computacional bastante til e flexvel.

    Seu ambiente de trabalho fcil de ser utilizado, pois os problemas e solues

    so escritos em linguagem matemtica e no na linguagem de programao

    tradicional, como muitos outros softwares utilizam.

    Assim o MATLAB uma ferramenta e uma linguagem de programao de alto

    nvel, e tem como principais funes: construo de grficos e compilao de funes,

    manipulao de funes especficas de clculo e variveis simblicas.

    Alm disso, o MATLAB possui uma grande quantidade de bibliotecas auxiliares

    (Toolboxes) que otimizam o tempo gasto para realizar tarefas, uma vez que, o

    usurio poder utilizar muitas funes j definidas, poupando o tempo de cri-las. Por

    outro lado, infelizmente, os programas feitos so difceis de serem executados num

    ambiente fora do MATLAB.

    1. INTRODUO

  • Noes Bsicas de Programao em MATLAB

    5

    O primeiro passo para iniciarmos nosso estudo do MATLAB nos

    familiarizarmos com a interface do programa.

    a) Command Window: Local onde as operaes podem ser diretamente feitas.

    b) Workspace: espao destinado s variveis que esto salvas na memria, onde

    possvel visualizar o nome, valor e classe da mesma.

    c) Command History: Lista de comandos realizados, organizados por data de execuo,

    permitindo o comando ser realizado novamente com duplo clique.

    Podemos tambm utilizar M-files, na barra de Menus acessando a guia

    File>New>M-file, caso se deseje criar procedimentos de forma que estes fiquem salvos

    em arquivo. O MATLAB gera a seguinte janela:

    1.1 O ambiente MATLAB

  • Noes Bsicas de Programao em MATLAB

    6

    Os arquivos salvos so gerados na extenso nomedoarquivo.m. que so

    compilados utilizando-se a Command Window como espao de comunicao de dados,

    de entrada e sada, entre o programa e o usurio.

    Pode-se tambm chamar um M-file, escolhendo-se em Current Directory a

    pasta em que o mesmo est localizado. Depois de escolhido o diretrio, digite na

    Command Window o nome do arquivo, e ento a programao salva ser compilada.

    Operao Smbolo Exemplo

    Adio + 5 + 3

    Subtrao - 23 - 12

    Multiplicao * 3,14 * 0,85

    2. COMANDOS BSICOS

    2.1 Operaes Bsicas

  • Noes Bsicas de Programao em MATLAB

    7

    As operaes so realizadas da esquerda para a direita calculando-as conforme

    a ordem:

    Diviso / ou \ 56/8=8\56

    Potenciao ^ 5^2=25

    Comando Descrio

    abs(x) Valor absoluto ou mdulo de um nmero complexo

    acos(x) Arco cosseno

    acosh(x) Arco cosseno hiperblico

    angle(x) ngulo de um nmero complexo

    asin(x) Arco seno

    asinh(x) Arco seno hiperblico

    atan(x) Arco tangent

    atan2(x,y) Arco tangente em quatro quadrantes

    atanh(x) Arco tangente hiperblica

    ceil(x) Arredondar para inteiro na direo de mais infinito

    conj(x) Conjugado complex

    cos(x) Cosseno

    cosh(x) Cosseno hiperblico

    2.1.1 Comandos para utilizao de Funes:

    1 Potenciao;

    2 Multiplicao e diviso;

    3 Adio e subtrao.

  • Noes Bsicas de Programao em MATLAB

    8

    Comando help a maneira mais simples de se conseguir ajuda caso voc saiba

    exatamente o tpico a respeito do qual voc necessita de informaes. Por exemplo:

    exp(x) Exponencial

    fix(x) Arredonda para inteiro na direo de zero

    floor(x) Arredondar para inteiro na direo de menos infinito

    imag(x) Parte imaginria de um nmero complexo

    log(x) Logaritmo natural

    log10(x) Logaritmo na base 10

    real(x) Parte real de um nmero complexo

    rem(x,y) Resto da diviso de x por y

    round(x) Arredondar para o prximo nmero inteiro

    sign(x) Funo sinal: retorna o sinal de um argumento.

    EX: sign(1.2)=1 e sign(-1.2)=-1, sign(0)=0 sin(x) Seno

    sinh(x) Seno hiperblico

    sqrt(x) Raiz quadrada

    tan(x) Tangente

    tanh(x) Tangente hiperblica

    2.2 Comandos de ajuda

    2.2.1 O comando help

  • Noes Bsicas de Programao em MATLAB

    9

    O comando help funciona muito bem se voc sabe exatamente o tpico sobre o qual

    necessita de ajuda. J que isso no sempre o caso, o help pode tambm lev-lo ao

    tpico exato que deseja digitando help, sem especificao do tpico.

    Embora o comando help permita-lhe conseguir ajuda, ele pode no ser a

    maneira mais conveniente, a menos que voc saiba o tpico exato sobre o qual

    necessita de informaes.

    Para isso, o comando lookfor fornece ajuda fazendo uma busca em toda

    primeira linha dos tpicos de ajuda e retornando aqueles que contm as palavras-

    chave que voc especificou. O mais importante que a palavra-chave no precisa ser

    um comando MATLAB. Por exemplo:

    2.2.2 O comando lookfor

  • Noes Bsicas de Programao em MATLAB

    10

    O MATLAB trabalha essencialmente com um tipo de objeto: uma matriz

    numrica retangular podendo conter elementos complexos. Observa-se que um

    escalar uma matriz de dimenso 1x1 e que um vetor uma matriz que possui

    somente uma linha ou uma coluna.

    O mtodo mais fcil de introduzir pequenas matrizes no MATLAB utilizando uma lista

    explcita. Os elementos de cada linha da matriz so separados por espaos em branco

    ou vrgulas e as colunas separadas por ponto e vrgula, colocando-se colchetes em

    volta do grupo de elementos que formam a matriz com o objetivo de limit-la.

    Tipo de Matriz Comando

    Matriz Identidade eye(n)

    Matriz Nula zeros(m,n)

    Matriz com todos os

    elementos iguais a 1

    ones(m,n)

    Matriz Aleatria rand(m,n)

    Operao Comando

    Transposta de uma matriz A At

    3. MANIPULAO DE MATRIZES

    3.1 Matrizes elementares

    3.2 Operaes com matrizes

  • Noes Bsicas de Programao em MATLAB

    11

    Uma boa aplicao do MATLAB suas funes matriciais. Dentre as mais

    usadas podemos citar:

    COMANDO DESCRIO

    eig Autovalores e Autovetores;

    chol Fatorizao de Cholesky;

    svd Decomposio em fator singular;

    inv Inversa;

    lu Fatorizao triangular LU;

    qr Fatorizao ortogonal QR;

    hess Forma de Hessenberg;

    schur Decomposio de Schur;

    expm Matriz Exponencial;

    sqrtm Matriz de raiz quadrada;

    poly Polinmio caracterstico;

    det Determinante;

    size Tamanho;

    norm Norma 1, Norma 2, Norma F, Norma Infinita;

    cond Nmero de condio na norma 2;

    rank Nmero de linhas linearmente independentes;

    triu(A) Gera uma matriz com os elementos acima da diagonal principal de

    A e zera os elementos que esto abaixo; tril(A) Gera uma matriz com os elementos abaixo da diagonal principal de

    A e zera os elementos que esto acima;

    diag(A) Fornece os elementos da diagonal;

    Multiplicao por um escalar k K*A

    Multiplicao de duas matrizes A e B A.*B

    Quadrado e uma Matriz A A.^2

    Soma de duas matrizes A e B A+B

  • Noes Bsicas de Programao em MATLAB

    12

    diag(diag(a)) Gera uma matriz com os elementos da diagonal principal de A e

    com zeros nas outras posies;

    flipud(A) Coloca a matriz A de cabea para baixo;

    fliplr(A) Coloca a matriz da esquerda para a direita;

    rot90(A) Roda a matriz em sentido anti-horrio;

    reshape(A,m,n) Retorna uma matriz m por n, cujos elementos so tomados coluna

    por coluna de A.

    O MATLAB encontra zeros de funes usando o comando fzero. A funo, da

    qual deseja-se encontrar os zeros, deve ser ento escrita:

    com chute inicial.

    Tomemos como exemplo a funo ( ) ( ):

    4. ZEROS DE FUNES

    5. MXIMOS E MNIMOS DE FUNES

    Para encontrar o mnimo de uma funo usa-se o comando fminbnd.

  • Noes Bsicas de Programao em MATLAB

    13

    Em alguns casos precisamos utilizar uma varivel simblica, chamemos , para

    definir como sendo qualquer varivel do domnio, isto , uma varivel contnua. Para

    isso temos o comando syms. Vejamos:

    6. CLCULO

    6.1 Construindo funes com variveis simblicas

    Ou para mais de uma varivel:

    6.2 Limites

    Para calcularmos ( ) utilizamos o comando ( ( ) ).

  • Noes Bsicas de Programao em MATLAB

    14

    6.2.1 Limite lateral esquerda

    Para calcular o limite lateral esquerda utiliza-se o comando

    ( ( ) ).

    6.2.2 Limite lateral direita

    Para calcular o limite lateral direita utiliza-se o comando

    ( ( ) ).

    6.3 Derivadas

    Para calcularmos derivadas utiliza-se o comando ( ( ) ), onde

    indica a ordem da derivao.

    6.4 Integrao

    Para calcular integrais indefinidas ( ) utiliza-se o comando ( ( ) ).

    6.4.1 Integrais Indefinidas

  • Noes Bsicas de Programao em MATLAB

    15

    Grficos constituem um recurso visual poderoso para a interpretao de dados.

    O MATLAB dispe de um grande nmero de facilidades grficas, usadas para plotar

    (gerar desenho de grficos) atravs de funes e comandos. possvel obter grficos

    bidimensionais ou tridimensionais com qualquer tipo de escala e coordenada.

    Alguns comandos freqentes para plotar grficos bidimensionais so:

    Comando Descrio

    plot Plotar linear

    loglog Grfico em escala logartmica

    semilogx Grfico em escala semi-logartmica (eixo x).

    semilogy Grfico em escala semi-logartmica (eixo y).

    fill Desenhar polgono 2D.

    polar Grfico em coordenadas polar

    bar Grfico de barras

    stem Grfico de seqncia discreta

    Para calcular integrais definidas ( )

    utiliza-se o comando ( ( ) ).

    6.3.1 Integrais Definidas

    7. PLOTANDO GRFICOS NO MATLAB

  • Noes Bsicas de Programao em MATLAB

    16

    stairs Grfico em degrau

    hist Histograma.

    rose Histograma em ngulo

    compass Grfico em forma de bssola.

    feather Grfico em forma de pena.

    fplot Grfico da funo

    comet

    Grfico com trajetria de cometa.

    O comando plot o comando mais comum para plotagem de dados

    bidimensionais.

    Exemplo:

    Plotar a funo x2+1

    Podemos utilizar alguns comandos para melhorar a aparncia de nosso grfico:

    title (inclui um ttulo ao grfico), xlabel (permite que o eixo das abscissas do grfico

    seja identificado), ylabel (permite que o eixo das abscissas do grfico seja

    identificado).

    7.1 O comando plot

    x= -10:0.5:10;

    y=x.^2+1;

    plot(x,y);

    title(Grafico da funo x^2=1)

    xlabel(x)

    ylabel(x)

  • Noes Bsicas de Programao em MATLAB

    17

    Como resultado o MATLAB nos retorna a uma janela denominada Figure No. 1

    com o seguinte grfico:

    possvel desenhar mais que uma funo no mesmo grfico. Existem dois

    modos: um atravs do comando plot, e outro atravs do comando hold

    Por exemplo, podemos gerar no mesmo grfico as funes sen(x), cos(x) e

    sen(2x).

    x= 0:PI/100:6*pi;

    y1=sin(x);

    y2=cos(x);

    y3=sin(2*x);

    plot(x,y1,x,y2,x,y3);

    title(Grafico das funes sem(x),cos(x),sem(2x))

    xlabel(x)

    ylabel(x)

  • Noes Bsicas de Programao em MATLAB

    18

    Gerando o seguinte grfico:

    Com o comando hold, para plotar as funes sen(x) e cos(x), utiliza-se a

    seguinte sntese:

    Alm de ttulos e designao dos eixos (funes title, xlabel e ylabel) podemos

    definir outras propriedades grficas como legendas, cores e estilos de linhas, estilos

    de marcadores, incluir grade.

    x= 0:PI/100:6*pi;

    y1=sin(x);

    y2=cos(x);

    hold on

    plot(x,y1);

    plot(x,y2);

    hold off

  • Noes Bsicas de Programao em MATLAB

    19

    A cor e o estilo da linha e o tipo de marcador para pontos de dados na linha

    podem ser selecionado pelo uso de uma cadeia de caracteres de atributos aps os

    vetores x e y na funo plot.

    Na tabela a seguir vemos os principais valores para os atributos cores,

    marcadores e estilos de linha.

    Cor Marcadores Estilo de Linha

    y amarelo . Ponto - Slido

    m rosa(magenta) o Crculo : Pontilhado

    c azul (ciano) x X -. Ponto-trao

    r vermelho + Mais -- Tracejado

    g verde * Asterisco

    b azul s Quadrado

    w branco v Tringulo para baixo

    k preto ^ Tringulo para cima

    P Pentgono

    Com o comando grid podemos adicionar linhas de grade no desenho do

    grfico: grid on (para incluir) e grid off ( para remover).

    Legendas podem ser criadas por meio da funo legend, utilizando a seguinte

    estrutura:

    legend('texto1', 'texto2,...,posio)

    Onde na posio podem ser atrbuidos os seguintes valores de

    posicionamento da legenda:

  • Noes Bsicas de Programao em MATLAB

    20

    Valor Significado

    0 Escolha automtica da melhor posio (mnimo conflito com os dados)

    1 Canto superior direito

    2 Canto superior esquerdo

    3 Canto inferior esquerdo

    4 Canto superior direito

    -1 direita do desenho

    Alm do ttulo, possvel adicionar qualquer outro texto em algum lugar

    especfico do grfico plotado atravs do comando text, com a seguinte sntese:

    Onde x, y so as coordenadas nas quais desejamos que o texto aparea.

    Com a mesma finalidade pode ser utilizado o comando gtext, com a diferena

    de com este a posio do texto escolhida atravs do mouse. Tem a sntese:

    O Comando axis

    possvel controlar as propores e a aparncia dos eixos horizontal e vertical

    dos grficos gerados pelo MATLAB atravs do comando axis.

    Alguns modos principais de configurao desse comando seguem na tabela a

    seguir:

    text (x,y, 'texto desejado')

    gtext( 'texto desejado')

  • Noes Bsicas de Programao em MATLAB

    21

    Comandos Descrio

    axis ([xmin xmax ymin ymax]) Define os valores mximos e mnimos dos eixos

    usando os valores dados no vetor de linha.

    axis square Torna quadrado o quadro dos eixos.

    axis equal Ajusta os incrementos de eixos para que sejam

    iguais nos dois eixos.

    axis normal Cancela o efeito dos dois comandos anteriores

    axis off Desliga todos os nomes de eixos, grades e

    marcadores. No altera o ttulo nem os nomes

    colocados pelos comandos text e gtext.

    axis on Liga nomes de eixos, marcadores e grade.

    LineWidth, MarkerSize, MarkerEdgeColor, MarkerFaceColor

    So propriedades do comando plot, atravs das quais podemos ajustar a cor, o

    estilo e o tipo de marcador para uma linha.

    LineWidth: Especifica em pontos a espessura de cada linha.

    MarkerSize: Especifica em pontos o tamanho do marcador.

    MarkerEdgeColor: Especifica a cor do marcador ou da borda de marcadores

    preenchidos.

    MarkerFaceColor: Especifica a cor interna dos marcadores preenchidos.

    A estrutura de utilizao das propriedades a seguinte:

    plot(x,y, 'nome da propriedade,valor,.)

  • Noes Bsicas de Programao em MATLAB

    22

    possvel colocar mais de um conjunto de eixos em uma mesma figura, criando

    assim mltiplos diagramas. Os subdiagramas so criados pelo comando subplot:

    Onde m denota o nmero linhas e n o nmero de colunas que se deseja dividir

    a janela grfica; p indica qual das subdivises vai receber o grfico desejado.

    Exemplo:

    Plotar as funes sen(x) e cos(x), com x= -pi: pi/20 : pi, na mesma janela mas

    em grficos separados, utilizando o comando subplot para dividir a janela em dois

    subgrficos.

    7.1.1 Comando subplot

    subplot(2,1,1)

    x=-pi:pi/20:pi;

    y= sin(x);

    plot(x,y)

    title('Subdiagrama 1');

    subplot(2,1,2);

    x=-pi:pi/20:pi;

    y= cos(x);

    plot(x,y)

    title('Subdiagrama 2');

    subplot(m,n,p)

  • Noes Bsicas de Programao em MATLAB

    23

    Alm do comando plot podemos graficar uma funo atravs do comando

    fplot. Basicamente, voc deve fornecer como primeiro argumento a funo que

    pretende usar entre apstrofes e como segundo, o intervalo sobre o qual a funo ser

    graficada.

    Exemplo:

    fplot(sin(x),[ -pi, pi])

    fplot(x^2+3, [ -1, 2])

    fplot(sin(x),[ -pi, pi])

    7.2 Comando fplot

  • Noes Bsicas de Programao em MATLAB

    24

    O MATLAB tem uma funo chamada polar que se destina ao desenho de dados

    usando coordenadas polares. Sua forma bsica :

    Exemplo:

    Cardiide

    A Cardiide pode ser expressa atravs de coordenadas polares:

    )cos1(2 r

    Utilizando o comando polar, plote a Cardiide.

    7.3 Coordenadas Polares

    polar(theta,r)

    theta = 0:pi/50:2*pi;

    r=2*(1+cos(theta));

    polar(theta,r,'r-');

    title('Cardioide em Coordenadas Polares');

  • Noes Bsicas de Programao em MATLAB

    25

    A forma paramtrica de uma curva plana pode ser descrita atravs do seguinte

    par de funes:

    x = f(t)

    y =g (t)

    a,ya

    cu b,yb

    Exemplo:

    Crculo

    7.4 Curvas Paramtricas

    t = -6*pi:pi/100:6*pi;

    x = cos(t);

    y = sin(t);

    plot(x,y);

    axis square

  • Noes Bsicas de Programao em MATLAB

    26

    Alm dos grficos bidimensionais o MATLAB possui comandos que possibilitam

    outras formas de representao de dados tais como: grficos de barras, grficos do

    tipo pizza, grficos de haste, diagramas de radar, entre outros.

    Abaixo listamos alguns dos mais utilizados, sua sntese e descrio:

    Funo Descrio

    bar(x,y) Cria um diagrama de barras verticais, sendo x o rtulo de cada

    barra e y a altura da barra.

    barh(x,y) Cria um diagrama de barras horizontais, sendo x o rtulo de cada

    barra e y o comprimento horizontal da barra.

    compass(x,y) Cria um diagrama polar, com uma seta saindo da origem em

    direo a cada ponto (x,y).

    7.5 Diagramas Bidimensionais

  • Noes Bsicas de Programao em MATLAB

    27

    Grficos de Barras

    um grfico no qual cada ponto representado por uma barra vertical ou

    horizontal.

    Tem a seguinte sntese:

    bar(x,y), para barras verticais

    barh(x,y) para barras horizontais.

    O vetor x representa o rtulo ou posio da barra, e o vetor y representa a

    altura ou comprimento da barra.

    Exemplo:

    Barras verticais

    pie(x,y)

    pie(x,explode)

    Cria um diagrama de pizza. Determina a porcentagem da pizza

    inteira que corresponde a cada valor de x, e representa pedaos

    de pizza desse tamanho.

    A matriz opcional explode controla se os pedaos individuais so

    separados ou no do restante da pizza.

    stairs Cria um diagrama de pares, com cada degrau da escada

    centralizado em um ponto (x,y)

    hist Cria um histograma de um conjunto de dados.

    x = [1 2 3 4 5 6];

    y = [5 4 6 7 2 5];

    barh(x,y);

    axis([0 10 0 7]);

    title(Grafico de barras horizontais);

  • Noes Bsicas de Programao em MATLAB

    28

    Da mesma forma podemos utilizar os comando barh, compass e stairs para

    gerar outras formas de diagramas.

    Grfico Pizza

    um grfico representado por fatias de pizza de tamanhos variados. Cria-se

    um vetor x com os dados a serem representados. Por exemplo, x=[1 2 3 4], ento x(1)

    10% da pizza, x(2) 20%, e assim por diante.

    Podemos ainda acrescentar o vetor explode, que um vetor lgico que recebe

    1 ou 0, e cada elemento associado a um elemento do vetor x. Sendo que 1 significa

    que a fatia da pizza correspondente desenhada um pouco separada da pizza, e 0 a

    fatia permanece em sua posio normal.

    Exemplo:

    Construir um grfico do tipo Pizza, onde as fatias representam 32%, 20%,

    20%, 12%, 16%. Separe a fatia maior das demais fatias. Utilize tambm o comando

    legend.

    x = [32 16 12 20 20];

    explode= [1 0 0 0 0];

    pie(x,explode);

    title('Exemplo de grafico de Pizza');

    legend('Um','Dois','Tres','Quatro','Cinco',4);

  • Noes Bsicas de Programao em MATLAB

    29

    Histogramas

    Um histograma um diagrama que mostra a distribuio de valores em um

    conjunto de dados. Para criar um histograma, a faixa de valores em um conjunto de

    dados dividida em grupos regularmente espaados, e o nmero de valores de dados

    que caem em cada grupo determinado. A contagem resultante pode ser

    representada em um diagrama como funo do nmero do grupo.

    Algumas das snteses para gerar histogramas so:

    hist(y), cria um histograma com 10 grupos igualmente espaados.

    hist(y,n), cria um histograma com n grupos igualmente espaados.

  • Noes Bsicas de Programao em MATLAB

    30

    Exemplo:

    Esse exemplo cria um conjunto de dados com 10.000 valores aleatrios

    gaussianos e gera um histograma dos dados usando 15 grupos igualmente espaados.

    y = randn(1000,1);

    hist (y,15);

  • Noes Bsicas de Programao em MATLAB

    31

    O significado da palavra ALGORITMO muito similar ao de uma receita,

    procedimento, tcnica, rotina. Um algoritmo um conjunto finito de regras que

    fornece uma seqncia de operaes para resolver um problema especfico. Segundo

    o dicionrio do prof. Aurlio um algoritmo um: "Processo de clculo, ou de resoluo

    de um grupo de problemas semelhantes, em que se estipulam, com generalidade e

    sem restries, regras formais para a obteno de resultado ou de soluo de

    problema." Um algoritmo tem cinco caractersticas importantes:

    Finitude:

    Um algoritmo deve sempre terminar aps um nmero finito de passos.

    Definio:

    Cada passo de um algoritmo deve ser precisamente definido. As aes devem

    ser definidas rigorosamente e sem ambiguidades.

    Entradas:

    Um algoritmo deve ter zero ou mais entradas, isto quantidades que so lhe

    so fornecidas antes do algoritmo iniciar.

    Sadas:

    Um algoritmo deve ter uma ou mais sadas, isto quantidades que tem uma

    relao especfica com as entradas.

    Efetividade:

    Um algoritmo deve ser efetivo. Isto significa que todas as operaes devem ser

    suficientemente bsicas de modo que possam ser em princpio executadas com

    preciso em um tempo finito por um humano usando papel e lpis.

    Para mostrar um exemplo de algoritmo considere o seguinte problema:

    8. ALGORITMOS

  • Noes Bsicas de Programao em MATLAB

    32

    Dispomos de duas vasilhas com capacidades de 9 e 4 litros respectivamente. As

    vasilhas no tem nenhum tipo de marcao, de modo que no possvel ter medidas

    como metade ou um tero. Mostre uma seqncia de passos, que usando as vasilhas

    de 9 e 4 litros encha uma terceira vasilha de medida desconhecida com seis litros de

    gua.

    Uma possvel soluo :

    As formas mais comuns de representao de algoritmos so as seguintes:

    8.1 Representao de Algoritmos

    1. Encha a vasilha de 9 litros;

    2. Usando a vasilha de 9 litros, encha a vasilha de 4 litros;

    3. Despeje o que sobrou na vasilha de 9 litros (5 litros) na terceira

    vasilha. Observe que falta um litro para completar os seis litros;

    4. Esvazie a vasilha de 4 litros;

    5. Torne a encher a vasilha de 9 litros;

    6. Usando a vasilha de 9 litros encha a vasilha de 4 litros;

    7. Esvazie a de 4 litros;

    8. Usando o que restou na vasilha de 9 litros (5 litros), encha

    novamente a vasilha de quatro litros;

    9. Despeje o que sobrou na vasilha de 9 litros (1 litro) na terceira

    vasilha, que agora tem 6 litros.

  • Noes Bsicas de Programao em MATLAB

    33

    Os algoritmos so expressos diretamente em linguagem natural, como no exemplo

    anterior. Para considerar um algoritmo que inclua decises vamos estudar um

    algoritmo que nos ajude a decidir o que fazer em um domingo. Um possvel algoritmo

    poderia ser o seguinte:

    Esta um representao grfica que emprega formas geomtricas

    padronizadas para indicar as diversas aes e decises que devem ser executadas para

    resolver o problema.

    8.1.1 Linguagem Natural

    Algoritmo de domingo. o Acordar. o Tomar o caf. o Se estiver sol vou praia seno leio o jornal. o Almoar. o Ir ao cinema. o Fazer uma refeio. o Ir dormir.

    Final do domingo.

    8.1.2 Fluxograma Convencional

  • Noes Bsicas de Programao em MATLAB

    34

  • Noes Bsicas de Programao em MATLAB

    35

    Criar programas de computador , em geral, um trabalho difcil e cansativo,

    pois envolve muito a arte de pensar logicamente. Por haver muitas linguagens distintas

    de programao (tais como C, Pascal, Fortran, dentre outras), h uma linguagem

    Universal, adotada por muitos programadores para que seus cdigos sejam

    entendidos por programadores que conheam qualquer linguagem.. Os cdigos assim

    escritos so chamados de pseudo-cdigos. O pseudo-cdigo escrito mo livre, ou

    seja, em linguagem comum, como no exemplo a seguir:

    Fazer um algoritmo que pergunte que horas so e escreva uma frase de cumprimento

    segundo a hora inserida pelo usurio.

    8.1.3 Pseudo-Cdigo

    Algoritmo: Cumprimento Variveis: hora: Numrico Incio algoritmo Escreva Que horas so? Ler hora Se 6

  • Noes Bsicas de Programao em MATLAB

    36

    Uma maneira simples de se fazer um programa em MATLAB criar um arquivo

    texto com a lista de comandos desejados. Um programa escrito assim chamado

    script e toda vez que for chamado efetua a lista de comandos como se eles fossem

    entrados sequencialmente via teclado. Por exemplo, para se calcular a distncia entre

    dois pontos p e q em R podemos gerar um script com os comandos apropriados e

    cham-lo sempre que o clculo tenha que ser efetuado.

    Esse arquivo pode ser criado com qualquer editor de texto e deve ter extenso

    .m (M-Files). Por exemplo, o script acima poderia estar no arquivo distancia_p_q.m.

    Para cham-lo basta entrar com o nome do arquivo na janela de comandos (Command

    Window):

    Os arquivos script so teis quando se deseja efetuar uma sequncia de

    comandos com muita freqncia. Como no exemplo anterior, os scripts se utilizam dos

    dados presentes na memria (workspace) para efetuar os comandos.

    Uma alternativa aos arquivos script so os arquivos tipo function, que admitem

    parmetros de entrada, retornam valores e possuem variveis locais (no afetam o

    workspace). Essas caractersticas fazem com que programas escritos nesse formato

    atuem exatamente como os comandos nativos do MATLAB. So, portanto, uma forma

    de ampliar a linguagem e um dos pontos chaves do MATLAB.

    A palavra funo no MATLAB tem um significado diferente daquele que tem na Matemtica. Aqui funo um comando, que pode ter alguns argumentos de entrada e alguns de sada.

    9. M-Files: criando seus prprios programas e funes

    temp = (p(1)-q(1))^2+(p(2)-q(2))^2+(p(3)-q(3))^2 distancia = sqrt(temp)

    >> p=[1 0 0]; temp =

    >> q=[0 1 0]; 2 >> distancia_p_q distancia =

    1.44142

  • Noes Bsicas de Programao em MATLAB

    37

    EXEMPLO:

    Salienta-se que essa funo determina a distncia entre dois vetores quaisquer,

    independentemente do nmero de componentes dos mesmos (desde que ambos vetores sejam de mesma dimenso).

    O arquivo tipo function tambm tem que ter extenso .m e deve ter o mesmo nome usado na definio da funo, no exemplo anterior o nome do arquivo deve ser calcula_distancia.m. Usamos o Command Window para executar essa funo.

    A seguir, tem-se uma lista com alguns comandos de programao para o

    controle de fluxo, bem como comandos de programao geral e interfaces com o usurio.

    Break Interrompe a execuo de laos FOR e WHILE equivalente ao BREAK

    do C

    clc, home Limpa a tela (janela de comandos)

    Clear Limpa as variveis da memria do MATLAB

    continue Interrompe o fluxo do programa e recomea um loop FOR ou WHILE,

    j na iterao seguinte. S faz sentido dentro de um FOR ou WHILE

    Display Exibe o nome do contedo de uma varivel

    Disp Exibe o contedo de uma varivel, sem mostrar o seu nome

    IF Condiciona execuo de comandos

    function distancia=calcula_distancia(x,y) % Calcula a distancia euclidiana entre os pontos x e y (vetores do Rn) diferena=x-y; distancia=sqrt (diferena*transpose (diferenca)); Exemplo 1: Exemplo 2: >> p=[1 0 0]; distancia=calcula_distancia([3 4], [0 0]) >> q=[0 1 0]; distancia= >> d=calcula_distancia(p,q) 5 Ou: >> d=calcula_distancia([1 0 0], [0 1 0]) d= 1.4142

  • Noes Bsicas de Programao em MATLAB

    38

    Else Usado com o comando IF

    Elseif Usado com o comando IF

    End Usado para terminar a execuo dos comandos IF, FOR, WHILE

    Error mostra mensagem e aborta a execuo da funo

    errordlg Criar uma caixa de dilogo sem erro

    Eval Excuta uma expresso MATLAB definida atravs de uma string

    Feval Executa uma funo especificada por uma string

    For Repete comandos por um nmero de vezes especificado

    Fprintf Grava dados em arquivo formatado

    Fscanf L dados de arquivo formatado

    function Define m-file tipo FUNCTION (funo)

    Global Define variveis globais

    Helpdlg Mostra uma caixa de dilogo de ajuda (HELP)

    Input Permite requisitar (com prompt) fornecimento de dados pelo teclado

    keyboard Suspende a execuo de uma rotina e permite que o usurio entre e

    execute novos comandos pelo teclado; a rotina continuada aps o

    usurio digitar return

    Lasterr ltima mensagem de erro emitida pelo MATLAB

    Menu Gera um menu de escolhas para entrada do usurio

    margchk Verifica nmero de argumento da entrada

    Pause Pausa na execuo de um programa at ser pressionada uma tecla

    pause(n) Pausa na execuo de um programa de n segundos

    questdlg Cria uma caixa de dilogo de perguntas

    Rbbox Caixa para seleo de regio em grfico

    Return Causa a sada imediata de uma funo

    Sprintf Grava dados formatados em uma nica string

  • Noes Bsicas de Programao em MATLAB

    39

    switch e

    case

    um teste para mltiplos casos

    uigetfile Caixa de dilogo para obter o nome de um arquivo existente

    uiputfile Caixa de dilogo para especificar o nome de um novo arquivo

    warndlg Cria uma caixa de dilogo para advertncias

    While Repete comandos enquanto condio especificada for verdadeira

    O modo como os nmeros aparecero por padro na tela (salvo excees comandadas pelo usurio) imposto pelo comando format. A tabele abaixo indica alguns dos formatos suportados:

    COMANDO RESULTADO EXEMPLO: e*

    Format short 4 dgitos depois de

    vrgula

    23.2134

    Format long 14 dgitos depois da

    vrgula

    23.21340435736339

    Format short e 5 dgitos com

    exponencial

    2.321e+001

    Format long e 15 dgitos com

    exponencial

    2.321340435736330e+001

    Format short g 5 dgitos totais

    23.213

    Format long g 15 dgitos totais

    23.2134043573634

    Format hex Formato hexadecimal

    4037361aaffb31c

    9.1 Sada de dados - Comando format

  • Noes Bsicas de Programao em MATLAB

    40

    Format bank Valores bancrios

    23.21

    Format rat Aproximao por

    racionais

    3807/164

    Format + Exibe comente o sinal +

    O comando disp mostra o valor de variveis, assim como se pode us-lo para combinar frases com variveis alfanumricas. Para que isso acontea, interessante combinar o comando disp com o comando num2str ou int2str que convertem valores numricos em valores alfanumricos. O comando num2str converte qualquer nmero (ou matriz) em uma cadeia de caracteres, mantendo o formato dos elementos, j o comando int2str converte primeiro os valores em inteiros, para s ento transform-los em caracteres.

    EXEMPLO: Mostrar o valor de e.

    O comando fprintf um dos mtodos mais simples de sada de dados. Com ele possvel combinar frases com variveis numricas de dimenso 1, ou seja, um escalar ou um elemento da matriz. Vejamos como ele funciona com o seguinte exmplo:

    9.2 Sada de dados - Funo disp

    frase = *O valor de e^13 :num2str(exp(13))+;

    Disp(frase)

    9.3 Sada de dados - Sada fprintf

  • Noes Bsicas de Programao em MATLAB

    41

    EXEMPLO: Atribuir dois valores s variveis x e y e mostr-las junto com uma frase qualquer:

    Acima, o que est entre aspas aparecer para o usurio, os itens onde aparece

    %d sero substitudos pelas variveis, respeitando-se a ordem em que aparecem. Ainda, %d significa que s aparecer a parte inteira de x e y. Existem, ainda, os seguintes comandos:

    %d Exibe o valor como inteiro

    %e Exibe o valor no formato exponencial

    %f Exibe o valor em ponto flutuante

    %g Escolhe o mais curto entre ponto flutuante e

    exponencial

    Ainda, se colocarmos \n dentro das aspas temos uma mudana de linha.

    EXEMPLO: Escrever uma saudao ao usurio:

    x=1;

    y=7;

    fprintf(O x vale %d, enquanto y vale %d,x,y)

    fprintf( Ol.\n Obrigado por freqentar o

    minicurso do MATLAB.\n Esperamos que

    seja bastante til.)

  • Noes Bsicas de Programao em MATLAB

    42

    Falamos bastante at aqui em variveis e sadas de dados, porm necessrio

    que dados possam ser inserido por usurios (que no seja o programador) e que

    possamos trocar nossas variveis sem alterar o cdigo do programa. Por exemplo, para

    calcular as razes de um polinmio necessrio que o programa conhea o polinmio.

    Mas, para cada polinmio diferente teremos que mudar o cdigo-fonte do programa?

    Esse problema resolvido pelo comando input. A cada vez que o programa for

    rodado ele mesmo pedir as variveis, logo no ser necessrio mudar o cdigo

    original do programa e haver uma maior interao entre o programa e o usurio (no

    necessariamente um programador). Ainda dentro do comando input podemos colocar

    uma frase identificando que varivel deve ser inserida. Vejamos como funciona atravs

    do seguinte exemplo:

    EXEMPLO: Pedir que o usurio entre com os coeficientes de um polinmio do

    segundo grau ax2+bx+c:

    9.4 Sada de dados - Interao com o usurio atravs do comando input

    disp(Este programa ler valores para os coeficientes a, b e c de um polinmio

    do segundo grau. )

    a=input(Insira o valor de a: );

    b=input(Insira o valor de b: );

    c=input(Insira o valor de c: );

    fprintf(O polinmio definido pelo usurio %dx^2 + %dx + %d,a,b,c)

  • Noes Bsicas de Programao em MATLAB

    43

    EXEMPLO: Fazer com que o usurio calcule as razes de um polinmio de segundo

    grau:

    s vezes necessrio colocar mais de um comando ao mesmo parmetro

    (principalmente no lao if que ser visto posteriormente), para isso existem os

    comando lgicos dados na seguinte tabela:

    & E lgico

    | OU lgico

    xor OU exclusivo lgico

    ~ NO lgico

    9.5 Sada de dados - Operadores lgicos

    disp(Este programa ir calculara as razes de um polinmio de segundo grau. )

    a=input(Entre com o primeiro coeficiente :);

    b=input(Entre com o segundo coeficiente :);

    c=input(Entre com o terceiro coeficiente :);

    delta = b^2 - 4*a*c;

    x1=(-b + sqrt(delta))/(2*a);

    x2=(-b - sqrt(delta))/(2*a);

    fprintf('As razes so: %d e %d',x1,x2)

  • Noes Bsicas de Programao em MATLAB

    44

    Uma estrutura condicional permite a escolha do grupo de comandos a serem

    executados quando uma dada condio for satisfeita ou no, possibilitando desta

    forma alterar o fluxo natural de comandos. Esta condio representada por uma

    expresso lgica.

    A estrutura de repetio (ou lao) faz com que uma sequncia de comandos

    seja executada repetidamente at que uma dada condio de interrupo seja

    satisfeita.

    A estrutura condicional mais simples do MATLAB :

    Se o resultado da expresso lgica for verdadeiro ento a lista de

    ser executada. Se o resultado for falso, os no sero

    executados.

    EXEMPLO: Fazer um programa que pea um nmero ao usurio e retorne o

    valor da raiz quadrada desse nmero.

    ]

    10. Condicionais e laos

    10.1 A estrutura condicional if-end

    if

    end

    a=input('Digite um valor para o qual se queira saber a raiz quadrada:');

    if (a>=0)

    Raizquadrada=sqrt(a)

    end

  • Noes Bsicas de Programao em MATLAB

    45

    No caso de haver duas alternativas, uma outra estrutura condicional deve ser

    usada:

    Se a expresso lgica for verdadeira ento a lista

    ser executada. Se for falsa ento ser executada a lista .

    EXEMPLO: Faa um programa que leia o ano de nascimento de uma pessoa e o ano

    atual e diga a idade da pessoa. O programa deve verificar se o ano de nascimento

    vlido ou no.

    Quando houver mais de duas alternativas, a estrutura vista anteriormente if-

    else-end torna-se:

    if else end

    an=input('Digite o ano de nascimento da pessoa:');

    aa=input('Digite o ano atual:');

    if ((an2010))

    fprintf('Ano de nascimento invalido.');

    else I=aa-an;

    fprintf('A idade da pessoa eh %d anos.',I);

    end

    10.2 A estrutura condicional if-else-end

    10.3 A estrutura condicional if-elseif-else-end

  • Noes Bsicas de Programao em MATLAB

    46

    A lista ser executada se a for verdadeira, j a lista

    ser executada se a for verdadeira e assim para as outras

    condies. Se nenhuma das condies for verdadeira ento ser

    executada.

    Quando a primeira for satisfeita e os executados, a

    estrutura if-elseif-else-end ser abandonada, ou seja, o controle do processamento

    ser transferido para o comando imediatamente aps o end.

    EXEMPLO: Faa um programa tal que o usurio insira um valor para a varivel x e em

    seguida mostre se x maior, menor ou igual a zero.

    if

    elseif

    elseif

    .

    .

    .

    else

    end

    x=input('Digite um valor para x:');

    if x

  • Noes Bsicas de Programao em MATLAB

    47

    EXEMPLO: Faa um programa que permita calcular os valores para a funo:

    f(x) = {

    EXEMPLO: Faa um programa que verifique se um nmero dado pelo usurio

    positivo, se sim determinar se o mesmo par ou mpar:

    A estrutura for permite que um grupo de comandos seja repetido um nmero

    especfico de vezes definido pelo programador. Atravs do for, podemos criar uma

    variao de elementos, o que nos d a vantagem de economizar tempo. Sua sintaxe :

    function a=program1(x)

    x=input('Digite um valor x para o qual se deseja avaliar a funao:');

    if x=-1)&(x

  • Noes Bsicas de Programao em MATLAB

    48

    Acima, varivel a varivel-de-controle que recebe o valor de cada coluna do vetor

    e, para cada contedo que receba, executa o corpo do for. Assim, o nmero

    de repeties da lista igual ao nmero de elementos no vetor

    . A varivel-de-controle no pode ser redefinida dentro da estrutura for.

    O lao for o controlador de fluxo mais simples e usado na programao

    MATLAB. Analisando o seguinte exemplo:

    pode-se notar que o lao for dividido em trs partes:

    A primeira parte (i=1) realizada uma vez, antes de o lao ser inicializado.

    A segunda parte o teste ou condio que controla o lao, (i

  • Noes Bsicas de Programao em MATLAB

    49

    Observao: Veja que aqui ocupa muito espao se usarmos o comando input 15

    vezes.

    EXEMPLO: Faa um programa que pergunte ao usurio quantas linhas e quantas

    colunas ele quer que uma matriz A tenha. Em seguida, pedir que ele insira cada valor

    da matriz. Alm disto, verificar quantos elementos menores que zero tem nesta

    matriz.

    EXEMPLO: Faa um programa que diga todas as possibilidades de que, no lanamento

    de dois dados, a soma dos valores de cada dado seja igual a 7.

    l=input('Digite um valor para o numero de linhas da matriz A:');

    c=input('Digite um valor para o numero de colunas da matriz A:');

    A=zeros(l,c);

    b=0;

    for i=1:l

    for j=1:c

    fprintf('Insira o numero (%d,%d):',i,j);

    A(i,j)=input('');

    if A(i,j)

  • Noes Bsicas de Programao em MATLAB

    50

    EXEMPLO: Faa um programa que plote uma funo retangular f(n) tal que 0

  • Noes Bsicas de Programao em MATLAB

    51

    EXEMPLO: Faa um programa que construa duas matrizes A e B dadas pela lei Aij=i+j e

    Bij=i-j e calcule a soma das duas.

    O lao while, ao contrrio do for, repete um grupo de comandos um nmero

    indefinido de vezes, at obtermos uma resposta satisfatria ou at que o usurio

    mande interromper o programa. Sua sintaxe :

    Enquanto a expresso lgica for verdadeira a lista ser

    repetida.

    No lao while apenas a condio testada. Por exemplo, na expresso:

    while

    end

    a = 1; b = 15;

    while a

  • Noes Bsicas de Programao em MATLAB

    52

    A condio a

  • Noes Bsicas de Programao em MATLAB

    53

    EXEMPLO: Faa um programa que leia um nmero e calcule o seu fatorial. O

    programa deve exibir um erro caso o nmero seja negativo.

    i=1;

    prod=1;

    n=input('Digite um valor n para o qual se deseja saber o fatorial:');

    if n

  • Noes Bsicas de Programao em MATLAB

    54

    EXEMPLO: Faa um programa que plote o grfico da funo y=a*x2+b*x+c, no

    intervalo xv - 5< x

  • Noes Bsicas de Programao em MATLAB

    55

    transfere a execuo para o comando imediatamente seguinte ao end . Em repeties

    aninhadas, o break interrompe a execuo apenas da estrutura mais interna.

    Uma repetio com condio de interrupo no interior pode ter a forma:

    A estrutura while executada indefinidamente a princpio, pois a condio do

    while sempre verdadeira. Contudo, quando a do if for satisfeita o

    comando break ser executado causando a interrupo da repetio while.

    EXEMPLO: Faa um programa que calcule a mdia de no mximo 5 nmeros usando o

    comando break.

    while 1

    if

    break

    end

    end

    acumulador = 0;

    n = 0;

    while n

  • Noes Bsicas de Programao em MATLAB

    56

    O comando switch executa certas afirmaes baseando-se no valor de uma

    varivel ou expresso. usado quando se tem opes de escolha. Sua forma bsica :

    Apenas um CASE executado e a seqncia de execuo do programa

    prossegue aps o END. Se nenhum dos CASEs concordar com a expresso do switch,

    ento o caso OTHERWISE executado (se existir). Apenas as instrues entre o CASE

    concordante e o prximo CASE, OTHERWISE ou END so executadas. Por exemplo, se o

    primeiro caso for verdadeiro os outros casos no so executados.

    EXEMPLO: Faa um programa que leia um dos nmeros -1, 0 ou 1 e diga se

    negativo, positivo, zero ou nenhum dos outros casos.

    10.7 O comando switch

    switch

    case

    case

    ...

    otherwise

    end

    var=input('Entre com um dos valores:-1, 0 ou 1 ==> ');

    switch var

    case 1

    disp('Nmero um negativo')

    case 0

    disp('Zero')

    case 1

    disp('Nmero um positivo')

    otherwise

    disp('outro valor')

    end

  • Noes Bsicas de Programao em MATLAB

    57

    EXEMPLO:

    O MATLAB um software desenvolvido para trabalhar com matrizes. Quando

    se est construindo uma rotina de clculo e se deseja utilizar uma ferramenta de loop,

    onde o objetivo calcular uma expresso diversas vezes, muito mais eficiente

    trabalhar utilizando o conceito de operaes matriciais ou vetoriais.

    Para demonstrar o que queremos dizer, vamos apresentar uma rotina simples,

    implementada de dois modos, onde se evidencia a diferena de eficincia entre uma

    implementao utilizando loops sua verso vetorial.

    x=1;

    for k=1:100

    clc

    y(k)=log10(x);

    x=x+0.01;

    y(k);

    pause(1);

    end

    x:1:0.01:100;

    y=log10(x);

    TEMPO COMPUTACIONAL

    0.1900

    0.0600

    var=input('Entre com um valor ==> ');

    switch var

    case 1

    disp('1')

    case {2,3,4}

    disp('2 ou 3 ou 4')

    case 5

    disp('5')

    otherwise

    disp('outro valor')

    end

    11. Vetorizao

  • Noes Bsicas de Programao em MATLAB

    58

    Utilizando a forma vetorizada, para este exemplo, tem-se uma reduo de 70%

    no tempo computacional.

    A reserva de espao em memria para as variveis faz-se simplesmente

    preenchendo a varivel a ser utilizada com zeros, de forma a que a sua dimenso no

    volte a ser alterada.

    As caixas de dilogos possibilitam a construo de programas com interface

    mais amigvel. Por exemplo, ao invs de utilizarmos a funo input podemos usar a

    funo inputdlg (entrada de dados com caixa de dilogos), a qual tambm permite que

    se insira dados atravs do teclado.

    12. Reserva de espao para variveis

    13. Caixa de Dilogos

  • Noes Bsicas de Programao em MATLAB

    59

    EXEMPLO 1: Faa um programa que calcule o fatorial de qualquer nmero.

    OBS: Neste programa aparecer uma janela onde o usurio ir informar o nmero o qual

    deseja calcular o fatorial.

    i=1;

    prod=1;

    b={'Digite o nmero o qual deseja calcular seu fatorial'};

    Numero=inputdlg(b)

    n=str2num(char(Numero(1)));

    if n

  • Noes Bsicas de Programao em MATLAB

    60

    EXEMPLO 2: Faa um programa tal que o usurio insira a largura e o comprimento de

    um retngulo e logo aps calcule e escreva sua rea.

    OBS: Depois de digitado o algortmo, se colocarmos o programa

    para rodar, aparecer a seguinte janela, onde o usurio ir informar

    a largura e o comprimento do retngulo.

    aviso={'Entre com a largura:' ,'Entre com o comprimento:'}

    titulo='REA DE UM RETNGULO';

    resposta=inputdlg(aviso,titulo);

    larg=str2num(char(resposta(1)));

    comp=str2num(char(resposta(2)));

    disp(' **************')

    disp(' * REA *')

    disp(' **************')

    area=larg*comp;

    disp(area)

  • Noes Bsicas de Programao em MATLAB

    61

    A idia central destes mtodos partir de uma aproximao inicial para a raiz e

    em seguida refinar essa aproximao atravs de um processo iterativo.

    Para facilitar a utilizao do programa para encontrar raiz atravs de mtodos

    numricos, deve-se criar arquivo na janela M-FIRE, para seguinte utilizao no

    Command Window do MatLab.

    Descrio: Seja f(x) contnua no intervalo [a, b] e f(a) . f(b) < 0.

    Dividindo o intervalo [a, b] ao meio, obtm-se x, havendo dois subintervalos, [a, xo]

    *xo, b+, a ser considerados. Se f(xo) = 0, ento = xo (raiz encontrada), caso contrrio,

    a raiz estar no subintervalo onde a funo tem sinais opostos nos pontos extremos,

    ou seja, se f(a). f(xo) < 0 , ento, (a, xo); seno f(a) . f(xo) > 0 e (xo, b). O novo

    intervalo [a1, b1 + que contm dividido ao meio e obtm-se o ponto x1. O processo

    se repete at que obtenha uma aproximao para a raiz exata , com a tolerncia

    desejada.

    14. Mtodos Numricos

    14.1 Mtodo da Bisseo

  • Noes Bsicas de Programao em MATLAB

    62

    Algortmo:

    EXEMPLO 1: Calcule a raiz positiva para f(x) = com 0,00001.

    ao=input('Digite o 1 valor do intervalo: ');

    bo=input('Digite o 2 valor do intervalo: ');

    Ep=input('Insira o valor para o erro: ');

    if f(bo)*f(ao) > 0,

    disp('No tem raiz nesse intervalo')

    else

    while (bo-ao) > Ep,

    x=(ao+bo)/2;

    if f(x)*f(ao) > 0,

    ao=x;

    else

    bo=x;

    end;

    end;

    y =(ao+bo)/2;

    disp('A raiz ')

    disp(y);

    end

    >> f = inline('x^2-5');

    >> bissec

    Digite o 1 valor do intervalo: 0

    Digite o 2 valor do intervalo: 3

    Insira o valor para o erro: 0.00001

    A raiz

    2.2361

  • Noes Bsicas de Programao em MATLAB

    63

    OBS: bissec o arquivo anteriormente digitado na extenso M-FIRE.

    EXEMPLO 2: Calcule a raiz aproximada para f(x) = para 0,01 e com o intervalo inicial [0,3].

    DESCRIO: Seja f(x) uma funo contnua no intervalo [a, b] e o seu nico zero neste

    intervalo; as derivadas f(x) (f(x)0) e f(x) devem tambm ser contnuas. Encontra-se

    uma aproximao x0 para a raiz e feita uma expanso em srie de Taylor para

    f(x)=0. condio suficiente para a convergncia do Mtodo de Newton que: f(x) e

    f(x) sejam no nulas e preservem o sinal em (a, b) e x0 seja tal que f(x0). f(x0) > 0.

    14.2 Mtodo de Newton

    >> f = inline('x*log(x)');

    >> bissec

    Digite o 1 valor do intervalo: 0

    Digite o 2 valor do intervalo: 3

    Insira o valor para o erro: 0.01

    A raiz

    0.0029

  • Noes Bsicas de Programao em MATLAB

    64

    Algortmo:

    EXEMPLO 1: Achar a raiz de f(x) = , com 0,0001 e x0 = -2.

    Neste, utilizamos o arquivo newton, digitado na extenso M-FIRE.

    >> f = inline ('x^3-5*x^2+x+3');

    >> g = inline ('3*x^2-10*x+1');

    >> newton

    Digite o valor de xo: -2

    Insira o valor para o erro: 0.0001

    A raiz

    -0.6458

    xo=input('Digite o valor de xo: ');

    E=input('Insira o valor para o erro: ');

    x1=xo-f(xo)/g(xo);

    while (x1-xo)>E

    xo=x1;

    x1=xo-f(xo)/g(xo);

    end

    disp('A raiz ');

    disp(x1)

  • Noes Bsicas de Programao em MATLAB

    65

    EXEMPLO 2: Encontre a raiz de ( ) , pelo mtodo de Newton,

    com . Sabe-se que *1,2+.

    DESCRIO: muito semelhante ao Mtodo de Newton, mas substitui o clculo das

    derivadas pelo clculo de uma razo incremental.

    Geometricamente, corresponde a substituir o papel da tangente, no mtodo de

    Newton, por uma secante (de onde vem o nome). Isto significa que vamos precisar

    sempre de dois pontos para determinar, o que implica que tenhamos que considerar

    duas iteradas iniciais, que designamos por x0 e x1. condio suficiente para a

    convergncia do Mtodo da Secante que: f(x) e f(x) sejam no nulas e preservem o

    sinal em (a, b), e f(x0 ) .f ''(x0) > 0 e tambm f(x1) .f ''(x1) > 0 para qualquer x0 e x1 em

    (a, b).

    14.3 Mtodo da Secante

    >> f = inline('2*x^3+log(x)-5');

    >> g = inline('6*x^2+(1/x)');

    >> newton

    Digite o valor de xo: 2

    Insira o valor para o erro: 0.001

    A raiz

    1.5227

  • Noes Bsicas de Programao em MATLAB

    66

    Algortmo:

    EXEMPLO 1: Considerando ( ) ; x0 = 1 e x1 = 2. Encontre a raiz da ( )

    com 0,001.

    >> f = inline('x^2+x-6');

    >> secante

    Digite o valor de xo: 1

    Digite o valor de x1: 2

    Insira o valor para o erro: 0.001

    A raiz :

    2

    xo=input('Digite o valor de xo: ');

    x1=input('Digite o valor de x1: ');

    E=input('Insira o valor para o erro: ');

    while (x1-xo)>E

    x2=x1-((f(x1)*(x1-xo))/(f(x1)-f(xo)));

    xo=x1;

    x1=x2;

    end

    disp('A raiz : ');

    disp(x2);

  • Noes Bsicas de Programao em MATLAB

    67

    EXEMPLO 2: Considerando ( ) ; x0 = 0 e x1 = 1. Encontre a raiz da

    ( ) com 5 x .

    >> f = inline('x^3-9*x+3');

    >> secante

    Digite o valor de xo: 0

    Digite o valor de x1: 1

    Insira o valor para o erro: 0.0005

    A raiz :

    0.3750

  • Noes Bsicas de Programao em MATLAB

    68

    REFERNCIAS BIBLIOGRFICAS

    PET MATEMTICA UFSM; Noes Bsicas de Utilizao e Programao em MATLAB. Santa Maria, 2008. CHAPMAN, S.J.; Programao em MATLAB para engenheiros. Traduo tcnica: Flvio Soares Correa da Silva, So Paulo, Thomson Learning, 2006. FALCO, M. I; Iniciao ao MATLAB. Universidade do Minho, 2001, Disponvel em: https://repositorium.sdum.uminho.pt/handle/1822/1480 HANSELMAN, D; LITTLEFIELD, B; MATLAB Verso Estudante Guia do Usurio Verso 4. MAKRON Books do Brasil. So Paulo, 1997. PET ENGENHARIA ELTRICA UFSM; Introduo ao MATLAB. Santa Maria, 2007. Disponvel em: http://w3.ufsm.br/petee/ PORTUGAL, R.; MATLAB para leigos e desinteressados: uma introduo simples com exemplos banais. Disponvel em: www.ime.unicamp.br/~cheti/intmatlab.pdf