880 likes | 1.06k Views
Universidade Federal do Rio Grande do Norte Departamento de Informática e matemática Aplicada. CÁLCULO NUMÉRICO. Prof.: Dario José Aloise Auxiliares: Werner K. S. Soares Fábio Fontes. Natal / 2005. Unidade I - Introdução ao Scilab. Werner K. S. Soares
E N D
Universidade Federal do Rio Grande do Norte Departamento de Informática e matemática Aplicada CÁLCULO NUMÉRICO Prof.: Dario José Aloise Auxiliares:Werner K. S. Soares Fábio Fontes Natal / 2005
Unidade I - Introdução ao Scilab Werner K. S. Soares Engenheiro Eletricista
Introdução • O objetivo desta apresentação é proporcionar um primeiro contato com a ferramenta matemática Scilab utilizando-o como uma sofisticada calculadora. • Scilab é um pacote de computação numérica científica com ambiente amigável. Este software é desenvolvido e mantido pelo INRIA, na França.
Tópicos de discussão • Vantagens • Características • Objetos do Scilab • Operações • Polinômios • Triangularização de Matrizes • Graficos Bi-dimensionais • Fontes (Apostila e Software)
Vantagens • A última versão do software está sempre disponível, geralmente via internet; • O software pode ser legalmente utilizado, copiado, distribuído, modificado; • Os resultados obtidos podem ser divulgados sem nenhuma restrição; • Os programas desenvolvidos podem ser transferidos para outras pessoas sem imposições de qualquer natureza;
Vantagens • O acesso ao código fonte, evitando surpresas desagradáveis; • O acesso a informação de alta qualidade; • A certeza de estar participando de uma comunidade cujo valor principal é a irrestrita difusão do conhecimento.
Características • Algumas características: • - Estruturas de dados elaboradas (matrizes polinomiais, racionais e alfanuméricas, listas, sistemas lineares com múltiplas variáveis...); • - Linguagem de programação e interpretadores sofisticados com sintaxe próxima à do Matlab;
Características • - Centenas de funções matemáticas já incorporadas (novas rotinas podem ser facilmente adicionadas); • - Completa biblioteca gráfica (2d, 3d, animação); • - Estrutura Aberta (interface fácil com Fortran e C, através de links dinâmicos);
Características • - Muitas bibliotecas incluídas: • Álgebra linear (incluindo matrizes esparsas, forma de Kronecker, LQ solver); • Controle (Clássico, LQG, "H-infinito"); • Pacote para otimização LMI (Linear Matrix Inequalities); • Processamento de sinais; • Simulação (várias EDO's, dassi); • Otimização (irrestritas: diferenciável e não-diferenciável); • LQ solver; • Scicos, um ambiente interativo para modelagem e simulação de sistemas híbridos; • Metanet (Análise e otimização de redes); • Interface com o Maple.
Objetos do Scilab • Escalares: • -->a=1 //real constant • a = • 1. • -->1==1 //boolean • ans = • T
Objetos do Scilab • -->'string' //character string • ans = • string • -->z=poly(0,'z') // polynomial with variable 'z' and with one root at zero • z = • z
Objetos do Scilab • -->p=1+3*z+4.5*z^2 //polynomial • p = • 2 • 1 + 3z + 4.5z
Objetos do Scilab • -->r=z/p //rational • r = • z • ------------- • 2 • 1 + 3z + 4.5z
Objetos do Scilab • Matrizes: -->A=[a+1 2 3 --> 0 0 atan(1) --> 5 9 -1] //3 x 3 constant matrix A = ! 2. 2. 3. ! ! 0. 0. 0.7853982 ! ! 5. 9. - 1. !
Objetos do Scilab -->b=[%t,%f] //1 x 2 boolean matrix b = ! T F !
Objetos do Scilab -->Mc=['this','is'; --> 'a' ,'matrix'] //2 x 2 matrix of strings Mc = !this is ! !a matrix !
Objetos do Scilab -->Mp=[p,1-z; --> 1,z*p] //2 x 2 polynomial matrix Mp = ! 2 ! ! 1 + 3z + 4.5z 1 - z ! ! ! ! 2 3 ! ! 1 z + 3z + 4.5z !
Operações • --> A = 5 + 2 * %i • A = • 5. + 2.i • -->B = sqrt (-2); // “;” suprime a apresentação do resultado • -->B • B = • 1.4142136i
Operações • --> m = 1; n = 2; a = 4.5; //vários comandos em uma mesma linha • --> A = m^2 + ... //um comando em várias linhas • --> n + 2 + ... • --> a + 1 • A = • 10.5
Operações • --> J = 1:3 // vetor • J = • ! 1. 2. 3. !
Operações -->v=1:5;W=v'*v //constant matrix multiplication W = ! 1. 2. 3. 4. 5. ! ! 2. 4. 6. 8. 10. ! ! 3. 6. 9. 12. 15. ! ! 4. 8. 12. 16. 20. ! ! 5. 10. 15. 20. 25. !
Operações -->W(1,:) //extracting first row ans = ! 1. 2. 3. 4. 5. ! -->W(:,$) //extracting last column ans = ! 5. ! ! 10. ! ! 15. ! ! 20. ! ! 25. !
Polinômios • Definição pelas raízes: • -->p = poly([1 2], ‘s’) • p = • 2 • 2 – 3s + s
Polinômios • Raízes de um polinômio: • --> roots(p) • ans = • ! 1. ! • ! 2 . !
Polinômios • Definição pelos coeficientes: • q = poly([1 2], ‘s’, ‘coeff’) • q = • 1 + 2s • Raízes: • --> roots(q) • ans = • -0.5
Polinômios • Podem ser multiplicados (*), divididos(/), somados(+) e subtraídos (-).
Polinômios • Matrizes com polinômios: • --> M = [p, p-1; p+1; 2]; • --> A = det(M); //determinante
Triangularização de Matrizes • Matriz Simbólica: • A = [‘x’ ‘y’; ‘z’ ‘w+v’] // variáveis sem valor definido • At = trianfml(A) // Matriz triangular
Triangularização de Matrizes • Valor das Matrizes Simbólicas: • x=1; y=2; z=3; w=4; v=5; //atribuindo valores às variáveis • evstr(A) • evstr(At)
Gráficos Bi-dimensionais • -->// Definindo abcissas e ordenadas • --> t = (0: 0.05 : 1); • --> y = sin (2 * %pi * t); • --> // Comando para traçar o gráfico • --> plot ( t, y); • --> xtitle (“nome do gráfico”);
Programação em Scilab • Apesar de simples, o Scilab disponibiliza a maioria das estruturas das linguagens convencionais de programação. • O Scilab é um interpretador, os programas escritos em Scilab são, normalmente, executados em um tempo maior do que o de uma linguagem compilável como o C, por exemplo.
Programação em Scilab • Declaração de Variáveis: • Ao contrário da maioria das linguagens de programação, no Scilab, NÃO É NECESSÁRIO declarar variáveis.
Programação em Scilab • Comandos para iterações • “Para” (for): • Para i de 1 até n faça • comandos • Fim_para Os comandos dentro do bloco Para se repetirão até que i seja igual a n.
Programação em Scilab • Exemplo: • a = 2 • n = 5 • Para i de 1 até n faça • a = 2*a • Fim_para
Programação em Scilab • Progressão dos valores das variáveis:
Programação em Scilab • Exemplo da Estrutura no Scilab: • --> a = 2; • --> n = [1 2 3 4 5] • --> for i = n, ... a = 2*a, ... end
Programação em Scilab • Comandos para iterações • “Enquanto” (while): • Enquanto i < n faça • comandos • Fim_enquanto Os comandos dentro do bloco Enquanto se repetirão enquanto i for menor que n.
Programação em Scilab • Exemplo: • a = 2 • i = 1 • n = 6 • Enquanto i < n faça • a = 2*a • i = i+1 • Fim_enquanto Atenção!!! É preciso que o i mude de alguma forma dentro do laço senão o programa ficará rodando infinitamente.
Programação em Scilab • Progressão dos valores das variáveis:
Programação em Scilab • Exemplo da Estrutura no Scilab: • --> a = 2; • --> i = 1; • --> n = 6; • --> while i < n, ... a = 2*a, ... i = i + 1, ... end
Programação em Scilab • Comandos Condicionais • “Se” (if) • Se (condição) então • comandos • Senão • comandos • Fim_se
Programação em Scilab • Outra forma: • Se (condição1) então • comandos • Senão-se (condição2) então • comandos • Senão • comandos • Fim_se
Programação em Scilab • Exemplo: • Se (a=2) então • a = 2*a • Senão-se (a=3) então • a = 4*a • Senão • a = a + a • Fim_se
Programação em Scilab • Exemplo da Estrutura no Scilab: • --> a = 2; // ou a= 3 ou a= outro número • --> if a=2 then, ... • a = 2*a, ... • elseif a=3 then, ... • a = 4*a, ... • else, ... • a = a + a • end
Programação em Scilab • Comandos Condicionais • “Escolha” (select-case) • Escolha x • Caso expressão1 • comandos • Caso expressão2 • comandos • .. • Caso expressãon • comandos • Senão • comandos • Fim_Escolha
Programação em Scilab • Exemplo: • Escolha a • Caso a=2 • a = 2*a • Caso a=3 • a = 4*a • Senão • a = a + a • Fim_Escolha
Programação em Scilab • Exemplo da Estrutura no Scilab: • --> a = 2; // ou a= 3 ou a= outro número • --> select a, ... • Case 2, ... • a = 2*a, ... • Case 3, ... • a = 4*a, ... • else, ... • a = a + a, ... • end
Programação em Scilab • Os códigos apresentados podem ser colocados em arquivos e puxados conforme a necessidade. • A única diferença é que não será necessário colocar as vírgulas e reticências.
Fontes • Apostila Introdutória (suficiente para a cadeira de Cálculo Numérico) • www.dca.ufrn.br/~pmotta • Software Scilab (aproximadamente 16 MB) • www.rocq.inria.fr/scilab/
UNIDADE II – Sistemas Numéricos e Erros Solução Problema Físico Modelagem Modelo Matemático Resolução • A tentativa de se expressar um determinado problema real de uma forma numérica muitas vezes pode levar a erros, pois existem muitos valores que não se encaixam dentro de determinados limites. • O controle dos erros no decorrer do processo tem por objetivo prevenir a propagação destes. A propagação de erros pode levar a resultados absurdos de acordo com os cálculos realizados no processo. • Para facilitar a apresentação das fontes de erros, o processo de solução de um problema físico, de um modo geral, pode ser representado pelas seguintes fases: Introdução e definições