Você está na página 1de 3

5) Manipulação matricial e vetorial

OCTAVE
Este material é um auxílio de consulta rápida, o conhecimento aqui
5.1) Criar vetor.
> va=1:1:10
a = 1 2 3 4 5 6 7 8 9 10
apresentado deve ser fundamentado pelas atividades de aula e principalmente > vb=linspace(1,10,5)
pelas bibliografias fornecidas. Cada disciplina demanda parte do vb = 1.0 3.25 5.50 7.75 10.00
conhecimento aqui resumido, devendo o aluno estar apto a distinguí-la
5.2) Criar matriz
1) Introdução > ma=[1,2,3;4,5,6;7,8,9;10,11,12]
ma =
1.1) Movimentar entre as pastas do sistema, dentro ou fora do octave 1 2 3
"cd caminho" vai ao diretório especificado pelo caminho 4 5 6
"ls" lista um caminho especificado ou a pasta atual 7 8 9
"pwd" lista o caminho atual 10 11 12
5.3) Criar matrizes padronizada
1.2) Para acessar o octave via terminal linux digite: > zeros(2,2) # matriz nula
$ octave ans =
0 0
1.3) Ativando o diário de atividades. Sempre ao iniciar uma tarefa. 0 0
diary Diario01.txt > ones(2,2) # matriz zero
diary on ans =
1.4) Para acessar ajuda de qualquer função do octave 1 1
> help sum 1 1
> eye(2,2) # matriz identidade
1.5) Lista as variáveis usadas ans=
> whos 1 0
0 1
1.6) Salve e carregue suas variáveis. Sempre ao finalizar uma tarefa. N indica o > nan(2,2) # matriz nula
número do exercício. ans =
save Variaveis01.txt NaN NaN
load Variaveis01.txt NaN NaN
> rand(2,2) # matriz aleatorio
2) Nomes de variáveis ans =
0.21680 0.97528
2.1) Adotamos uma letra minúscula como prefixo do nome da variável para indicar 0.57017 0.97381
seu tipo.
ttexto = 'Texto Livre' # para texto. 5.4) Acessar ou alterar elemento da matriz. Referência matricial ou linear.
enumero = 1.123 # um escalar inteiro ou decimal. > mA(2,2)
vvetor = [1,2,3,4,5,6] # para vetor. ans = 5
mmatriz = [1.1,2.2;3.3,4.4;5.5,6.6] # para matriz. > mA(3)
aarquivo = dados # para arquivo. ans = 7
sf = 1+2*x # para análise simbolica. Em que x é variável simbólica do modelo 5.5) Obter tamanho da matriz e vetor
matemático e deve vir sem prefixo. > lin = size(mmatriz,1) #obtem a 1 dimensão linha
lin = 3
3) Modelos e Operações matemáticas > col = size(mmatriz,2) #obtem a 2 dimensão coluna
col = 2
3.1) Escrevendo modelo matemático como funções em linha. > [lin,col]=size(mmatriz) # obtem a linha e a coluna
f=@(<arg1>,...,<argN>) <expressão> lin = 3
> f=@(x) 2*x; col = 2
> f(2) > tam = size(vvetor,2) #obtem o tamanho do vetor
ans = 4 col = 6
3.2) Escrevendo modelo matemático como texto e calcula valor 5.6) Retira parte da matriz. A(inicioL:fimL,inicioC:fimC). Use “end” para acessar
> tf='1+2*x'; a ultima linha ou coluna. Use “:” para acessar a toda a linha ou coluna.
> x=2; B=mA(2:3,1:2)
> eval(tf) B =
ans = 5 4 5
7 8
3.3) Operações básicas. “+” Soma; “-” Subtração; “*” Multiplicação; “/” Divisão;
“^” ou “**” Potenciação; “.” Aplica a operação termo a termo na matriz, exemplo 5.7) Construção e acesso a matriz de textos. Numero de caracteres corresponde as
A.*B; “ ' ” transpõe a matriz. "++" incrementa a variável; "- -" decrementa a número de colunas. A matriz de texto é "mt" e próxima letra é minúscula.
variável. > mtNomes=['joao';'maria']
vtNomes =
3.4) Operações matemáticas. abs(x); sin(x); asin(x); cos(x); joao
acos(x); atan(x); tan(x); exp(x); ceil(x); retorna o maior maria
numero inteiro (menor que o passado como parâmetro log(x); Retorna o > mtNomes(2,:)
logaritmo na base e log10(x); Retorna o logaritmo na base 10 floor(x); maria
retorna o maior numero inteiro (nao menor que o passado como parâmetro
round(x); Retorna o long mais próximo do parâmetro passado sqrt(x); raiz 5.8) Comando de estatistica. Se arg for matriz retorna a funcao para cada coluna.
quadrada. pi valor de pi=3,14... [vlr pos]=min(arg) # retorna o min valor e sua posicao
[vlr pos]=max(arg) # retorna o max valor e sua posicao
4) Operadores de comparação sum(arg) # retorna a soma dos elementos
prod(arg) # retorna o produto dos elementos
< # menor que. Ex: 1 < 2 ~= // operador log. diferente
> # maior que ~ // negação do teste
<= # menor ou igual a & // operador lógico e 5.9) Comando de pesquisa.
>= // maior ou igual a | //operador lógico ou [i j]=find(arg == 3) # localiza valor igual a 3 em arg
== // operador lógico igual
x = randn(2,3) exemplo de matriz
Teste 1 Teste 2 & | == xind = (x >= 1)|(x < -0.2) Cria indice na condição.
xc = x(xind) Seleciona valores bons.
true true true true true
> finite([-1,0,1,inf,NaN,NA]) # retorna ind. de
true false false true false ans = [1 1 1 0 0 0] valores validos
false true false true false
> finite([-1,0,1,inf,NaN,NA])
false false false false true
6) Matemática Simbólica
6.1) Iniciar pacote de análise matemática simbólica

Formulário Octave. Prof. Dr. Catalunha - Versão atualizada em 21/02/2011 às 16:24 hs Página 1 de 3
> symbols; # codigo
case {2,3}
6.2) Declarar variável simbólica # codigo
> x=sym('x'); otherwise
> y=sym('y'); # codigo
6.3) Declarar modelo matemático. Pode ser lido direto com input. endswitch
> sf = 1+2*x; ou
> sg = x+y; switch (texto)
case 'bananeira'
6.4) Substituir valor de variável num modelo matemático, transformando-o para # codigo
decimal. case {'palmeira','figueira'}
> ey = subs(sf,x,1) # codigo
eY = 3.0 otherwise
> ez = subs(sg,{x,y},{2,2}) # codigo
ez = 4.0 endswitch

6.5) Operações matemáticas para construção de modelo matemático em ambiente


simbólico. Cos(x); Cosh(x); Exp(x); Log(x); Sin(x); Sinh(x); Tan(x); Tanh(x); 7.6) Estrutura de repetição for
aCos(x); Acosh(x); aSin(x); aSinh(x); aTan(x); aTanh(x); Sqrt(x); # for i=inicio:fim
for i=1:10
6.6) Calculo de derivada de uma função. # executa codigo i vezes
> sd1f = differentiate(sf,x,1) endfor
sd1f = 2.0
7.7) Estrutura de repetição while
6.7) Plotar modelo simbólico. As demais configurações seguem o exemplo do while condicao
gráfico de pontos. # executa codigo enquanto condicao for verdadeira
> splot(sf,x,0:10) endwhile
6.8) Transformando tipo simbólicos em decimais. 7.8) Estrutura de repetição do-until
> ey = to_double(subs(sf,x,1) do
ey = 3 # executa codigo enquanto condicao for verdadeira
until condicao
6.9) Avaliando modelo informado como texto
> tf='1+Log(x)' 7.9) Mensagem de alerta e erro. Encerra o programa neste ponto.
> ey = to_double(subs(eval(tf),x,2)) usage("texto da mensagem");
ey = 1.6931 error("texto da mensagem");

7) Estrutura básica para programação Outros códigos e observações:


Para programação no octave, usa-se toda a capacidade de processamento
disponível no octave. 7.10) Lê valor do teclado. Não importa o tipo. Se usar 's' ele não interpreta a
entrada.
7.1) Arquivo que contém a interface com o usuário. > dDecimal=input('Informe o valor: ');
~/ie_catalunha_tarefa /Interface.m Informe o valor: 1.1
> dDecimal=input('Informe a equacao: ','s');
# Cabeçalho com nome do autor e nome da tarefa
Informe a equacao: 1+2*x
# Detalhamento da função
function Interface() 7.11) Imprime texto e valor de variavel. %s=imprimir texto; %d imprimir inteiro;
# interface para coleta de parametros de entrada #c.pf imprimir decimal, em que c=numer de casas, p=precisão decimal.
# chamada a funcao da tarefa > printf("ver %s %4d %5.2f",ttexto,einteiro,eDecimal)
# interface para mostra de parametros de saida ver Textovre 1 1.23
endfunction
# subfuncao para leitura de parametros em arquivo 7.12) Transformando tipos texto para numero e vice versa.
# subfuncao para gravar parametros em arquivo > num2str(mmatriz,"#4.1f")
ans =
7.2) Arquivo que contém a solução pura do problema proposto na tarefa. Mude o 1.1 2.2
nome tarefa para o nome 3.3 4.4
~/ie_catalunha_tarefa/Tarefa.m > str2num('1.23');
ans = 1.2300
# Cabeçalho com nome do autor e nome da tarefa
# Detalhamento da função 7.13) Comparar dois textos
function[saida01,...,saidaN]=Tarefa(entrada01,...,entr > strcmp('a','a')
adaN) ans = 1
# codigo para obtencao da solucao da tarefa 7.14) Estrutura do arquivo padrão de entrada. Considere um parametro de entrada
endfunction edecimal=1.1". Um vetor vdecimal=[1.1,2.2]. Uma matriz mdecimal=[1.1,2.2;3.3,4.4]. Após
# subfuncao se for necessario vetor ou matriz escreva "fim". Use # para comentário deste arquivo.
/ie_catalunha_basico/entrada.txt
7.3) Estrutura básica de arquivos e pastas de um programa
ie_catalunha_tarefa #Autor: Prof. Dr. Catalunha
|-- Interface.m #Tarefa: Basico
|-- Tarefa.m Numero
1.1
|-- entrada.txt Vetor
|-- saida.txt 1.1
|-- Diario.txt 2.2
`-- Variaveis.txt fim
Obs.: o arquivo sublinhado será criado automaticamente pelo programa. matriz
1.1 2.2
Estrutura de controle e repetição 3.3 4.4
fim
7.4) Estrutura de controle if
if condicao01 7.15) Gravar dados em um arquivo de texto.
#caso verdadeiro01 function
elseif condicao02 Gravaarq(tarquivo,ttexto,einteiro,edecimal,vvetor,mmatr
#caso verdadeiro02 iz)
else aarq=fopen(tArquivo,"w");
#caso falso fprintf(aarq,"tTexto\n");
endif fprintf(aarq,"#s\n",tTexto);
fprintf(aarq,"einteiro\n");
fprintf(aarq,"#d\n",einteiro);
7.5) Estrutura de controle Switch. fprintf(aarq,"edecimal\n");
switch (inteiro) fprintf(aarq,"#5.2f\n",edecimal);
case 1 fprintf(aarq,"vVetor\n");

Formulário Octave. Prof. Dr. Catalunha - Versão atualizada em 21/02/2011 às 16:24 hs Página 2 de 3
fprintf(aarq,"#.4f\n",vVetor); > f=@(x) 1/x;
fprintf(aarq,"fim\n"); > quad(f,3.0,3.6)
fprintf(aarq,"mmatriz\n"); ans = 0.18232
for i=1:size(mmatriz,1)
fprintf(aarq,"#.4f ",mmatriz(i,:)); 9.2) Integral dupla
fprintf(aarq,"\n"); > g=@(x,y) x.**2+2*y;
endfor > dblquad(g,0,1,0,2)
fclose(aarq); ans = 4.6667
endfunction
10) Ajuste polinomial
7.16) Le dados em um arquivo de texto. 10.1) Use polyfit(vX,vY,n) em que n é o grau do polinómio. A saída é cn … c0.
function > vx=[0.0,1.0] ;
[ttexto,enumero,vvetor,mmatriz,mtTexto]=LeArqEntrada(ta > vy=[1.0,3.0] ;
rquivo) > polyfit(vx,vy,1)
aarq = fopen (tarquivo, "r"); ans =
while(!feof(aarq)) 2.0000 1.0000 # y= 2*x + 1 OU y= 1 + 2*x
linha=fgetl(aarq);
switch (linha) 11) Raiz de função
case "ttexto"
ttexto=fgetl(aarq); 11.1) Encontrar raiz de uma função
case "enumero" > f=@(x) x**3-3*x+1;
linha=fgetl(aarq); > fzero(f,2)
enumero=str2num(linha); ans = 1.5321
case "vvetor"
lin=1; 12) Mínimo de função
while(!strcmp(linha=fgetl(aarq),"fim"))
vTemp(lin++)=str2num(linha); 12.1) Encontrar o mínimo de uma função
end > f=@(x) x**3-3*x+1;
vvetor=vTemp; > [x,y]=fminsearch(f,0.5)
case "mmatriz" x = 1
lin=1; y = -1
while(!strcmp(linha=fgetl(aarq),"fim"))
mTemp(lin++,:)=str2num(linha);
end
mmatriz=mTemp; endswitch 13) EDO
case "mtTexto"
mtTemp='';
while(!strcmp(linha=fgetl(aarq),"fim"))
mtTemp=[mtTemp;linha] 14) Banco de dados
end
mtTexto=mtTemp;
endswitch
endwhile
fclose(aarq);
endfunction

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 função em linha. Plotando uma funcao. fplot(<funcao>,
[xmin,xmax,ymin,ymax]). As demais configurações seguem o exemplo do gráfico
de pontos.
fplot(f,[-2,2,0,4])

8.3) Grafico em linha 3D. As demais configurações seguem o exemplo do gráfico


de pontos. use também zlabel
> z=[0:pi/100:20*pi];
> x=cos(z);
> y=sin(z);
> plot3(x,y,z)

8.4) Grafico de superfície. As demais configurações seguem o exemplo do gráfico


de pontos. use também 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) Integração
9.1) Integral simples.

Formulário Octave. Prof. Dr. Catalunha - Versão atualizada em 21/02/2011 às 16:24 hs Página 3 de 3

Você também pode gostar