Isaacsantos Apostila Octave

Embed Size (px)

Citation preview

  • Introduo ao Octave

    Fernando Loureno de Souza

    Junho 2003

  • Sumrio

    1 Introduo 31.1 Notas Sobre as diferenas entre MatLab e Octave . . . . . . . . . . . . . . . . 41.2 Distribuio do Programa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Ambiente de trabalho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Como avaliar os possveis erros no Octave . . . . . . . . . . . . . . . . . . . 5

    2 Operadores Aritmticos 7

    3 Variveis 93.1 Formatos Numricos do Octave . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    4 Matrizes e Vetores 114.1 Como criar uma Matriz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114.2 Como deletar uma linha ou uma coluna de uma Matriz . . . . . . . . . . . . 134.3 Como acessar os elementos da Matriz . . . . . . . . . . . . . . . . . . . . . . 134.4 Como acrescentar linhas ou colunas numa dada Matriz . . . . . . . . . . . . 144.5 Operaes Matriciais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    5 Funes 175.1 Funes elementares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175.2 M-arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185.3 Soluo de sistemas lineares Ax=b . . . . . . . . . . . . . . . . . . . . . . . . 195.4 Soluo de um conjunto de equaes no-lineares . . . . . . . . . . . . . . . 205.5 Clculo da integral definida em um intervalo para uma varivel . . . . . . . 20

    6 Grficos 236.1 Plotando em 2 dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    6.1.1 Funes Especiais de Plotagem em 2 Dimenses . . . . . . . . . . . . 246.2 Plotando em 3 dimenses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    6.2.1 Acssrios para plotagem em 3D . . . . . . . . . . . . . . . . . . . . . 256.3 Como Imprimir ou Salvar os Grficos . . . . . . . . . . . . . . . . . . . . . . . 26

    7 Equaes Diferenciais 297.1 Funo: lsode (fcn, x0, t, tcrit) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2 Equaes Diferenciais Algbricas . . . . . . . . . . . . . . . . . . . . . . . . . 30

    8 Estatstica 31

    1

  • 2 SUMRIO

  • CAPTULO

    1

    Introduo

    O octave originalmente foi concebido para ser um software companheiro, como umlivro texto de graduao no projeto de um reator qumico que estava sendo escrito porJames B. Rawlings, da Universidade Wisconsin-Wisconsin-Madison, e John G. Ekerdtda Universidade do Texas. Claramente, o octave agora muito mais do que apenas umpacote destinado a sala de aula.

    Embora nossos objetivos iniciais fossem um tanto vagos, ns sabamos que teramosque criar algo que permitiria aos estudantes a resolver problemas realsticos, e quepoderia ser usado para muitas coisas exceo dos problemas qumicos do projetodo reator. John W. Eaton

    Originalmente pretendia-se usar o Octave para ensinar o projeto do reator, mas eleacabou sendo usado tambm nas diversas disciplinas da graduao do departamento deengenharia qumica e do departamento da Matemtica da Universidade do Texas, quetem usado este software para ensinar equaes diferenciais e tambm lgebra linear.Todos so incentivados a compartilhar este software com o outro sob os termos geraisde licena pblica do GNU. Voc tambm incentivado a ajudar fazer do octave um pro-grama mais til escrevendo e contribuindo com funes adicionais para ele, e relatandotodos os problemas que voc tiver.

    Atualmente existem excelentes programas de livre distribuio e/ou de dis-tribuio gratuita disponveis para a realizao das mais diversas atividades de pesquisae ensino. Esses programas so desenvolvidos por milhares de pessoas no mundo inteiroe tornam-se cada vez mais de interesse da comunidade cientfica e do pblico em geral.Muitas das atividades cientificas e de ensino nos cursos de Clculo e Fsica, so de-senvolvidas utilizando programas proprietrios(Por exemplo: MatLab R). Muitos dessesprogramas possuem similares gratuitos que podem auxiliar a reduzir os custos de taisferramentas computacionais, ao mesmo tempo em que d acesso irrestrito a ferramentasrobustas. Um desses programas o GNU-Octave, utilizado para clculos numricos.

    Como se pde ver nesta apostila, o software Octave tem uma sintaxe semelhante do MatLab R, oferecendo recursos suficientes maioria dos usurios na resoluo deproblemas numricos de lgebra linear, na manipulao de polinmios, integrao deequaes diferenciais ordinrias e equaes algbrico-diferenciais, alm de outros vriosrecursos que o software oferece.

    3

  • 4 CAPTULO 1. INTRODUO

    Alm do mtodo interativo, o octave tambm aceita o modo batch, no MatLab Rrepresentado pelos ".m files"que ele tambm interpreta na sua maioria, bastando que sesalve no local adequado (octave_ files), assim como foi visto no captulo 6.

    As tendncias de utilizao de Free software tem crescido cada vez mais, como oLinux comparado com o Windows R, ao qual muitas pessoas, empresas e InstituiesAcadmicas esto optando pelo Linux, no s por ser Free, mas tambm pela eficinciaque esse tipo de software oferece.

    Sendo assim, por esses e outros motivos, o Octave a melhor alternativa Freequando comparado com o MatLab R.

    1.1 Notas Sobre as diferenas entre MatLab e Octave

    O Octave 95% compatvel com o Matlab (o nmero dos seus criadores). A maioriadas diferenas ao nvel das rotinas grficas, como veremos no Captulo 6. Abaixoapresentamos alternativas a certos comandos que esto presentes no MatLab e noesto implementadas no Octave.

    MatLab Significado Octaveintersect(A,B) A B intersection(A,B)

    unique(A) Ordenar e eliminar repeties create_set(A)setdiff(A,B) A \ (A B) complement(B,A)setxor(A,B) (A B) \ (A B) complement(intersection(A,B),union(A,B))

    ismember(A,B) TRUE onde {a A e a B} t=zeros(1,length(A));for i=1:length(B),t(find(A==B(i)))=1;end;

    mod(a,b) Resto da diviso inteira abs(rem(a,b))*sign(b)

    Note que a diferena entre MOD (que s existe no Matlab) e REM (que existe emambos) s aparece se a*b

  • 1.4. COMO AVALIAR OS POSSVEIS ERROS NO OCTAVE 5

    GNU Octave, version 2.1.36 (i686-pc-cygwin). Copyright (C) 1996,1997, 1998, 1999, 2000, 2001, 2002 John W. Eaton. This is freesoftware; see the source code for copying conditions. There isABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or FITNESSFOR A PARTICULAR PURPOSE. For details, type warranty.

    Report bugs to .

    >>

    O smbolo >> representa o pront do octave e a partir dele que digitamos os comandos.

    1.4 Como avaliar os possveis erros no Octave

    O Octave informa dois tipos de erros para programas invlidos. Um erro devidoanlise gramatical, que acontece se o Octave no entender algo que voc digitou, porexemplo, se voc escreve errado um determinado comando, tem-se:

    >> functon y=f(x) y=x^2;endfunction>>

    O octave responder com uma mensagem do tipo:

    parse error:>> functon y=f(x) y=x^2;endfunction

    ^

    >>

    Para a maioria dos erros, devido a anlise gramatical, o Octave usa um sinal de inter-calao, para marcar o ponto especfico onde esta o erro. Neste exemplo, o Octave acu-sou um erro de comando mal escrito, functon em vez de function e como ficou faltando aletra i, o cursor apontou exatamente para a letra o, onde deveria conter tambm a letrai. Estas mensagens facilitam muito a identificao e correo dos erros de compilao.Outra forma de erro quando o Octave no reconhece uma varivel ou a estrutura deum comando, como o exemplo abaixo, em que a varivel xno foi definida.

    >> x

    error: x undefined near line 1 column 1>>

    No Octave, no necessrio redigitar comandos que j foram digitados anteri-ormente, basta apenas utilizar as teclas direcionais do computador ( as setas ) paraque se possa obter comandos anteriores, sendo que estes so vizualizados no sentidoinverso, ou seja, do ltimo para o primeiro. E ainda, pode-se utilizar estas teclas paramovimentar o cursor dentro de um comando, podendo este ser corrigido, deletando (us-ando a tecla delete ou backspace) ou inserindo novos caracteres.

  • 6 CAPTULO 1. INTRODUO

  • CAPTULO

    2

    Operadores Aritmticos

    O Octave, assim como outros softwares de programao, possui as operaes obe-decem uma precedncia de acordo com a tabela abaixo:

    Operador Ordem de precedncia Subtrao Potenciao+ Adio Multiplicao/Diviso

    Multiplicao Adio/Subtrao^ Potenciao/ Diviso

    Abaixo, tem-se alguns exemplos de como o Octave obedece a precedncia destesoperadores:

    >> 2*2^3ans = 16>>

    Neste exemplo, pode-se verificar que primeiramente realizado a operao de po-tenciao que precede sobre as demais, e posteriormente a multiplicao que possuiprecedncia igual a diviso. Observe que o Octave atribui o resultado das operaesrealizadas em uma varivel cujo nome "ans". Esta varivel "ans"pode ser guardada emuma outra varivel que o programador pode escolher, por exemplo:

    >> x=ans

    x = 16>>

    >> fer=xfer = 16>> vc=fervc = 16>>

    E assim sucessivamente, podendo, posteriormente, executar operaes com estas var-iveis, tais como:

    7

  • 8 CAPTULO 2. OPERADORES ARITMTICOS

    >> resultado=fer*vc+xresultado = 272>>

    Observe que aqui o sinal de "="significa atribuio, no qual o resultado da operaoexecutada a esquerda do sinal de "=" armazenado na varivel cujo nome foi atribudopelo prprio programador, no caso do exemplo acima foi "resultado".

    Pode ser utilizado vrgula para separar comandos numa mesma linha, por exemplo:

    >> x=12,y=15,t=xx = 12 y = 15 t = 12>>

    E ainda ponto e vrgula para executar a operao, atribuir o resultado variveldesignada e no mostrar o resultado da operao na tela, exemplo:

    >> total=x*y+t*y;>>

    Este procedimento indicado para programas longos e que no se tenha interesse nosresultados intermedirios. O procedimento de mostrar o resultado na tela aumenta ocusto computacional (tempo de execuo + memria) Quando se executa estes tipos decomandos e que deseja-se visualizar o valor atribudo em uma determinada varivel, elapoder ser visualizada digitando simplesmente o seu nome, exemplo:

    >> totaltotal = 360>>

    Alm das precedncias existentes entre os operadores (+,, , /,), pode-se usar aindaparntesis para alterar a ordem de operao, sendo os parntesis mais internos avalia-dos antes dos mais externos.

  • CAPTULO

    3

    Variveis

    Assim como em outros programas, o Octave tem certas regras para nomear as var-iveis. Estas variveis devem ser nomes iniciados por letras e no podem conter espaosnem caracteres de pontuao. Alm do que o Octave distingue letras maisculas deminsculas.

    Algumas variveis j possuem um significado predefinido no Octave (palavras chaes),no podendo estas serem utilizadas para uma outra finalidade que no seja a suaprpria. Algumas destas so:

    ans - varivel usada para os resultados. pi - nmero pi. eps - menor nmero tal que, quando adicionado a 1, cria um nmero maior que 1

    no computador.

    flops - armazena o nmero de operaes em ponto flutuante realizadas (presentenas no implementada).

    inf - significa infinito. NaN ou nan - significa no um nmero, por exemplo, 0/0. i e j - unidade imaginria de um nmero complexo. nargin - nmero de argumentos de entrada de uma funo. nargout - nmero de argumentos de sada de uma funo. realmin - menor nmero que o computador pode armazenar em valor absoluto. realmax - maior nmero que o computador pode armazenar em valor absoluto.

    Todas as variveis, com excesso das predefinidas, podem ser renomeadas ou atribudoa elas qualquer valor, a todo instante.

    Caso o usurio queira vizualizar as variveis declaradas, apagar alguma delas, ouapagar todas elas, basta que se digite os comandos:

    who - mostra as variveis declaradas pelo usurio.

    9

  • 10 CAPTULO 3. VARIVEIS

    clear palavra - apaga a varivel chamada palavra. clear - apaga todas as variveis declaradas pelo usurio.

    3.1 Formatos Numricos do Octave

    O Octave quando nos fornece algum resultado numrico, ele utiliza determinadoscritrios de apresentao deste resultado. Isto ir depender da forma de apresentao edo nmero de casas que esto sendo utilizados. Por exemplo:

    >> 1/3ans = 0.33333

    format short, utiliza-se 4 dgitos para mostrar o resultado.

    >> format short>> 1/3ans = 0.333

    format bank, utiliza-se 2 dgitos para mostrar o resultado.

    >> format bank>> 1/3ans = 0.33

    format long, utiliza-se 14 dgitos para mostrar o resultado.

    >> format long>> 1/3ans = 0.333333333333333

    format short e, utiliza-se 3 digitos, mais o expoente.

    >> format short e>> 1/3ans = 3.33e-01

    format long e - 16 dgitos e expoente, format hex - representa o nmero na base 16 format + - Mostra o smbolo + nos elementos no nulos da matriz e deixa em branco

    os nulos,

    Obs: O Octave possui a sua prpria forma interna de representar os nmeros,portanto, utilizando-se estes comandos, s ir alterar a forma de exibio na tela.

  • CAPTULO

    4

    Matrizes e Vetores

    4.1 Como criar uma Matriz

    Para criar uma matriz e armazen-la em uma varivel de modo que se possa consult-la mais tarde, basta digitar os elementos da matriz entre colchetes [ ... ], sendo os el-ementos de uma mesma linha da matriz separados por vrgula ou espao e as linhasseparadas por ponto e vrgula. Por exemplo:

    >> x=[2,5,8;5,6,7]x =

    2 5 85 6 7

    >>

    Ou

    >> x=[2 5 8;5 6 7]x =

    2 5 85 6 7

    >>

    Caso o usurio queira criar uma matriz sem que ela seja mostrada na tela, bastacolocar apenas ; no final, como por exemplo:

    >> x=[2,5,8;5,6,7];>>

    Obs: Este procedimento(;) pode ser aplicado em qualquer circunstncia.

    Estes trs casos fornecem o mesmo resultado, que o de armazenar estes elementosem forma de matriz (2 linhas por 3 colunas) numa varivel cujo nome x.

    Para gerar uma matriz com elementos igualmente espaados, utiliza-se o seguintecomando:

    11

  • 12 CAPTULO 4. MATRIZES E VETORES

    >> 0:2:10ans =

    0 2 4 6 8 10

    >>

    O Octave possui ainda funes para gerao de matrizes especiais, tais como:

    eye - matriz identidade

    >> I=eye(3)I =

    1 0 00 1 00 0 1

    >>

    ones - matriz cujos todos os elementos so 1

    >> Uns=ones(3)Uns =

    1 1 11 1 11 1 1

    >>

    zeros - matriz nula

    >> Z=zeros(3)Z =

    0 0 00 0 00 0 0

    >>

    rand - matriz com valores aleatrios

    >> Aleat=rand(3)Aleat =

    0.00207 0.59451 0.581220.07802 0.25870 0.629600.47869 0.01718 0.48988

    >>

  • 4.2. COMO DELETAR UMA LINHA OU UMA COLUNA DE UMA MATRIZ 13

    4.2 Como deletar uma linha ou uma coluna de uma Matriz

    Para deletar alguma linha ou coluna de uma Matriz, deve-se utilizar o seguintecomando:

    C =

    2 5 8 48 9 7 63 15 12 11

    >>

    >> C(3,:)=[]C =

    2 5 8 48 9 7 6

    >> C(:,2)=[]C =

    2 8 48 7 6

    >>

    C(3,:), deleta a linha 3 da Matriz C; C(:,2), deleta a coluna 2 da Matriz C resultante.

    4.3 Como acessar os elementos da Matriz

    Para acessar cada elemento da matriz utiliza-se a notao de matrizes B(i,j), onde i a linha, e j a coluna onde o elemento da matriz B est. Por exemplo:

    >> B=[2 3 4;5 6 7]B =

    2 3 45 6 7

    >> B(1,2)ans = 3>> B(2,2)ans = 6>> B(1,:)ans =

    2 3 4

    >> B(:,2)

  • 14 CAPTULO 4. MATRIZES E VETORES

    ans =

    36

    >> B(:,1:2)ans =

    2 35 6

    >>

    Observe que:

    B(1,2), este comando fornece o elemento da linha 1 e coluna 2; B(2,2), este comando fornece o elemento da linha 2 e coluna 2; B(1,:), este comando fornece todos os elementos da linha 1; B(:,2), este comando fornece todos os elementos da coluna 2; B(:,1:2), este comando fornece os elementos de todas as linhas das colunas 1 at a

    2.

    4.4 Como acrescentar linhas ou colunas numa dada Matriz

    >> A=[5 6 7;5 8 9]A =

    5 6 75 8 9

    >> B=[A,[15;12]]B =

    5 6 7 155 8 9 12

    >> C=[B;[16 17 18 19]]C =

    5 6 7 155 8 9 1216 17 18 19

    >>

    B=[A,[15;12]], este comando, acrescenta-se a Matriz A, a quarta coluna formadapelos elementos 15 e 12;

    C=[B;[16 17 18 19]], este comando, acrescenta-se a Matriz A, a terceira linha for-mada pelos elementos 16, 17, 18 e 19.

  • 4.5. OPERAES MATRICIAIS 15

    4.5 Operaes Matriciais

    As operaes matriciais so executadas de forma semelhante a que so executadasas operaes escalares, como por exemplo:

    >> A=[5 6;4 3]A =

    5 64 3

    >> B=[5;3]B =

    53

    >> C=[4 -3;7 8]C =

    4 -37 8

    >> A+Cans =

    9 311 11

    >> 4*Bans =

    2012

    >> A*Cans =

    62 3337 12

    >> C^2ans =

    -5 -3684 43

    >> C.^3ans =

  • 16 CAPTULO 4. MATRIZES E VETORES

    64 -27343 512

    >> (A*C)^2ans =

    5065 24422738 1365

    >> (A+C)*Bans =

    5488

    >>

    As operaes Matriciais podem ser resumidas em:

    Operador Operao Exemplo+ Adio A+B Subtrao AB Multiplicao A B ou k A Potenciao (Ak) Ak.^ Potenciao elemento a elemento (akij) A.k Transposio da Matriz A A

    [v,x]=eig(A) Retorna os autovetores em v e os autovalores em xVisualizao da coluna j da matriz A A(:,j)Visualizao da linha i da matriz A A(i,:)Elemento aij da matriz A A(i,j)

  • CAPTULO

    5

    Funes

    5.1 Funes elementares

    O Octave possui vrias funes cientficas pr-definidas, cujo clculo destas funes, semelhante a obteno atravs das calculadoras, por exemplo:

    >> x=-4x = -4>> y=-20y = -20>> t=5t = 5>> k=lcm(x,y,t)ans = 20>> z=atan(k)z = 1.5208>> z_graus=(k*180)/piz_graus = 1145.9>> anglo_efetivo=1145.9/360anglo_efetivo = 3.1831>>who

    *** currently compiled functions:

    findstr gcd lcm rows

    *** local user variables:

    t x y z k z_graus>>

    Lembrete: O comando who, lista as varaveis declaradas pelo o usurio.

    Algumas destas funes pr-definidas esto listadas abaixo:

    17

  • 18 CAPTULO 5. FUNES

    abs(x) - valor absoluto de x. acos(x) - arco cujo cosseno x. asin(x) - arco cujo seno x. atan(x) - arco cuja tangente x. cos(x) - cosseno de x. exp(x) - exponencial ex. gcd(x,y) - mximo divisor comum de x e y. lcm(x,y) - mnimo mltiplo comum de x e y. log(x) - logaritmo de x na base e. log10(x) - logaritmo de x na base 10. rem(x,y) - resto da diviso de x por y. sin(x) - seno de x. sqrt(x) - raiz quadrada de x. tan(x) - tangente de x.

    5.2 M-arquivos

    As funes podem ser trabalhadas de duas formas, uma delas programar a funono prompt do Octave e utiliz-la, ou programar e salv-la em um arquivo como a ex-tenso ".m"(recurso este conhecido como programao em lote, ou script(roteiro)), aoqual deve ser feito num editor de texto puro, ou seja aquele que salva o arquivo emcdigo ASCII. Neste segundo tipo, para que a verso Windows do Octave, reconhea es-tas funes, deve-se salvar estes programas na pasta que o programa cria no momentode instalao, cujo endereo :

    Diret{\o}rio de instala\c{c}{\~a}o\Arquivos de programas\GNU Octave 2.1.36\octave_files

    Neste caso, depois de ter salvado estas funes neste arquivo, para utiliz-las, bastaapenas que se digite no prompt do Octave o nome e os parmetros, ao qual foi salvo afuno.

    Exemplos:

    >> function y=f2(x)b=0.01; a0=10; c=1000;y=a0*exp(b*x)*sin(2*pi/c*x)endfunction

    Para que o Octave reconhea esta funo, cujo programa foi feito em um outrosoftware, ela dever ter sido salva na pasta octave_files com extenso ".m", na qualo nome da funo tem que ser "f2.m". E para executar esta funo, basta digitar-se noprompt do Octave da seguinte maneira:

  • 5.3. SOLUO DE SISTEMAS LINEARES AX=B 19

    >> y=f2(3)y = 0.19422

    Outro exemplo:

    function X=fourier2(x,N)% Calcula a N pontos da transformada de fourier de uma sequencia(vetor x)% implementado com 1 loop for

    X=zeros(1,N);L=length(x);for k=0:(N-1)

    w= -j*2*pi/N*k;X(k+1)=sum(x .* exp(w .* (0:(L-1)) ) );

    end

    Neste caso, a funo dever ser salva como "fourier2.m", e para execut-la, bastadigitar:

    >> x=fourier2(2,4)x =

    2 2 2 2>>

    5.3 Soluo de sistemas lineares Ax=b

    Por exemplo:

    >> A=rand(3,3)A =0.16808 0.53037 0.135280.84642 0.09465 0.971880.77846 0.88364 0.02581

    >> b=rand(3,1)b =0.829430.592670.31844

    >> x=A\bx =

    -1.446731.584801.71545

    >>

    x=A\b, conceitualmente equivalente a usar (A1)b, o que da a resoluo deste tipode problema.

  • 20 CAPTULO 5. FUNES

    5.4 Soluo de um conjunto de equaes no-lineares

    Neste caso, tem-se:Sejam:

    y1 = 2x21 + 3x1x2 + 4sen(x2) 6y2 = 3x21 2x1x22 + 3cos(x1) + 4

    Com as condies iniciais y1 = 1, y2 = 2. Ento no Octave, a soluo implementadacomo:

    >> function y=f(x)y(1)=-2*x(1)**2+3*x(1)*x(2)+4*sin(x(2))-6;y(2)=3*x(1)**2-2*x(1)*x(2)**2+3*cos(x(1))+4;endfunction>> [x,info]=fsolve(f,[1;2])x =

    0.579832.54621

    info = 1>>

    Obs: O valor info = 1, indica que a soluo converge.

    5.5 Clculo da integral definida em um intervalo para uma var-ivel

    Para isso, utiliza-se a funo quad, em uma operao estabelecida da seguinteforma:

    [v,ier,nfun,err]=quad("f",a,b,tol,sing)

    Onde f do lado direito da expresso, o nome da funo a ser chamada para calcu-lar o valor do integrando(deve ter a forma y = f(x), sendo y e x escalares); os argumentosa e b so os limites da integrao(que podem ser +-infinito); o argumento tol um ve-tor que especifica a preciso desejada do resultado; e o argumento sing um vetor devalores em que o integrando conhecido como singular. Quanto ao lado esquerdo da ex-presso, tm-se que n o resultado da integrao e ier um cdigo de erro(0 indica quea operao foi bem sucedida); o valor nfun indica quantas iteraes foram necessrias;e o valor de err uma estimativa do erro na soluo. Por exemplo:

    Seja: 30xsen

    (1x

    )|1 x| dx

    ento, no Octave, a soluo implementada como:

    >> function y=f(x)y=x.*sin(1./x).*sqrt(abs(1-x));endfunction>> [v, ier, nfun, err]=quad("f", 0, 3)

  • 5.5. CLCULO DA INTEGRAL DEFINIDA EM UM INTERVALO PARA UMA VARIVEL21

    v = 1.9819ier = 1nfun = 5061err = 1.1522e-07

    >>

    Obs: Embora prescindvel para o clculo de quad, a forma ponto dos operadores usa-dos no GNU/Octave torna mais fcil criar um conjunto de pontos para gerar grficos(poisisso possibilita utilizar argumentos vetoriais para produzir resultados vetoriais).

  • 22 CAPTULO 5. FUNES

  • CAPTULO

    6

    Grficos

    6.1 Plotando em 2 dimenses

    Todas as funoes de plotagem do octave usam o Gnuplot para o manuseio dos grfi-cos. Existem dois nveis de funes, gplot(manuseio de grficos 2D) e gsplot(manuseio degrficos 3D)., que comporta-se quase exatamente quanto o correspondente das funesdo MatLab, que o plot e o splot. Um exemplo simples em que usamos o comando plotpara gerar o grfico de duas curvas.

    >> t = 0:0.1:6.3;>>plot(t, cos(t), "-b;cos(t);", t, sin(t), "+3r;sen(t);");

    Os termos entre aspas indica o formato da linha e a legenda a ser apresentada pelogrfico. No exemplo indicamos que a curva do cosseno deve ser slida (-), na cor azul (b)e na legenda a curva identificada por cos(t) (;cos(t);). No caso do seno indicamos que acurva ser indicada pelo sinal de + a cada trs pontos, na cor vermelho (r), com legendasen(x) (Ver Figura 6.1).

    Comando gplotVoc pode plotar expresses mtiplas com um simples comando pela separao

    delas por vrgulas. Cada expresso deve ter seu prprio ajuste de requisitos. A expressopara ser plotada no deve conter qualquer matriz literal([1,2;3,4]), por exemplo:

    > gplot [-11:11] [-1.1:1.1] \

    Obs: Ele aceitar o comando mas no ir plotar nada.

    Comando: data with lines, Desenha o grfico como uma linha reta. Comando: gsetopes, Opes de ajuste dos parmetros de plotagem. Comando: gshow opes, Mostra os parmetros de plotagem. Comando: replot, Plota o grfico novamente. Comando: closeplot, Fecha a janela do grfico. Comando: axis, Limites dos eixos.

    23

  • 24 CAPTULO 6. GRFICOS

    -1

    -0.8

    -0.6

    -0.4

    -0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    0 1 2 3 4 5 6 7

    cos(t)sen(t)

    Figura 6.1: Exemplo de grfico

    6.1.1 Funes Especiais de Plotagem em 2 Dimenses

    Comando: bar(x,y), Dados 2 vetores de dados x e y, produzido um grfico debarras. Se somente um argumentmo dado, pegamos os valores de y, e as coorde-nadas x so colocadas para ser o ndice dos elementos.

    Bar(x,y) equivalente a:

    [xb,yb] = bar(x,y); plot(xb,yb);

    Comando: loglog(args), Plota em escala logaritmica ambos os eixos. Comando: polar(, ), Faz um grfico de acordo com as coordenadas polares e . Comando: semilogy(args), Grfico logartmico somente no eixo y. Comando: semilogx(args), Grfico logartmico somente no eixo x. Comando: stairs(x, y), Grfico em degrau. Comando: loglog(args), Plota em escala logaritmica ambos os eixos.

    6.2 Plotando em 3 dimenses

    H muitas formas de se criar um grfico 3D. Primeiro necessrio gerar a malha dedados a serem visualizados(usando o recurso meshgrid). Para executar a visualizao3D pode-se utilizar o comando mesh e para gerao de contornos, o comando contour.

    Comando: gsplot, Plota em 3 dimenses.

  • 6.2. PLOTANDO EM 3 DIMENSES 25

    >> x=[1 2 3]x =

    1 2 3>> y=[2 5 6]y =

    2 5 6>> z=[x;y]z =

    1 2 32 5 6

    >> gsplot z

    Grfico 3D

    Comando: mplot(x1,y1,x2,y2), Os vrios valores de x e y so plotados nummesmo grfico. Este comando necessrio quando deseja-se comparar diferentesvalores.

    Comando: plot border(args), Especifica o tipo de borda a ser usada, de acordocom os seguintes argumentos:

    blank;all;north;south;east;west.

    Comando: subplot(rows,cols,index)Rows, nmero de linhas no subplot grid;Cols, nmero de colunas no subplot grid;Index, index de subplot onde se faz a proxima figura.

    6.2.1 Acssrios para plotagem em 3D

    Comando: grid, Coloca uma grade na figura plotada. Comando: title(string), Especifica um ttulo para a figura. Comando: xlabel(string), Especifica um nome, para o eixos x. Comando: ylabel(string), Especifica um nome, para o eixos y. Comando: zlabel(string),Especifica um nome, para o eixos z.

    Outra forma usar o comando mesh em que temos que definir a malha, pelo co-mando meshgrid para obter os pontos de plotagem

    Exemplo de grficos em 3D:

    >> [x,y]=meshgrid(-4:0.6:4,-3:0.6:3);>> z=x.^2+y.^2;>> grid;

  • 26 CAPTULO 6. GRFICOS

    >> xlabel(eixo x); ylabel(eixo y); zlabel(eixo z)>> title(Exemplo de Mesh);>> mesh(x,y,z);>> gset term postscript color>> gset output "gset3D.ps">> replot

    Exemplo de Mesh

    line 1

    -4-3

    -2-1 0 1 2 3 4

    eixo x-3

    -2-1

    01

    23

    eixo y

    0

    5

    10

    15

    20

    25

    eixo z

    Figura 6.2: Grfico utilizando a funo mesh.

    6.3 Como Imprimir ou Salvar os Grficos

    No Octave os processos de impresso e gravao de um determinado grfico, utilizaa seguinte sequncia de comandos:

    Para salvar os grficos:

    >> gset term postscript eps 22>> gset output "nome do grafico.ps">> replot

    Onde o primeiro comando define o formato do arquivo, o segundo define o nome doarquivo e o terceiro gera o grfico de acordo com os parmetros estabelecidos. Algunstipos de formato so:

    postscript, PostScript graphics language; emf, Enhanced Metafile Format; epslatex, LaTex(Text) and encapsulated PostScript; latex, LaTex picture environment;

  • 6.3. COMO IMPRIMIR OU SALVAR OS GRFICOS 27

    texdraw, LaTex texdraw environment.

    Para imprimir o grfico em ambiente Windows R:

    >> gset term windows>> gset output "PRN">> replot

  • 28 CAPTULO 6. GRFICOS

  • CAPTULO

    7

    Equaes Diferenciais

    O octave possui variveis especficas para a resoluo de equaes diferenciais. Afuno Lsode pode ser usada para resolver Equaes Diferenciais Ordinarias na formade Problema de Valor Inicial: {

    dxdt = f(x, t),x(0) = x0

    7.1 Funo: lsode (fcn, x0, t, tcrit)

    Esta funo retorna uma matriz de x elementos como funo de t, dado um estadoinicial do sistema x0. Cada linha da matriz resultante, corresponde para um dos ele-mentos do vetor t. O 1 elemento de t corresponde para o valor inicial do estado x0 entoa 1a linha da sada x0. O 1o argumento, fcn, uma string que nomeia a funo parachamar para o computador o vetor de correto aspecto para o ajuste de equaes.

    E deve ter a forma: xdot = f(x,t)Onde xdot e x so vetores e t est na forma escalar. Ex:

    >> function xdot=f(x,t)xdot=zeros(3,1);xdot(1)=77.27*(x(2)-x(1)*x(2)+x(1)/-8.375e-06*x(1)^2);xdot(2)=(x(3)-x(1)*x(2)-x(2))/77.27;xdot(3)=0.161*(x(1)-x(3));endfunction>> x0=[4;1.1;4];>> t=linspace(0,500,1000);>> y=lsode(f,x0,t)

    y =4.00000 1.10000 4.00000

    . . .

    . . .

    . . .

    0.99999 0.97619 1.06809

    29

  • 30 CAPTULO 7. EQUAES DIFERENCIAIS

    7.2 Equaes Diferenciais Algbricas

    Funo: Dassl

    usada para resolver equaes diferenciais algbricas. Esta funo Retorna umamatriz de estados e sua primeira derivada em relao a t. O 1 elemento de t correspondeao estado inicial x0 e a derivada xdot0.

    [x,xdot] = dassl (fcn, x0 , xdot0, t , tcrit)

    O primeiro argumento, fcn, uma string que nomeia a funo a ser chamada paracomputar o vetor de residuos para o ajuste de equaes. E deve ter a seguinte forma:

    res = f(x,xdot,t)

    Onde x, xdot e res so vetores, e t um esacalar.

  • CAPTULO

    8

    Estatstica

    Neste captulo so encontradas funes para clculo de mdia, desvio padro, entreoutras.

    Funo: mean(x)

    Se x uma matriz, esta funo ir computar o significado para cada coluna eretorn-las em um vetor linha.

    mean(x) = sumi x(i)/ N

    Funo: median(x)

    Esta funo calcula o valor mediano do vetor x.

    median(x) = (x(N/2) + x((N/2)+1))/2

    Funo: std(x)

    Esta funo calcula o valor mediano do vetor x.

    Std(x) = sqrt(sumsq(x- mean(x)) / (x-1))

    Funo: cov(x,y)

    Cada linha de x e y uma observao e cada coluna uma varivel. A entrada(i,j) ordem de cov(x) a covarincia entre a varivel de ordem i em x, e a varivel deordem j em y.

    Funo: corrcoef(x,y)

    Esta funo faz a correlao entre a varivel de ordem i em x, e a varivel deordem j em y.

    31