Mini curso Octave
-
Upload
daniel-pimentel-capoeira-luanda -
Category
Documents
-
view
47 -
download
1
description
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