programação para as ciências experimentais 2008/9

54
Ludwig Krippahl, 2009 Programação para as Ciências Experimentais 2008/9 Teórica 1

Upload: sanne

Post on 04-Jan-2016

28 views

Category:

Documents


0 download

DESCRIPTION

Programação para as Ciências Experimentais 2008/9. Teórica 1. 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. Na aula de hoje. Objectivos, trabalhos e avaliação Aulas teóricas e práticas Octave. Objectivos. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009

Programação para as Ciências Experimentais

2008/9

Teórica 1

Page 2: Programação para as Ciências Experimentais 2008/9

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

Page 3: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 3

Na aula de hoje...

Objectivos, trabalhos e avaliação Aulas teóricas e práticas Octave

Page 4: Programação para as Ciências Experimentais 2008/9

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.

Page 5: Programação para as Ciências Experimentais 2008/9

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.

Page 6: Programação para as Ciências Experimentais 2008/9

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.

Page 7: Programação para as Ciências Experimentais 2008/9

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.

Page 8: Programação para as Ciências Experimentais 2008/9

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.

Page 9: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 9

Avaliação Teórica

Exame individual escrito

Page 10: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 10

Fraude

Reprovação imediata.

Page 11: Programação para as Ciências Experimentais 2008/9

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.

Page 12: Programação para as Ciências Experimentais 2008/9

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

Page 13: Programação para as Ciências Experimentais 2008/9

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.

Page 14: Programação para as Ciências Experimentais 2008/9

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

Page 15: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 15

Octave

Versão gratuita e open-source do Matlab

Page 16: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 16

Octave

Alguns comandos:• pwd (present working directory)

• ls (list), ou dir

• cd (change directory)

Page 17: Programação para as Ciências Experimentais 2008/9

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>

Page 18: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 18

Octave

Comando, resultado, comando...octave:10> 2+3

ans = 5

octave:11> ans+5

ans = 10

octave:12>

Page 19: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 19

Octave

; se não queremos ver o resultadooctave:12> 12*5;

octave:13> 23+1;

octave:14>

Page 20: Programação para as Ciências Experimentais 2008/9

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

Page 21: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 21

Octave

Exemplos• X=2 atribui 2 à variável X

• A=x erro.

• A=X OK.

Page 22: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 22

Exemplo

Cálculo de concentração.• NaCL: massa molar 58.4 g/mol

• Concentração de 2g em 125ml?

Page 23: Programação para as Ciências Experimentais 2008/9

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

Page 24: Programação para as Ciências Experimentais 2008/9

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).

Page 25: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 25

Gestão de Variáveis

who lista as variáveis definidas clear “esquece-se” delas

Page 26: Programação para as Ciências Experimentais 2008/9

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]

Page 27: Programação para as Ciências Experimentais 2008/9

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>

Page 28: Programação para as Ciências Experimentais 2008/9

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

Page 29: Programação para as Ciências Experimentais 2008/9

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>

Page 30: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 30

Composição de vectores e matrizes

• Atenção: tem que “encaixar”

• Matriz 2x2 com uma de 3x3 não dá

Page 31: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 31

Transposta: ‘ (plica)

octave:19> v=[1,2,3]v = 1 2 3octave:20> v'ans = 1 2 3octave:21>

Page 32: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 32

Produto de matrizes

m1 = 1 2 3 4

m2 = 2 2 2 2

m1*m2 = 6 614 14

Page 33: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 33

Produto de matrizes, .

m1 = 1 2 3 4

m2 = 2 2 2 2

m1.*m2 = 2 46 8

Page 34: Programação para as Ciências Experimentais 2008/9

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

Page 35: Programação para as Ciências Experimentais 2008/9

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’

Page 36: Programação para as Ciências Experimentais 2008/9

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]

Page 37: Programação para as Ciências Experimentais 2008/9

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)

Page 38: Programação para as Ciências Experimentais 2008/9

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.

Page 39: Programação para as Ciências Experimentais 2008/9

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

Page 40: Programação para as Ciências Experimentais 2008/9

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.

Page 41: Programação para as Ciências Experimentais 2008/9

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

Page 42: Programação para as Ciências Experimentais 2008/9

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

Page 43: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 43

Aceder parte da matriz

octave:40> m([2,1],1)

ans =

3

1

Page 44: Programação para as Ciências Experimentais 2008/9

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

Page 45: Programação para as Ciências Experimentais 2008/9

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

Page 46: Programação para as Ciências Experimentais 2008/9

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

Page 47: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 47

Funções para matrizes (ou não)

eye identidade zeros ones rand aleatório, entre 0 e 1.

Page 48: Programação para as Ciências Experimentais 2008/9

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

Page 49: Programação para as Ciências Experimentais 2008/9

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

Page 50: Programação para as Ciências Experimentais 2008/9

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>

Page 51: Programação para as Ciências Experimentais 2008/9

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

Page 52: Programação para as Ciências Experimentais 2008/9

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>

Page 53: Programação para as Ciências Experimentais 2008/9

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)

Page 54: Programação para as Ciências Experimentais 2008/9

Ludwig Krippahl, 2009 54

Dúvidas