Mini curso Octave

67
Programa de Educação Tutorial 1 Mini-curso Octave/MATLAB PET Engenharia de Computação 1 03/07/2013

description

Octave

Transcript of Mini curso Octave

  • Programa de Educao Tutorial

    1

    Mini-curso Octave/MATLAB

    PET Engenharia de Computao

    1

    03/07/2013

  • Sumrio

    Sobre as Ferramentas

    Operaes Bsicas e Funes importantes

    Grficos

    Arquivos, scripts e criao de funes

    Funes Bsicas e teis

  • 3

    MATLAB e Octave so ferramentas para uso de processamento numrico.

    O MATLAB em especial um dos programas mais utilizados em engenharia para simulaes e anlises de sistemas reais.

    Possuem recursos de programao com uma linguagem procedural de alto nvel.

    MATLAB: http://www.mathworks.com

    Octave (windows): http://octave.sourceforge.net/

    Octave (linux): digite sudo apt-get install octave no seu terminal, informe sua senha e prossiga o download. Aps finalizado, digite

    octave no terminal

    3

    Introduo

  • Vantagens Octave

    Software gratuito

    Mais leve

    Open source

    Imensa compatibilidade com MATLAB

  • Vantagens MATLAB

    Aplicaes vo alm de clculos matemticos

    Velocidade de processamento super rpida (funes prprias bem otimizadas)

    Dificilmente encontrar-se bugs no programa

  • Escrita de Cdigo

    O cdigo escrito em MATLAB funcionar*

    no Octave. Entretanto, nem todo cdigo

    escrito no Octave funcionar no Matlab.

    *A sintaxe dos cdigos so as mesmas,

    porm h funes exclusivas do MATLAB.

    Indicamos utilizar o software adotado pela

    professora.

  • Exemplos:

    MATLAB no aceita spas duplas, apenas simples

    Operadores lgicos do MATLAB:

    Or - | e ||

    And - & e &&

    Not - ~

    O octave aceita esses operadores, assim como

    os padres de C. Tambm aceita aspas duplas ou

    simples

  • Operaes bsicas

    3 + 8 (soma)

    5 2 (subtrao)

    4 * 2 (multiplicao)

    4 / 2 (diviso direta)

    3^2 (potenciao)

    2 \ 4 (diviso inversa)

  • Variveis

    x = 4 + 5

    X = 3/2

    x = 3 + 3

    Apenas duas variveis foram criadas (X e x).

  • Aps cada operao o resultado

    armazenado em uma varivel chamada

    ans.

    x = ans*4;

    Pode-se utilizar ; aps cada ao. Isso

    far com que a resposta no seja impressa

    na tela.

  • Nmeros Complexos

    A estrutura de um complexo a + i*b, onde i = sqrt(-1)

    z = 4 + i*3;

    real(z)

    imag(z)

    abs(z)

    angle(z) ( dado em radianos)

  • Vetores e Matrizes

    Devem ser declarados entre colchetes.

    Na definio de vetores e matrizes, um espao em branco ou uma vrgula

    separam elementos de colunas diferentes

    numa mesma linha.

    O ponto-e-vrgula separa elementos de linhas diferentes numa mesma coluna.

  • V = [1 2 3] o mesmo que V = [1,2,3] e

    ambos so vetores linhas.

    v = [1;2;3] um vetor coluna

    A = [1 2 3; 4 5 6; 7 8 9] uma matriz 3x3

  • Operaes

    Pode-se fazer operaes de soma, subtrao, diviso e multiplicao.

    Para fazer uma operao elemento a elemento utiliza-se . antes do sinal de operao

    Exemplo:

    [1 2 3].*[3 2 1] = [1x3 2x2 3x1] = [3 4 3]

  • Acesso a valores em

    vetores e matrizes Acesso de elementos:

    V = [1 2 3]

    V(1) acessa o primeiro elemento

    V(2) acessa o segundo elemento

    V(3) acessa o terceiro elemento

    Note que o ndice do primeiro elemento 1 e

    no 0 como na maioria das linguagens de

    programao

  • Semelhantemente em matrizes,

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

    A(1,2) 2

    >>A(1,2) = 5;

    Faz o elemento da primeira linha e

    segunda coluna (2) valer 5.

  • A(:,1) pegar todos os elementos da primeira

    coluna

    A(1,:) pegar todos os elementos da primeira

    linha

    A(i:j,k:l) retornar uma submatriz da matriz

    A

  • Forma til de definir

    vetores vet = 1:10 o mesmo que

    vet = [1 2 3 4 5 6 7 8 9 10]

    Vet = 1:2:10 o mesmo que

    Vet = [1 2 4 6 8 10]

    V = linspace(0, 20, 5) Cria uma vetor de

    tamanho 5 com nmeros linearmente

    espaados de 0 a 20

  • Funes teis

    size(A) Tamanho da matriz

    det(A) Calcula o determinante

    length(A) Tamanho do vetor

    [i,j] = find(A) Retorna ndices de valores no nulos na matriz

    max(A) maior valor de vetor ou maior da coluna em matriz

    min(A) menor valor de vetor ou menor da coluna em matriz

  • inv(A) Calcula a inversa de A

    ones(i,j) Matriz de dimenso i x j de ums

    eye(i,j) Matriz identidade i x j

    zeros(i,j) Matriz de zeros i x j

    A Trasposta de A

    sort(A) Ordena A (matrizes so ordenadas por colunas)

    diag(A) retorna a diagonal

  • Isempty(x) - Verdadeiro para matrizes

    vazias

    Isequal(x, y) - Verdadeiro se matrizes

    forem iguais

    Isprime(x) - Verdadeiro para primos

    Isletter(x) - Verdadeiro para letras do

    alfabeto

  • Operadores relacionais

    e lgicos Como dados de entrada de expresses

    relacionais e lgicas, qualquer nmero diferente

    de zero Verdadeiro e o zero Falso

    A sada produz 1 para Verdadeiro e 0 para Falso

    Operadores relacionais:

    =, ==, ~=

    Operadores lgicos:

    & ou && (AND), | ou || (OR), ~ (NOT)

  • xor(x,y): Retorna 1 se x ou y for diferente

    de zero e 0 se ambos forem Falso ou

    Verdadeiro

    any(x): Retorna 1 se algum elemento difere

    de zero

    all(x): Retorna 1 se todos os elementos

    diferem de zero

  • Comando help: Apresenta a descrio da funo.

    Ex: help sin

    Comando lookfor: Procura nas funes do Octave e do MATLAB, alguma que possua em sua

    descrio a palavra procurada.

    Ex: lookfor sine

    Para sair do help digite 'q'.

    Ajuda

  • Scripts

    Arquivo de extenso .m contendo comandos do MATLAB/Octave

    Comandos executados em srie

    Para chamar o script, basta digitar o nome do arquivo nas linhas de comando sem a

    extenso

  • A funo disp imprime algo na tela,

    podendo ser o valor de uma varivel ou

    um comentrio

    echo define se as linhas digitadas devem

    ser impressas ou no, inclusive comandos

    com ; e comentrios

    input solicita ao usurio que fornea algum

    dado de entrada

  • Entrada de dados por

    arquivo importdata(arquivo)

    - Faz leitura dos dados de um arquivo e

    em forma de uma matriz

    Exemplo:

    dados = importdata(entrada.txt)

    ou

    entrada = entrada.txt

    dados = importdata(entrada)

  • Utilizando a funo fscanf

    - Semelhante com leitura de dados em C

    - Necessita de abrir o arquivo com a

    funo fopen, assim como em C

  • Forma de leitura

    Matriz = fscanf (fid, template, size)

    fid o arquivo a ser lido

    template o formato da leitura

    size a quantidade de dados a ser lido

    Arquivo a ser lido:

    fid = fopen(entrada.txt, r)

    - o r significa read (leitura)

    - para escrita usa-se w (write)

  • inteiros = %d

    caracter = %c

    float = %f

    notao decimal = %e (1.434e+03)

    misto de float e decimal = %g (recomendo sempre usar este)

    Template de leitura

  • Tamanho da leitura

    Size pode ser especificado como:

    Inf l o mximo que puder e armazena em um vetor coluna

    n l n elementos armazenando em um vetor coluna

    [n Inf] l o mximo que puder armazenando em uma matriz de n linhas

    [n n] l os elementos armazenando em uma matriz n x n

  • Funes

    Cada funo deve ser criada em apenas um arquivo

    O nome do arquivo deve ser o mesmo nome da funo (com extenso .m)

    Podem ser utilizadas depois em outros arquivos e outras funes ou chamadas

    na linha de comando

  • Podem ter quantos retornos e quantos parmetros necessrios

    Deve ser seguida uma sintaxe padro para construo

    No precisa declarar os tipos de parmetros ou retornos

  • Formato de funes

    function [a, b, c] = nome (par1, par2, .., parN)

  • Fluxo de controle

    If/else

    for

    while

    break

    case

  • If/else

    if

    else

    end

    *No Octave pode-se utilizar endif, porm o

    mesmo no vlido para o MATLAB

  • while

    while

    end

  • for

    for i = 1:n

    end

    *se n = 5, o loop acontecer 5 vezes

  • Switch-case

    u = input(Escreva a unidade de medida: );

    switch u

    case {polegadas,pol}

    y = x*2.54;

    case {metros,m}

    y = x/100;

    otherwise disp([unidade desconhecida: u])

    end

  • Medio de tempo de

    execuo tic() comea a contagem

    toc() finaliza a contagem retornando o valor do tempo desde o ltimo tic()

    tic()

    t = toc()

    A varivel t armazenar o tempo levado para executar o bloco de comandos

  • Armazenagem de

    dados dir mostra tudo que est em sua pasta

    atual

    save salva todas as variveis e contedo do workspace

    load carrega um arquivo salvo com o comando save

    whos mostra tudo que h em seu workspace

  • clear limpa o workspace

    clc limpa os textos do terminal

    *Cuidado para no confundir e apagar todo

    seu workspace

  • Grficos

    plot(x, y) - Plota um grfico de y em funo

    de x

    plot(x, y, z, w) - Plota dois grficos numa

    mesma figura

    plot(x, y, 'param') - 'param' define tipo de

    linha, formato do marcador e a cor do

    grfico. No h ordem especfica nem

    preciso determinar os trs.

  • semilogx (x, y) - Gera grficos com y na

    escala linear e x na escala logartmica

    semilogy (x, y) - Gera grficos com x na

    escala linear e y na escala logartmica

    loglog (x, y) - Gera grficos com x e y nas

    escalas logartmicas

    surf(x, y, z) ou surf(A) Gera um grfico de superfcie

  • ezplot('curva',[a,b]) - Plota a curva no intervalo [a,b]

    polar(ang, f, 'param') - Plota em

    coordenadas polares uma funo f.

    plot3(x, y, z) - Plota grficos em 3D

    contour(Z) Plota as curvas de nvel da matriz Z

  • Funes teis

    figure(valor)

    grid on/off

    hold on/off

    legend

    title(titulo)

    xlabel(label)

    ylabel(label)

    axis

  • Salvando grfico

    f = figure()

    plot(x,y)

    saveas(f, 'image.png');

    No Octave pode-se usar:

    print desp arquivo.jpg

    print(arquivo.png)

  • Parmetros da funo

    plot plot(x, y, parmetro)

    -opes no MATLAB

  • -opes no Octave

  • Resoluo de sistemas

    lineares Forma direta:

    - temos a seguinte forma: A*x = b

    - x = inv(A)*b ou x = A\b

    Decomoposio LU:

    - [L, U, P] = lu (A)

  • [lambda V] = eig (A) matriz de autovalores e autovetores

    poly(A) polinmio caracterstico da matriz

  • Polinmios

    Definido como um vetor em que cada posio um coeficiente, comeando com

    o de mais alta ordem

  • Operaes com

    polinmios roots(p) retorna as razes do polinmio p

    conv(p1,p2) faz a multiplicao do polinmio p1 pelo p2

    [p,r] = deconv(p1,p2) armazena a diviso de p1 por p2 em p e o resto em r

    [r, p, k, e] = residue(a,b) faz a expanso em fraes parcias de a/b

    [a, b] = residue(r, p, k, e) faz o inverso

  • Ajuste de curva

    Encontrar a funo que melhor se ajusta a um grupo de coordenadas

    Utiliza o mtodo dos quadrados mnimos

    - Mtodo muito simples e amplamente

    utilizado

    - minimizao do erro relativo dos pontos

    curva

    - Tem que fazer muita conta!

  • polyfit(x,y,n): retorna o polinmio de grau n que se ajusta aos pontos dos vetores dados por x e y

    poly(vetor) retorna um polinmio cujas razes so os elementos do vetor

    polyval(p,x): avalia o polinmio p para cada elemento de x

  • Integrais definidas e

    indefinidas O MATLAB pode ser usado para resolver

    integrais simples, duplas e triplas

    definidas ou indefinidas

    O Octave, porm, s resolve integrais indefinidas de polinmios

    Para encontrar a rea de diversos tipos de funo existem vrias formas, tanto no

    MATLAB como no Octave

  • trapz(x,y) - Aproximao trapezoidal

    quad(f,a,b) - Quadratura Gaussiana

    quadv(f,a,b) - Regra de Simpson adaptada

    quadl(f,a,b)

    quadgk(f,a,b)

    quadcc(f,a,b)

    polyint(p,cte) - Integral indefinida de algum polinmio

  • Definio de funes

    matemticas Funo matemtica - f(x) = x + 2x + 1

    Representao - @(x) x.^2 + 2*x +1

    Fxy = @(x, y) sin(pi*x.*y).*sqrt(x.*y)

    Funes definidas dessa forma que so usadas nos mtodos de integrao

  • Integrais duplas e

    triplas dblquad(f, xa, xb, ya, yb)

    triplequad(f, xa, xb, ya, yb, za, zb)

  • Diferenciao

    Comando diff

    Funciona como derivao de funo apenas no MATLAB

    Avalia apenas diferenas no Octave. Pode ser usado de forma a calcular derivadas

    em determinado ponto

  • Avaliao da derivada em um certo ponto:

    Dy = diff(y)./diff(x);

    Pode-se usar a derivada atravs do mtodo das diferenas finitas tambm

  • Derivada no MATLAB

    Deve-se criar uma varivel simblica:

    syms x

    Funo que utiliza esta varivel

    f = sin(x)

    Mandar derivar

    diff(f)

  • Utilizando mais de uma

    varivel syms s t

    f = sin(s*t);

    diff(f,t) Derivar em relao a t

    syms x n

    f = x^n

    diff(f)

  • Resoluo de

    Equaes Diferenciais dsolve MATLAB

    - Resolve equaes diferenciais ordinrias

    e sistemas de equaes diferenciais

    lsode Octave

    - Resolve equaes diferenciais

    numericamente

    Transformada de Laplace (MATLAB)

  • dsolve

  • lsode

    Faz o mesmo que a dsolve, porm trabalha apenas com valores numricos

    (vetor de dados)

    Um pouco mais complicada de utilizar

  • Transformada de

    Laplace Amplamente usada em simulao de

    sistemas dinmicos

    Utiliza variveis simblicas

    - laplace(f) Faz a transformada

    - ilaplace(s) Faz a transformada inversa