Programação para as
Ciências Experimentais
2008/9
Teórica 1
Ludwig Krippahl, 2009
Informação

Página de PCE:

Lista de discussão:
• http://ssdi.di.fct.unl.pt/pce/
• https://mail.di.fct.unl.pt/mailman/listinfo/di-pce
Ludwig Krippahl, 2009
2
Na aula de hoje...



Objectivos, trabalhos e avaliação
Aulas teóricas e práticas
Octave
Ludwig Krippahl, 2009
3
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
4
Avaliação Prática

Obrigatória.

Quem tem frequência não se inscreve
• Máximo 4 faltas.
• Mínimo 9.5 de nota (9.49999 reprova).
• Conta 25% da nota final.
• Excepto se quiser prescindir da nota do ano
•
passado.
Só conta nota de 06/07 e 07/08.
Ludwig Krippahl, 2009
5
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
6
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
7
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
8
Avaliação Teórica

Exame individual escrito
Ludwig Krippahl, 2009
9
Fraude

Reprovação imediata.
Ludwig Krippahl, 2009
10
Nota final

Prática:

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.



• (Fichas+2*TP1+3*TP2)/6
Ludwig Krippahl, 2009
11
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
12
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
13
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
14
Octave

Versão gratuita e open-source do Matlab
Ludwig Krippahl, 2009
15
Octave

Alguns comandos:
• pwd (present working directory)
• ls (list), ou dir
• cd (change directory)
Ludwig Krippahl, 2009
16
Octave

Exemplo
octave.exe:1> pwd
ans = C:\Program Files\Octave
octave.exe:2> dir
.
Octave-Forge.url doc
..
README.txt
include
GNU Octave.url bin
lib
octave.exe:3> cd bin
octave.exe:4> pwd
ans = C:\Program Files\Octave\bin
octave.exe:5>
Ludwig Krippahl, 2009
libexec
license
msys
share
tools
uninst.exe
17
Octave

Comando, resultado, comando...
octave:10> 2+3
ans = 5
octave:11> ans+5
ans = 10
octave:12>
Ludwig Krippahl, 2009
18
Octave

; se não queremos ver o resultado
octave:12> 12*5;
octave:13> 23+1;
octave:14>
Ludwig Krippahl, 2009
19
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
20
Octave

Exemplos
• X=2
• A=x
• A=X
Ludwig Krippahl, 2009
atribui 2 à variável X
erro.
OK.
21
Exemplo

Cálculo de concentração.
• NaCL: massa molar 58.4 g/mol
• Concentração de 2g em 125ml?
Ludwig Krippahl, 2009
22
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
23
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
24
Gestão de Variáveis


who lista as variáveis definidas
clear “esquece-se” delas
Ludwig Krippahl, 2009
25
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
26
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
27
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
28
Composição de vectores e
matrizes
octave:17> [m;m2]
ans =
1 2
3 4
5 6
7 8
octave:18> [m,m2]
ans =
1 2 5 6
3 4 7 8
octave:19>
Ludwig Krippahl, 2009
29
Composição de vectores e
matrizes
• Atenção: tem que “encaixar”
• Matriz 2x2 com uma de 3x3 não dá
Ludwig Krippahl, 2009
30
Transposta: ‘ (plica)
octave:19> v=[1,2,3]
v=
1 2 3
octave:20> v'
ans =
1
2
3
octave:21>
Ludwig Krippahl, 2009
31
Produto de matrizes
m1 =
1 2
3 4
m2 =
2 2
2 2
m1*m2 = 6 6
14 14
Ludwig Krippahl, 2009
32
Produto de matrizes, .
m1 =
1 2
3 4
m2 =
2 2
2 2
m1.*m2 = 2 4
6 8
Ludwig Krippahl, 2009
33
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
34
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
35
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
36
Séries
octave:29> 1:0.5:3
ans =
1.0000 1.5000 2.0000 2.5000 3.0000
octave:30> 3:-1:0
ans =
3 2 1 0
octave:31> 1:10
ans =
1 2 3 4 5 6 7 8 9 10
octave:32> 1:9.5
ans =
1 2 3 4 5 6 7 8 9
(termina no último que não ultrapassa)
Ludwig Krippahl, 2009
37
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
38
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
39
Aceder parte da matriz


M(linhas, colunas)
Linhas e colunas pode ser vector, e
pode ser definido por uma série.
Ludwig Krippahl, 2009
40
Aceder parte da matriz
octave:35> m=[1,2;3,4]
m=
1 2
3 4
octave:36> m(2,2)
ans = 4
octave:37> m([1,2],2)
ans =
2
4
Ludwig Krippahl, 2009
41
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
42
Aceder parte da matriz
octave:40> m([2,1],1)
ans =
3
1
Ludwig Krippahl, 2009
43
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, : )
Ludwig Krippahl, 2009
1, 3, 5...
: quer dizer tudo
44
Funções e operador p/ matrizes


det
inv
determinante
inversa




\
M \ V : resolve sistema
2x+y=0
(Eliminação de Gauss)
x-y=2
Ludwig Krippahl, 2009
45
Funções e operador p/ matrizes
\
2x+y=0
x-y=2

Ludwig Krippahl, 2009
M \ V : resolve sistema
octave:8> m=[2,1;1,-1]
m=
2 1
1 -1
octave:9> r=[0;2]
r=
0
2
octave:10> m\r
ans =
0.66667
-1.33333
46
Funções para matrizes (ou não)




eye
zeros
ones
rand
Ludwig Krippahl, 2009
identidade
aleatório, entre 0 e 1.
47
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
48
Funções para matrizes (ou não)
Um argumento: matriz quadrada.
octave:54> eye(2)
ans =
1 0
0 1
octave: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
49
Funções para matrizes (ou não)
Dois argumentos: linhas, colunas
octave:56> zeros(2,3)
ans =
0 0 0
0 0 0
octave:57> ones(1,10)
ans =
1 1 1 1 1 1 1 1 1 1
octave:58>

Ludwig Krippahl, 2009
50
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
51
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
52
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
53
Dúvidas
Ludwig Krippahl, 2009
54
Download

Slides