540 likes | 633 Views
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.
E N D
Programação para as Ciências Experimentais2008/9 Teórica 1 Ludwig Krippahl, 2009
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 • Conceitos básicos de programação em Octave/MATLAB. • Métodos numéricos e de simulação. • Processamento de dados e ficheiros.
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.
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.
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.
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.
Avaliação Teórica • Exame individual escrito
Fraude • Reprovação imediata.
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.
Aulas Práticas • Praticar e tirar dúvidas. • Fazer parte dos trabalhos. • Todos os trabalhos e fichas para enviar como attachment para praticaspce@di.fct.unl.pt • Não enviem nada no corpo do email (não o vamos ler...) • Para dúvidas contactar o docente
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.
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
Octave • Versão gratuita e open-source do Matlab
Octave • Alguns comandos: • pwd (present working directory) • ls (list), ou dir • cd (change directory)
Octave • Exemplo octave.exe:1> pwd ans = C:\Program Files\Octave octave.exe:2> dir . Octave-Forge.url doc libexec share .. README.txt include license tools GNU Octave.url bin lib msys uninst.exe octave.exe:3> cd bin octave.exe:4> pwd ans = C:\Program Files\Octave\bin octave.exe:5>
Octave • Comando, resultado, comando... octave:10> 2+3 ans = 5 octave:11> ans+5 ans = 10 octave:12>
Octave • ; se não queremos ver o resultado octave:12> 12*5; octave:13> 23+1; octave:14>
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
Octave • Exemplos • X=2 atribui 2 à variável X • A=x erro. • A=X OK.
Exemplo • Cálculo de concentração. • NaCL: massa molar 58.4 g/mol • Concentração de 2g em 125ml?
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
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).
Gestão de Variáveis • who lista as variáveis definidas • clear “esquece-se” delas
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]
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>
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
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>
Composição de vectores e matrizes • Atenção: tem que “encaixar” • Matriz 2x2 com uma de 3x3 não dá
Transposta: ‘ (plica) octave:19> v=[1,2,3] v = 1 2 3 octave:20> v' ans = 1 2 3 octave:21>
Produto de matrizes m1 = 1 2 3 4 m2 = 2 2 2 2 m1*m2 = 6 6 14 14
Produto de matrizes, . m1 = 1 2 3 4 m2 = 2 2 2 2 m1.*m2 = 2 4 6 8
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
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’
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]
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)
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.
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
Aceder parte da matriz • M(linhas, colunas) • Linhas e colunas pode ser vector, e pode ser definido por uma série.
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
Aceder parte da matriz octave:38> m(:,:) ans = 1 2 3 4 octave:39> m(2:-1:1,1) ans = 3 1
Aceder parte da matriz octave:40> m([2,1],1) ans = 3 1
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
Funções e operador p/ matrizes • det determinante • inv inversa • \ M \ V : resolve sistema • 2x+y=0 (Eliminação de Gauss) • x-y=2
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 -1 octave:9> r=[0;2] r = 0 2 octave:10> m\r ans = 0.66667 -1.33333
Funções para matrizes (ou não) • eye identidade • zeros • ones • rand aleatório, entre 0 e 1.
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
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
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>