Ludwig Krippahl, 2007 Programação para as Ciências Experimentais 2006/7 Teórica 1
Ludwig Krippahl, Informação Página de PCE: Lista de discussão: Não há aula teórica no dia 2 Compensar?...
Ludwig Krippahl, Na aula de hoje... Objectivos, trabalhos e avaliação Aulas teóricas e práticas Octave e EdiPO
Ludwig Krippahl, Objectivos Conceitos básicos de programação em Octave/MATLAB. Métodos numéricos e de simulação. Processamento de dados com Octave e Excel.
Ludwig Krippahl, Avaliação Prática Obrigatória. 8 aulas. Mínimo 9.5 de nota ( , reprova). Conta 25% da nota final. Quem tem frequência não se inscreve! A menos que queira fazer melhoria...
Ludwig Krippahl, Avaliação Prática: Trabalhos Fichas das aulas: 10% da nota 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, Avaliação Prática: Trabalhos Teste de Octave: 20% da nota prática. Semana de 13-3 a Teste à capacidade de usar o Octave para resolver problemas que exijam sequências de alguns comandos.
Ludwig Krippahl, Avaliação Prática: Trabalhos Primeiro trabalho prático (Octave): 30% 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, Avaliação Prática: Trabalhos Segundo trabalho (Octave+Excel): 40% da nota prática. A anunciar, 2-3 aulas + trabalho em casa. Resolução de problemas com programação Octave e folha de cálculo (Excel). Inclui manipulação de ficheiros e partilha de dados entre as duas aplicações.
Ludwig Krippahl, Avaliação Teórica Exame individual escrito: Principalmente Octave. Um pouco de Excel. Vestígios de conceitos teóricos.
Ludwig Krippahl, Nota final Prática: 0.1*Fichas+0.2*Teste+0.3*TP1+0.4*TP2 Se Prática >= 9.5, Exame (e frequência) Nota final 0.25 * Prática * Exame Arredondada só no final, ao inteiro mais próximo. Sem excepções, incluindo 9.49
Ludwig Krippahl, Aulas Práticas Praticar e tirar dúvidas. Fazer parte dos trabalhos (outra parte em casa). Todos os trabalhos e fichas para enviar como attachment para Não enviem nada no corpo do (não o vamos ler...)
Ludwig Krippahl, Aulas Práticas Levar pendisk ou semelhante (com USB) Criar/copiar pasta para My Documents No final, copiar tudo para o pendisk. O que deixarem no PC do laboratório pode ser apagado...
Ludwig Krippahl, 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...
Ludwig Krippahl, Octave Versão gratuita e open-source do Matlab
Ludwig Krippahl, Octave
Ludwig Krippahl, Octave Alguns comandos: pwd (present working directory) ls (list), ou dir cd (change directory) Nota: na emulação do linux, o computador é chama-se cygdrive. Em vez de \ usar / E.g. Mudar para a raiz do disco d: cd /cygdrive/d
Ludwig Krippahl, Octave Comando, resultado, comando... octave:10> 2+3 ans = 5 octave:11> ans+5 ans = 10 octave:12>
Ludwig Krippahl, Octave ; se não queremos ver o resultado octave:12> 12*5; octave:13> 23+1; octave:14>
Ludwig Krippahl, 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, Octave Exemplos X=2atribui 2 à variável X A=x erro. A=XOK.
Ludwig Krippahl, EdiPO Editor de Programas Octave Usem o ficheiro de Rascunho. Guardem-no
Ludwig Krippahl, Exemplo Cálculo de concentração. NaCL: massa molar 58.4 g/mol Concentração de 2g em 125ml?
Ludwig Krippahl, 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, Gestão de Variáveis who lista as variáveis definidas clear esquece-se delas
Ludwig Krippahl, 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, 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 = octave:15>
Ludwig Krippahl, Composição de vectores e matrizes octave:15> m=[1,2;3,4] m = octave:16> m2=[5,6;7,8] m2 =
Ludwig Krippahl, Composição de vectores e matrizes octave:17> [m;m2] ans = octave:18> [m,m2] ans = octave:19>
Ludwig Krippahl, Composição de vectores e matrizes Atenção: tem que encaixar Matriz 2x2 com uma de 3x3 não dá
Ludwig Krippahl, Transposta: (plica) octave:19> v=[1,2,3] v = octave:20> v' ans = octave:21>
Ludwig Krippahl, Produto de matrizes m1 = m2 = m1*m2 =
Ludwig Krippahl, Produto de matrizes,. m1 = m2 = m1.*m2 =
Ludwig Krippahl, 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 Etc...
Ludwig Krippahl, 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, Séries octave:29> 1:0.5:3 ans = octave:30> 3:-1:0 ans = octave:31> 1:10 ans = octave:32> 1:9.5 ans =
Ludwig Krippahl, Para que é que isto serve? Cada casal de coelhos tem 4 filhos. Quantos coelhos ao fim de 10 gerações? Dez gerações, de 1 a 10 Em cada geração temos 2, 4, 8, 16 Ou seja 2 1, 2 2, 2 3, 2 4.
Ludwig Krippahl, Para que é que isto serve? octave:33> G=1:10 G = octave:34> Coelhos=2.^G Coelhos =
Ludwig Krippahl, Aceder parte da matriz M(linhas, colunas) Linhas e colunas pode ser vector, e pode ser definido por uma série.
Ludwig Krippahl, Aceder parte da matriz octave:35> m=[1,2;3,4] m = octave:36> m(2,2) ans = 4 octave:37> m([1,2],2) ans = 2 4
Ludwig Krippahl, Aceder parte da matriz octave:38> m(:,:) ans = octave:39> m(2:-1:1,1) ans = 3 1
Ludwig Krippahl, Aceder parte da matriz octave:40> m([2,1],1) ans = 3 1
Ludwig Krippahl, Aceder parte da matriz Elementos par da segunda linha M( 2, 2:2:30 ) 2, 4, 6, Duas em duas linhas, todas as colunas M(1:3:50, : )1, 3, 5...: quer dizer tudo
Ludwig Krippahl, Funções e operador p/ matrizes detdeterminante invinversa \M \ V : resolve sistema 2x+y=0(Eliminação de Gauss) x-y=2
Ludwig Krippahl, Funções e operador p/ matrizes \M \ V : resolve sistema 2x+y=0 x-y=2 octave:8> m=[2,1;1,-1] m = octave:9> r=[0;2] r = 0 2 octave:10> m\r ans =
Ludwig Krippahl, Funções para matrizes (ou não) eyeidentidade zeros ones randaleatório, entre 0 e 1.
Ludwig Krippahl, Funções para matrizes (ou não) Sem argumentos: um escalar: octave:51> eye ans = 1 octave:52> rand ans = octave:53> zeros ans = 0
Ludwig Krippahl, Funções para matrizes (ou não) Um argumento: matriz quadrada. octave:54> eye(2) ans = octave:55> rand(3) ans =
Ludwig Krippahl, Funções para matrizes (ou não) Dois argumentos: linhas, colunas octave:56> zeros(2,3) ans = octave:57> ones(1,10) ans = octave:58>
Ludwig Krippahl, 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 = octave:59> sin([1,2;3,4]) ans =
Ludwig Krippahl, Funções para matrizes (ou não) octave:60> sin(0:pi/10:pi) ans = Columns 1 through 8: Columns 9 through 11: octave:61>
Ludwig Krippahl, Strings (texto) Um string é uma sequência de caracteres, delimiatada por ou. octave:67> a="string" a = string octave:68> b="outra string" b = outra string octave:69> c=string error: `string' undefined near line 69 column 3 error: evaluating assignment expression near line 69, column 2
Ludwig Krippahl, Strings (texto) Excepção para a regra de tamanho quando combinamos vectores: octave:69> [a;b] ans = string outra string (linhas ajustadas acrescentando espaços)
Ludwig Krippahl, Strings (texto) Excepção para a regra de tamanho quando combinamos vectores: (linhas ajustadas acrescentando espaços) octave:73> [[a;b][-';-']] ans = string - outra string-
Ludwig Krippahl, Funções para strings (experimentem) findstr(s,t) : Encontra todas as posições de da menor na maior. split(s,t) : Divide uma string num vector (coluna) de strings separados por t strrep(s, x, y) : substitui todas as ocorrências de x por y na string s str2num(s) : converte um número representado numa string para um número tolower(s) / toupper(s) : converte uma string para minúsculas/maiúsculas strcmp(s1,s2) : compara as strings s1 com s2, se forem iguais retorna 1, se diferentes retorna 0
Ludwig Krippahl, Funções para strings (exemplos) octave:74> findstr('a','abcababba') ans = octave:75> findstr('abcababba','a') ans =
Ludwig Krippahl, Funções para strings (exemplos) octave:76> split('um;dois;três;quatro',';') ans = um dois três quatro octave:77>
Ludwig Krippahl, Gráficos 2D plot(x,y)(x e y vectores) hold onpara não tirar gráfico anterior clearplotapagar multiplot(cols,linhas), oneplot subwindow(coluna, linha) Atenção: coluna primeiro, linha depois!
Ludwig Krippahl, Gráficos 3D Nos gráficos 3D o domínio é um par de matrizes, e não um vector. Para criar as matrizes a partir dos vectores x e y: [mx,my]=meshdom(x,y); Usar ; senão aparece imenso lixo... Meshdom devolve 2 matrizes, por isso especificar [m1,m2].
Ludwig Krippahl, Gráficos 3D (exemplo) oneplot clearplot x=-5:5; y=-1:9; [X,Y]=meshdom(x,y); mesh(X,Y,10*X.^2-Y.^3);
Ludwig Krippahl, Para estudar isto Guia de estudo, secções 1 e 2 Manual Octave Capitulos 1 (geral), 5 (strings), 8.1 (indexação) Praticar...