Sistemas de cálculo numérico • Perspectiva histórica • Conceitos básicos - exemplos de utilização - comparação crítica • Webliografia http://www.mathworks.com Matlab Vs. 6 R12 Perspectiva histórica • Até meados da década de ‘70: Input por fita perfurada, por cartões ‘compilação’, processamento ‘processo’ lento • Meados da década de ‘70: Primeiros computadores teclado-…-vídeo Ideia de sistemas interactivos, conviviais Conceitos básicos (parte I)... Linguagens de Programação1) • Programa completo • Etapas de edição, compilação, execução… • Guarda-se o ‘processo’ (algoritmo) e, às vezes, os valores iniciais 1) Tradicionais Sistemas de cálculo Numérico • Instrução a instrução • Tudo misturado, aos poucos… • Guardam-se os valores ‘no momento’ (Basic, Fortran, C, Cobol, etc...) Funcionalidades básicas • Uma janela de comandos (instruções executadas assim que são escritas) • Variáveis-base são ‘arrays’ (vectores e matrizes) • As variáveis podem ser guardadas num ficheiro e recuperadas posteriormente • Funções pré-definidas • Funcionalidades gráficas Matlab - alguns comandos • • • • • • • • • • • help clc quit / exit clear/clc (cuidado!) who / whos pwd dir / ls cd c:\pimenta\…. ! (shell) save ‘xpto’ (*.mat) load ‘xpto’ Exemplos a=4 a=4; A=[3 4 5] B=[4 5 6 ]’ C = A+B C=A*B Vectores, tempo decorrido • Atenção ao cálculo vectorial: a=[3 4 5] b=[1 0 2] c=a*b’ c=a.*b • Módulo: a=8, b=3 mod(a,b) • Operações com datas O que é uma “data” ? Vector: [ano, mês, dia, hora, minuto, segundo] help -> help timefun d1=datevec('4/25/1974') d2=datevec('4/16/2002') segs = etime(d2,d1) dias = ??? Anos ??? calendar (2002, 4) Nºs complexos v1= complex(2, 3) v2= complex(-1, 2) p=v1*v2 s=v1+v2 theta=angle(v1) Forma alternativa: p=v1*v2, s=v1+v2 r=sqrt(p) Conversão de bases • BIN2DEC(), DEC2HEX(), DEC2BASE() • a=1220 • b5=dec2base(a, 5) • b2=dec2bin(565) • a=1220 • b26=dec2base(a, 26) • a=1220 • b26=dec2base(a, 32) Variáveis aleatórias • Help rand: rand -> um valor ]0, 1[ • E o "int" ? floor() (help floor) rand(m,n) gera uma matriz mn Chave de Totobola ? rand(1,13) rand(1,13)*3 floor(rand(1,13)*3) … agora com arrays :-) V=[1:20] v=[0:2:20] t=[-50:10:20]’ r=dec2base([1:35],36)' Sqrt(t) A=[9 3 5 8 12] B=[7 5 9 3 2 9] mod(A,B) Operações básicas com vectores v=floor(rand(1,50)*100) plot(v) sum(v) min(v) max(v) mean(v) v = floor(rand(1,1000)*100) r=sort(v) plot(r) Quanto tempo demora a ordenação ? Operações básicas com matrizes A=[3 4 5; -1 2 0; 3 4 7] B=[-1 2 1; -1 2 1; 1 5 -1] S =A+ B det(B) P = A*B Ai = inv(A) Representação gráfica de funções Y vs. X x=[-10:.1:10] y=x.^2-4*x+12 plot(x,y, ’go') y2=x.^1.4+3*x-3; plot(x,y, ‘r-’, x, y2, ‘b.’); Z vs X, Y x=[-3:.1:3] y=[-3:.1:3] [X,Y]=meshgrid(x,y); Z=X.^2-Y.^2; surf(X,Y,Z); Z=-cos(1./(X.^2+Y.^2+2)); surf(X,Y,Z); Comandos a explorar... • ver • demo • bench Conceitos básicos (parte II) • Conceito de bibliotecas (help) - para fins específicos - para dinâmica e controlo de processos - para cálculo financeiro - para estatística e ajuste de funções - ... http://dmoz.org/Science/Math/Software/MATLAB/ Newsgroups: com.soft-sys.matlab Ambiente de trabalho Janela de comandos Launch pad workspace Histórico de comandos directoria actual Linguagem de Programação • Os comandos podem ser armazenados num ficheiro (extensão *.m), constituindo ‘programas’ interpretados (batch files, scripts, macros) • Sim, podemos escrever funções ! Scripting, m-files Por onde se começa ? • • • • • Comentários ? Input / output ? Tipos de variáveis ? (Processamento) Pausa ? Editor ‘inteligente’ user-friendly, context sensitive Programação em Matlab • • • • Input Output pausa execução condicional • controlo de ciclos • paragem • • • • • • • • Input ‘Texto ’ sprintf(), disp() pause if ()… else … end while ()…end switch…case…end for … end break; <Ctrl><C> Exemplos • • • • • • • • • • ddec - dias decorridos entre um dia e hoje totobola - geração de uma chave de totobola totoloto - geração de uma chave de totoloto bolhasort - comparação de métodos de ordenação mat1 - exemplos de operação com matrizes Factorial - Matlab built-in cnpp - Combinações de n p a p Fib1 - Fibonacci, caso simples Fibo - Fibonacci, função recursiva grafs - Gráficos 2D e 3D Bom trabalho ! Texto com cor diferente, conforme a sua função