View
48
Download
1
Embed Size (px)
DESCRIPTION
Octave
Citation preview
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