Ludwig Krippahl, 2009
Programação para as Ciências Experimentais
2008/9
Teórica 1
Ludwig Krippahl, 2009 2
Informação
Página de PCE:• http://ssdi.di.fct.unl.pt/pce/
Lista de discussão:• https://mail.di.fct.unl.pt/mailman/listinfo/di-pce
Ludwig Krippahl, 2009 3
Na aula de hoje...
Objectivos, trabalhos e avaliação Aulas teóricas e práticas Octave
Ludwig Krippahl, 2009 4
Objectivos
Conceitos básicos de programação em Octave/MATLAB.
Métodos numéricos e de simulação. Processamento de dados e ficheiros.
Ludwig Krippahl, 2009 5
Avaliação Prática
Obrigatória.• Máximo 4 faltas.
• Mínimo 9.5 de nota (9.49999 reprova).
• Conta 25% da nota final.
Quem tem frequência não se inscreve• Excepto se quiser prescindir da nota do ano
passado.
• Só conta nota de 06/07 e 07/08.
Ludwig Krippahl, 2009 6
Avaliação Prática: Trabalhos
Fichas das aulas:• Conta 1/6 da prática.
• Uma por aula de exercícios.
• Avaliadas em conjunto no final do semestre, como parte da avaliação do desempenho e participação de cada aluno.
Ludwig Krippahl, 2009 7
Avaliação Prática: Trabalhos
Primeiro trabalho prático (Octave):• 1/3 da nota prática.
• Data a anunciar, 2 aulas + trabalho em casa.
• Resolução de problemas numéricos (simulação e/ou integração) com programação em Octave.
Ludwig Krippahl, 2009 8
Avaliação Prática: Trabalhos
Segundo trabalho (Octave+Excel):• 1/2 da nota prática.
• A anunciar, 2-3 aulas + trabalho em casa.
• Resolução de problemas com programação Octave, leitura e processamento de ficheiros provenientes de folhas de cálculo.
Ludwig Krippahl, 2009 9
Avaliação Teórica
Exame individual escrito
Ludwig Krippahl, 2009 10
Fraude
Reprovação imediata.
Ludwig Krippahl, 2009 11
Nota final
Prática:• (Fichas+2*TP1+3*TP2)/6
Se Prática >= 9.5, Exame (e frequência) Nota final 0.25 * Prática + 0.75 * Exame Arredondada ao inteiro mais próximo. Sem excepções.
Ludwig Krippahl, 2009 12
Aulas Práticas
Praticar e tirar dúvidas. Fazer parte dos trabalhos. Todos os trabalhos e fichas para enviar
como attachment para [email protected]
Não enviem nada no corpo do email (não o vamos ler...)
Para dúvidas contactar o docente
Ludwig Krippahl, 2009 13
Aulas Práticas
Login: alunopce Password: octave Um dos elementos do grupo deve ter
uma conta de email com webmail. Trabalhar no My Documents; no fim
copiar tudo para o pendisk. O que deixarem no PC do laboratório é
apagado assim que fizerem log off.
Ludwig Krippahl, 2009 14
Aulas Teóricas
Não é para decorar. Alguma flexibilidade:
• Rever matéria
• Abordar um problema específico
• Dúvidas...
Mas com uma aula de antecedência... 60 minutos + 20 para dúvidas
Ludwig Krippahl, 2009 15
Octave
Versão gratuita e open-source do Matlab
Ludwig Krippahl, 2009 16
Octave
Alguns comandos:• pwd (present working directory)
• ls (list), ou dir
• cd (change directory)
Ludwig Krippahl, 2009 17
Octave Exemplo
octave.exe:1> pwdans = C:\Program Files\Octaveoctave.exe:2> dir. Octave-Forge.url doc libexec share.. README.txt include license toolsGNU Octave.url bin lib msys uninst.exeoctave.exe:3> cd binoctave.exe:4> pwdans = C:\Program Files\Octave\binoctave.exe:5>
Ludwig Krippahl, 2009 18
Octave
Comando, resultado, comando...octave:10> 2+3
ans = 5
octave:11> ans+5
ans = 10
octave:12>
Ludwig Krippahl, 2009 19
Octave
; se não queremos ver o resultadooctave:12> 12*5;
octave:13> 23+1;
octave:14>
Ludwig Krippahl, 2009 20
Octave
Operações básicas:• + - * / ^
Variáveis:• Nome começa com letra, pode conter letras,
números, ou underscore ( _ )
• Var1, var1, x, xpto, XPTO, uma_variavel
• = atribui um valor à variável: x = 0
• Atenção à maiúsculas e minúsculas...
• ans é uma variável
Ludwig Krippahl, 2009 21
Octave
Exemplos• X=2 atribui 2 à variável X
• A=x erro.
• A=X OK.
Ludwig Krippahl, 2009 22
Exemplo
Cálculo de concentração.• NaCL: massa molar 58.4 g/mol
• Concentração de 2g em 125ml?
Ludwig Krippahl, 2009 23
Exemplo
Cálculo de concentração.• NaCL: massa molar 58.4 g/mol
• Concentração de 2g em 125ml?
mmNaCl=58.4
v=0.125
q=2/mmNaCl
c=q/v
Ludwig Krippahl, 2009 24
Exemplo
Sequências de comandos:• Usem o editor. Corre com o comando edit no
octave.
• Escrevam no editor. Depois seleccionam, copy (ctrl+c) e paste no Octave (shift+ins).
Ludwig Krippahl, 2009 25
Gestão de Variáveis
who lista as variáveis definidas clear “esquece-se” delas
Ludwig Krippahl, 2009 26
Vectores e matrizes
• Números entre [ ]
• Espaço ou virgula representa coluna nova.
• Ponto e vírgula representa linha nova.
• Vector coluna:• [1;2;3]
• Vector linha:• [1 2 3] ou [1 2 3]
Ludwig Krippahl, 2009 27
Vectores e matrizes
• Matriz: [1,2,3;4,5,6;7,8,9]
octave:14> m=[1,2,3;4,5,6;7,8,9]
m =
1 2 3
4 5 6
7 8 9
octave:15>
Ludwig Krippahl, 2009 28
Composição de vectores e matrizes
octave:15> m=[1,2;3,4]
m =
1 2
3 4
octave:16> m2=[5,6;7,8]
m2 =
5 6
7 8
Ludwig Krippahl, 2009 29
Composição de vectores e matrizes
octave:17> [m;m2]ans = 1 2 3 4 5 6 7 8octave:18> [m,m2]ans = 1 2 5 6 3 4 7 8octave:19>
Ludwig Krippahl, 2009 30
Composição de vectores e matrizes
• Atenção: tem que “encaixar”
• Matriz 2x2 com uma de 3x3 não dá
Ludwig Krippahl, 2009 31
Transposta: ‘ (plica)
octave:19> v=[1,2,3]v = 1 2 3octave:20> v'ans = 1 2 3octave:21>
Ludwig Krippahl, 2009 32
Produto de matrizes
m1 = 1 2 3 4
m2 = 2 2 2 2
m1*m2 = 6 614 14
Ludwig Krippahl, 2009 33
Produto de matrizes, .
m1 = 1 2 3 4
m2 = 2 2 2 2
m1.*m2 = 2 46 8
Ludwig Krippahl, 2009 34
Operação elemento a elemento
O ponto antes do operador indica que a operação é elemento a elemento.• M1.*M2: multiplicar cada elemento de M1
pelo correspondente em M2
• M1.^M2: elevar cada elemento de M1 pelo correspondente em M2
• Os dois operadores têm que ter as mesmas dimensões
Ludwig Krippahl, 2009 35
Operação elemento a elemento
Exemplos
l=[1,2,3,4,5]
c=[1;2;3;4;5]
l*c
c*l
l.*c
l.*c’
Ludwig Krippahl, 2009 36
Séries
No Octave podemos criar um vector linha com uma série indicando:
Inicio: [passo:] fim O passo é opcional.
• E.g. 1:2:5
[1,3,5]
Ludwig Krippahl, 2009 37
Sériesoctave:29> 1:0.5:3ans = 1.0000 1.5000 2.0000 2.5000 3.0000octave:30> 3:-1:0ans = 3 2 1 0octave:31> 1:10ans = 1 2 3 4 5 6 7 8 9 10octave:32> 1:9.5ans = 1 2 3 4 5 6 7 8 9(termina no último que não ultrapassa)
Ludwig Krippahl, 2009 38
Para que é que isto serve?
Cada casal de coelhos tem 4 filhos. Quantos coelhos em 10 gerações?
Dez gerações, de 1 a 10 Em cada geração temos 2, 4, 8, 16 Ou seja 21, 22, 23, 24.
Ludwig Krippahl, 2009 39
Para que é que isto serve?
octave:33> G=1:10
G =
1 2 3 4 5 6 7 8 9 10
octave:34> Coelhos=2.^G
Coelhos =
2 4 8 16 32 64 128 256 512 1024
Ludwig Krippahl, 2009 40
Aceder parte da matriz
M(linhas, colunas) Linhas e colunas pode ser vector, e
pode ser definido por uma série.
Ludwig Krippahl, 2009 41
Aceder parte da matriz
octave:35> m=[1,2;3,4]m = 1 2 3 4octave:36> m(2,2)ans = 4octave:37> m([1,2],2)ans = 2 4
Ludwig Krippahl, 2009 42
Aceder parte da matriz
octave:38> m(:,:)
ans =
1 2
3 4
octave:39> m(2:-1:1,1)
ans =
3
1
Ludwig Krippahl, 2009 43
Aceder parte da matriz
octave:40> m([2,1],1)
ans =
3
1
Ludwig Krippahl, 2009 44
Aceder parte da matriz
Elementos par da segunda linha• M( 2 , 2:2:30 ) 2, 4, 6, 8....
Duas em duas linhas, todas as colunas• M(1:3:50, : ) 1, 3, 5... : quer dizer tudo
Ludwig Krippahl, 2009 45
Funções e operador p/ matrizes
det determinante inv inversa
\ M \ V : resolve sistema 2x+y=0 (Eliminação de Gauss) x-y=2
Ludwig Krippahl, 2009 46
Funções e operador p/ matrizes
\ M \ V : resolve sistema
2x+y=0
x-y=2
octave:8> m=[2,1;1,-1]m = 2 1 1 -1octave:9> r=[0;2]r = 0 2octave:10> m\rans = 0.66667 -1.33333
Ludwig Krippahl, 2009 47
Funções para matrizes (ou não)
eye identidade zeros ones rand aleatório, entre 0 e 1.
Ludwig Krippahl, 2009 48
Funções para matrizes (ou não)
Sem argumentos: um escalar:
octave:51> eye
ans = 1
octave:52> rand
ans = 0.22768
octave:53> zeros
ans = 0
Ludwig Krippahl, 2009 49
Funções para matrizes (ou não) Um argumento: matriz quadrada.octave:54> eye(2)ans = 1 0 0 1octave:55> rand(3)ans = 0.854082 0.101465 0.290800 0.510179 0.018994 0.088951 0.716649 0.855890 0.813545
Ludwig Krippahl, 2009 50
Funções para matrizes (ou não) Dois argumentos: linhas, colunasoctave:56> zeros(2,3)ans = 0 0 0 0 0 0octave:57> ones(1,10)ans = 1 1 1 1 1 1 1 1 1 1octave:58>
Ludwig Krippahl, 2009 51
Funções para matrizes (ou não)
Regra geral: funções que o Octave fornece servem para escalares e matrizes.
octave:58> sin(2)
ans = 0.90930
octave:59> sin([1,2;3,4])
ans =
0.84147 0.90930
0.14112 -0.75680
Ludwig Krippahl, 2009 52
Funções para matrizes (ou não)
octave:60> sin(0:pi/10:pi) ans = Columns 1 through 8: 0.00000 0.30902 0.58779 0.80902 0.95106
1.00000 0.95106 0.80902 Columns 9 through 11: 0.58779 0.30902 0.00000 octave:61>
Ludwig Krippahl, 2009 53
Resumo
Comandos básicos do sistema Operadores * / + - \ . Atribuição de valor a variável = Matrizes e vectores [ , , ; , , ] Séries inicio:passo:fim Chamar função nome(argumentos) Aceder a matriz nome(linha,coluna)
Ludwig Krippahl, 2009 54
Dúvidas