Você está na página 1de 3

OCTAVE

Este material um auxlio de consulta rpida, o conhecimento aqui apresentado deve ser fundamentado pelas atividades de aula e principalmente pelas bibliografias fornecidas. Cada disciplina demanda parte do conhecimento aqui resumido, devendo o aluno estar apto a distingu-la

true true false false

true false true false

true false false false

true true true false

true false false true

5) Manipulao matricial e vetorial


5.1) Criar vetor. > va=1:1:10 a = 1 2 3 4 5 6 7 8 9 10 > vb=linspace(1,10,5) vb = 1.0 3.25 5.50 7.75 10.00 5.2) Criar matriz > ma=[1,2,3;4,5,6;7,8,9;10,11,12] ma = 1 2 3 4 5 6 7 8 9 10 11 12 5.3) Criar matrizes padronizada > zeros(2,2) # matriz nula ans = 0 0 0 0 > ones(2,2) # matriz zero ans = 1 1 1 1 > eye(2,2) # matriz identidade ans= 1 0 0 1 > nan(2,2) # matriz nula ans = NaN NaN NaN NaN > rand(2,2) # matriz aleatorio ans = 0.21680 0.97528 0.57017 0.97381 5.4) Acessar ou alterar elemento da matriz. Referncia subscripts ou linear. > mmatriz(2,2) ans = 4.4 > mmatriz(3) ans = 5.5 > sub2ind([3,2],2,2) ans = 5 > [i,j]=ind2sub([3,2],3) i = 3 j = 1 5.5) Obter tamanho da matriz e vetor > lin = size(mmatriz,1) #obtem a 1 dimenso linha lin = 3 > col = size(mmatriz,2) #obtem a 2 dimenso coluna col = 2 > [lin,col]=size(mmatriz) # obtem a linha e a coluna lin = 3 col = 2 > tam = size(vvetor,2) #obtem o tamanho do vetor col = 6 5.6) Retira parte da matriz. A(inicioL:fimL,inicioC:fimC). Use end para acessar a ultima linha ou coluna. Use : para acessar a toda a linha ou coluna. B=mA(2:3,1:2) B = 4 5 7 8 5.7) Construo e acesso a matriz de textos. Numero de caracteres corresponde as nmero de colunas. A matriz de texto "mt" e prxima letra minscula. > mtNomes=['joao';'maria'] vtNomes = joao maria > mtNomes(2,:) maria 5.8) Comando de estatistica. Se arg for matriz retorna a funcao para cada coluna. [vlr pos]=min(arg) # retorna o min valor e sua posicao [vlr pos]=max(arg) # retorna o max valor e sua posicao sum(arg) # retorna a soma dos elementos prod(arg) # retorna o produto dos elementos 5.9) Comando de pesquisa. find(arg == 3) # localiza valor igual a 3 em arg

1) Introduo
1.1) Movimentar entre as pastas do sistema, dentro ou fora do octave "cd caminho" vai ao diretrio especificado pelo caminho "ls" lista um caminho especificado ou a pasta atual "pwd" lista o caminho atual 1.2) Para acessar o octave via terminal linux digite: $ octave 1.3) Verifique se os pacotes: odepkg, statistics, symbolic. Esto instalados: > pkg list Caso negativo acesse http://octave.sourceforge.net/ e proceda a instalao. 1.4) Ativando o dirio de atividades. Recarregue suas variveis, se houver. > diary Diario01.txt > diary on > load Variaveis01.txt 1.5) DESENVOLVA SUA TAREFA. Pode acessar ajuda de qualquer funo. > help sum Ou listar as variveis usadas no momento > whos Apague as variveis desnecessrias > clear ea vb mc 1.6) Salve as varievis ao finalizar uma tarefa. > save Variaveis01.txt 1.7) Desative o dirio e feche o programa. > diary off > quit

2) Nomes de variveis
2.1) Adotamos uma letra minscula como prefixo do nome da varivel para indicar seu tipo. ttexto = 'Texto Livre' # para texto. enumero = 1.123 # um escalar inteiro ou decimal. vvetor = [1;2;3;4;5;6] ou [1,2,3,4,5,6] # para vetor linha ou coluna, padro (Nx1). mmatriz = [1.1,2.2;3.3,4.4;5.5,6.6] # para matriz. sestrutura = struct(tnome,joao,epeso,20.5) # para dados tipo struct. ff = 1+2*x # para funcao em anlise simbolica. Em que x varivel simblica do modelo matemtico e deve vir sem prefixo.

3) Modelos e Operaes matemticas


3.1) Escrevendo modelo matemtico como funes em linha. f=@(<arg1>,...,<argN>) <expresso> > f=@(x) 2*x; > f(2) ans = 4 3.2) Escrevendo modelo matemtico como texto e calcula valor > tf='1+2*x'; > x=2; > eval(tf) ans = 5 3.3) Operaes bsicas. + Soma; - Subtrao; * Multiplicao; / Diviso; ^ ou ** Potenciao; . Aplica a operao termo a termo na matriz, exemplo A.*B; ' transpe a matriz. "++" incrementa a varivel; "- -" decrementa a varivel. 3.4) Operaes matemticas. sin(x); cos(x); tan(x); asin(x); acos(x); atan(x); exp(x); logaritmo na base e: log(x); logaritmo na base 10: log10(x); valor absoluto: abs(x); menor numero inteiro (no menor que o passado como parmetro): ceil(x); maior numero inteiro (nao maior do que o passado como parmetro): floor(x); arredenda corretamente: round(x); resto da diviso: rem(x,y); raiz quadrada: sqrt(x); pi valor de pi=3,14...

4) Operadores de comparao
< # menor que. Ex: 1 < 2 > # maior que <= # menor ou igual a
>= // maior ou igual a == // operador lgico igual ~= // operador log. diferente

~ // negao do teste
& // operador lgico e | //operador lgico ou

Teste 1 Teste 2

&

==

Formulrio Octave. Prof. Dr. Catalunha - Verso atualizada em 26/04/2011 s 14:30 hs

Pgina 1 de 3

x = randn(2,3) exemplo de matriz xind = (x >= 1)|(x < -0.2) Cria indice na condio. xc = x(xind) Seleciona valores bons. > finite([-1,0,1,inf,NaN,NA]) ans = [1 1 1 0 0 0] # retorna ind. de valores validos

elseif condicao02 #caso verdadeiro02 else #caso falso endif 7.5) Estrutura de controle Switch. switch (inteiro) case 1 # codigo case {2,3} # codigo otherwise # codigo endswitch ou switch (texto) case 'bananeira' # codigo case {'palmeira','figueira'} # codigo otherwise # codigo endswitch 7.6) Estrutura de repetio for # for i=inicio:fim for i=1:10 # executa codigo i vezes endfor 7.7) Estrutura de repetio while while condicao # executa codigo enquanto condicao for verdadeira endwhile 7.8) Estrutura de repetio do-until do # executa codigo at que condicao seja verdadeira until condicao 7.9) Mensagem de alerta e erro. Encerra o programa neste ponto. usage("texto da mensagem"); error("texto da mensagem");

6) Matemtica Simblica
6.1) Iniciar pacote de anlise matemtica simblica > symbols; 6.2) Declarar varivel simblica > x=sym('x'); > y=sym('y'); 6.3) Declarar modelo matemtico. Pode ser lido direto com input. > sf = 1+2*x; > sg = x+y; 6.4) Substituir valor de varivel num modelo matemtico, transformando-o para decimal. > ey = subs(sf,x,1) eY = 3.0 > ez = subs(sg,{x,y},{2,2}) ez = 4.0 6.5) Operaes matemticas para construo de modelo matemtico em ambiente simblico. Cos(x); Cosh(x); Exp(x); Log(x); Sin(x); Sinh(x); Tan(x); Tanh(x); aCos(x); Acosh(x); aSin(x); aSinh(x); aTan(x); aTanh(x); Sqrt(x); 6.6) Calculo de derivada de uma funo. > sd1f = differentiate(sf,x,1) sd1f = 2.0 6.7) Plotar modelo simblico. As demais configuraes seguem o exemplo do grfico de pontos. > splot(sf,x,0:10) 6.8) Transformando tipo simblicos em decimais. > ey = to_double(subs(sf,x,1) ey = 3 6.9) Avaliando modelo informado como texto > tf='1+Log(x)' > ey = to_double(subs(eval(tf),x,2)) ey = 1.6931

7) Estrutura bsica para programao


Para programao no octave, usa-se toda a capacidade de processamento disponvel no octave. Use #... para comentrio simples e #{ #} para comentrio bloco. 7.1) Arquivo que contm a interface com o usurio. ~/ie_catalunha_tarefa /Interface.m # Autor: Nome do autor # Detalhamento da funo function Interface() # interface para coleta de parametros de entrada # chamada a funcao da tarefa # interface para mostra de parametros de saida endfunction # subfuncao para leitura de parametros em arquivo # subfuncao para gravar parametros em arquivo 7.2) Arquivo que contm a soluo pura do problema proposto na tarefa. ~/ie_catalunha_tarefa/Tarefa.m # Autor: Nome do autor # Detalhamento da funo function[saida01,...,saidaN]=Tarefa(entrada01,...,entr adaN) # codigo para obtencao da solucao da tarefa endfunction # subfuncao se for necessario 7.3) Estrutura bsica de arquivos e pastas de um programa ie_catalunha_tarefa |-- Interface.m |-- Tarefa.m |-- entrada.txt |-- saida.txt |-- Diario.txt `-- Variaveis.txt Obs.: o arquivo sublinhado ser criado automaticamente pelo programa.

Outros cdigos e observaes:


7.10) L valor do teclado. No importa o tipo. Se usar 's' ele no interpreta a entrada. > enumero=input("Informe o valor: "); Informe o valor: 1.1 > tequacao=input("Informe a equacao:","s"); Informe a equacao: 1+2*x 7.11) Imprime texto e valor de variavel. %s=imprimir texto; %cd imprimir inteiro; %c.pf imprimir decimal, em que c=numer de casas, p=preciso decimal. > printf("ver %s %4d %5.2f",ttexto,einteiro,edecimal) ver Texto Livre 1 1.23 7.12) Transformando tipos texto para numero e vice versa. > num2str(mmatriz,"%4.1f") ans = 1.1 2.2 3.3 4.4 > str2num("1.23"); ans = 1.2300 7.13) Comparar dois textos > strcmp("a","a") ans = 1 7.14) Estrutura do arquivo padro de entrada. Considere um parametro de entrada
edecimal=1.1". Um vetor vdecimal=[1.1;2.2]. Uma matriz mdecimal=[1.1,2.2;3.3,4.4]. Aps vetor ou matriz escreva "fim". Use # para comentrio deste arquivo.

/ie_catalunha_basico/entrada.txt
#Autor: Prof. Dr. Catalunha #Tarefa: Basico enumero 1.1 vvetor 1.1 2.2 fim mmatriz 1.1 2.2 3.3 4.4 fim

Estrutura de controle e repetio


7.4) Estrutura de controle if if condicao01 #caso verdadeiro01

7.15) Gravar dados em um arquivo de texto. function

Formulrio Octave. Prof. Dr. Catalunha - Verso atualizada em 26/04/2011 s 14:30 hs

Pgina 2 de 3

GravaArqSaida(tarquivo,ttexto,einteiro,edecimal,vvetor, mmatriz) aarq=fopen(tarquivo,"w"); fprintf(aarq,"tTexto\n"); fprintf(aarq,"%s\n",tTexto); fprintf(aarq,"einteiro\n"); fprintf(aarq,"%d\n",einteiro); fprintf(aarq,"edecimal\n"); fprintf(aarq,"%5.2f\n",edecimal); fprintf(aarq,"vVetor\n"); fprintf(aarq,"%.4f\n",vVetor); fprintf(aarq,"fim\n"); fprintf(aarq,"mmatriz\n"); for i=1:size(mmatriz,1) fprintf(aarq,"%.4f ",mmatriz(i,:)); fprintf(aarq,"\n"); endfor fclose(aarq); endfunction 7.16) Le dados em um arquivo de texto. function [ttexto,enumero,vvetor,mmatriz,mtTexto]=LeArqEntrada(ta rquivo) aarq = fopen (tarquivo, "r"); while(!feof(aarq)) linha=fgetl(aarq); switch (linha) case "ttexto" ttexto=fgetl(aarq); case "enumero" linha=fgetl(aarq); enumero=str2num(linha); case "vvetor" # Para vetor coluna (1xN) pos=1; while(!strcmp(linha=fgetl(aarq),"fim")) vTemp(pos++)=str2num(linha); endwhile vvetor=vTemp; case "mmatriz" # Para vetor linha (Nx1) ou matriz lin=1; while(!strcmp(linha=fgetl(aarq),"fim")) mTemp(lin++,:)=str2num(linha); endwhile mmatriz=mTemp; case "mtTexto" mtTemp=''; while(!strcmp(linha=fgetl(aarq),"fim")) mtTemp=[mtTemp;linha] end mtTexto=mtTemp; endswitch endwhile fclose(aarq); endfunction 7.17) Gerar grfico. Inicialmente precisamos esconder a janela do plot, para isto use a linha a seguir: janelaPlot=figure('Visible','off'); posteriormente incluia as informaes necessrias conforme item 8

8.4) Grafico de superfcie. As demais configuraes seguem o exemplo do grfico de pontos. use tambm zlabel > vx=[0,0.5,1] > vY=[0,1,2] > [mx,my]=meshgrid(vx,vY) > mz=mx.**2+2*my > mesh(mx,my,mz) > surf(mx,my,mz) > contour(mx,my,m Z) > contour3(mx,my,mz) > plot3(mx,my,mz)

9) Integrao
9.1) Integral simples. > f=@(x) 1/x; > quad(f,3.0,3.6) ans = 0.18232 9.2) Integral dupla > g=@(x,y) x.**2+2*y; > dblquad(g,0,1,0,2) ans = 4.6667

10) Manipulaes polinomiais


10.1) Ajuste polinomial. polyfit(vx,vy,n) em que n o grau do polinmio. A sada cn c0. > vx=[0.0,1.0] > vy=[1.0,3.0] > vc = polyfit(vx,vy,1) vc = 2.0000 1.0000 # P1= 2*x + 1 10.2) Avalia um polinmio. polyval(vc,x) aplicar um valor x qualquer no polinmio obtido com base nos coeficientes de vc. > polyval(vc,3) # o mesmo que P1(3)= 2*x + 1 ans = 7 10.3) Calcula raizes de um polinmio. vc o vetor de coeficientes. > roots(vc) # o mesmo que 0 = 2*x + 1 ans = -0.5 10.4) Interpolao. interp1(vx,vy,x,metodo) x um valor desconhecido interpolado pelo mtodo escolhido. > vx = [0,0.2,0.4,0.5] > vy = [0,2.008,4.064,5.125] > interp1(vx,vy,0.3,spline) ans = 3.027

11) Regresso Linear Mltipla


11.1) Ajuste um modelo y i=0 +1 x 1i+, , ,+ p x pi p o nmero de variveis explicativas e i varia de 1 a n. Sendo os dados organizados da forma. 1 x 11 x 21 ... x p1 y1 0 y2 1 1 x 12 x 22 ... x p2 e resultando ... ... ... ... ... ... ... yn p 1 x1n x 2n ... x pn

[] [

] []

> regress(my,mx) ans = 1 2 # P1= 1 + 2*x

8) Gerar Graficos
8.1) De Pontos. Considere os dados vX, vY, vXt, vYt. plot(x,y,formato). Em que formato='<estiloDoPonto><corDoPonto>;<legenda>;' . Sendo: estiloDoPonto=-, +,*,o,x,^. corDoPonto=k(preto), w(branco), r(vermelho), g(verde), b(azul), m(magenta), c(ciano). legenda=texto. > plot(vx,f(vx),'r;orig;',vxt,vyt,'b;transf;') > grid on > title('Titulo do Grafico') > xlabel('Nome do EixoX') > ylabel('Nome do EixoY') > axis([0,10,0,50]) > print('nomeArquivo.png','-dpng') 8.2) De funo em linha. Plotando uma funcao. fplot(<funcao>, [xmin,xmax,ymin,ymax]). As demais configuraes seguem o exemplo do grfico de pontos. fplot(f,[-2,2,0,4]) 8.3) Grafico em linha 3D. As demais configuraes seguem o exemplo do grfico de pontos. use tambm zlabel > z=[0:pi/100:20*pi]; > x=cos(z); > y=sin(z); > plot3(x,y,z)

12) Raiz de funo


12.1) Encontrar raiz de uma funo > f=@(x) x**3-3*x+1; > fzero(f,2) ans = 1.5321

13) EDO 14) Banco de dados

Formulrio Octave. Prof. Dr. Catalunha - Verso atualizada em 26/04/2011 s 14:30 hs

Pgina 3 de 3