500 likes | 665 Vues
CURSO de NIVELAMENTO. Métodos Computacionais Data : 10 a 12 de fevereiro de 2009 e 17 a 19 de fevereiro de 2009. PARTE I - INTRODUÇÃO À PROGRAMAÇÃO. Rogério Pagano ( MatLab ) Eduardo Lemos ( Maple e EMSO). INTRODUÇÃO À PROGRAMAÇÃO.
E N D
CURSO de NIVELAMENTO Métodos Computacionais Data: 10 a 12 de fevereiro de 2009 e 17 a 19 de fevereiro de 2009 PARTE I - INTRODUÇÃO À PROGRAMAÇÃO Rogério Pagano (MatLab) Eduardo Lemos (Maple e EMSO)
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Lógica de Programação • Lógica de programação é a técnica de encadear pensamentos (instruções) para atingir determinado objetivo. • Instruções • Instruções são regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar.
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Algoritmo [Do lat. med. algorismos, algorithmos, 'algarismo', por infl. do gr. arithmós, 'número'.] • 1. Matemática. Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, regras formais para a obtenção do resultado, ou da solução do problema. • 2. Informática. Conjunto de regras e operações bem definidas e ordenadas, destinadas à solução de um problema, ou de uma classe de problemas, em um número finito de etapas. [AURÉLIO]
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exemplos de Algoritmos • instruções para se utilizar um aparelho eletrodoméstico; • uma receita para preparo de algum prato; • guia de preenchimento para declaração do imposto de renda; • a regra para determinação de máximos e mínimos de funções por derivadas sucessivas; • a maneira como as contas de água, luz e telefone são calculadas mensalmente; etc.
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Características Todo algoritmo deve apresentar algumas características básicas: ter fim não dar margem à dupla interpretação (não ambíguo) capacidade de receber dado(s) de entrada poder gerar informações de saída para o mundo externo ao do ambiente do algoritmo ser efetivo (todas as etapas especificadas no algoritmo devem ser alcançáveis em um tempo finito)
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Formas de Apresentação DESCRIÇÃO NARRATIVA • EXEMPLO • Receita de Bolo: • Providencie manteiga, ovos, 2 Kg de massa, etc. • Mistureosingredientes • Despeje a mistura na fôrma de bolo • Leve a fôrma ao forno • Espere 20 minutos • Retire a fôrma do forno • Deixeesfriar • Prove VANTAGENS: o português é bastante conhecido por nós; DESVANTAGENS: imprecisão; pouca confiabilidade (a imprecisão acarreta a desconfiança); extensão (normalmente, escreve-se muito para dizer pouca coisa).
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP FLUXOGRAMA • EXEMPLO VANTAGENS: Uma das ferramentas mais conhecidas Figuras dizem muito mais que palavras Padrão mundial DESVANTAGENS: Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los, além disso, complica-se à medida que o algoritmo cresce.
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP LINGUAGEM ALGORITMICA • EXEMPLO VANTAGENS: Usa o português como base Pode-se definir quais e como os dados vão estar estruturados Passagem quase imediata do algoritmo para uma linguagem de programação qualquer DESVANTAGENS: Exige a definição de uma linguagem não real para trabalho Não padronizado
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP PSEUDOCÓDIGO • EXEMPLO TESTE DE MESA • EXEMPLO
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP ALGORITMOS • EXEMPLOS
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP OPERADORES Os operadores são meios pelo avaliamos dados dentro do computador. Operadores Aritméticos Operadores Relacionais Operadores Lógicos
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP Operadores Aritméticos Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador para exponenciação.
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP OperadoresRelacionais Os operadores relacionais são utilizados para comparar String de caracteres e números. Os valores a serem comparados podem ser caracteres ou variáveis. Estes operadores sempre retornam valores lógicos (verdadeiro ou falso/ True ou False)
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP OperadoresLógicos Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso.
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP A tabela abaixo mostra todos os valores possíveis criados pelos três operadores lógicos (AND, OR e NOT) Exemplo: Suponha que temos três variáveis A = 5, B = 8 e C =1
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Estruturas de Decisão e Repetição SE ... ENTÃO / IF ... THEN
Atribui 4 a variavel A A > B ??? Atribui 3 a variavel B Condição Como a resposta é verdadeira : 4 é > 3 ENTÃO(THEN) Executa comando de escrita Estrutura Condicional Simples Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exemplo: .. A = 4 B = 3 SE (A > B) ENTÃO ESCREVA ‘A > B’ FIM SE
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Estruturas de Decisão e Repetição SE ... ENTÃO ... SENÃO/ IF ... THEN ... ELSE
Atribui 4 a variavel A A > B ??? Atribui 5 a variavel B Condição Como a resposta não é verdadeira : 4 não é > 5 Executamos o caso contrário (ELSE) Executa comando de escrita Estrutura Condicional Composta Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exemplo: .. A = 4 B = 5 SE (A > B) ENTÃO ESCREVA ‘A > B’ SENÃO ESCREVA ‘B > A’ FIM SE
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP SE ... ENTÃO ... SENÃO/ IF ... THEN ... ELSE
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Estruturas de Decisão e Repetição ENQUANTO ... PROCESSAR / DO WHILE ... LOOP
50 > 40??? i > 10 ??? Condição Enquanto i < 10 Executa Caso contrário Executa se verdade Estrutura de Repetição Simples Programa de Engenharia Química/COPPE/UFRJ LMSCP Exemplos: ..... n = 10 %Número de peças compradas!!!! preço = 5 %Preço de cada peça ENQUANTO i < n TOTAL = TOTAL + preço i = i+1 FIM ENQUANTO SE (TOTAL >= 40) ENTÃO ESCREVA ‘NÃO TENHO COMO PAGAR!!!!’ SENÃO ESCREVA ‘ACHO QUE DÁ!’ FIM SE
INTRODUÇÃO À PROGRAMAÇÃO Programa de Engenharia Química/COPPE/UFRJ LMSCP • Estruturas de Decisão e Repetição PARA ... ATÉ ... PROCESSAR / DO ... UNTIL ... LOOP
i > 10 ??? 50 > 40??? Condição Para i < 10 Executa se verdade Executa Caso contrário Estrutura de Repetição Simples Programa de Engenharia Química/COPPE/UFRJ LMSCP Exemplos: ..... n = 10 %Número de peças compradas!!!! preço = 5 %Preço de cada peça PARA i = 1 até n TOTAL = TOTAL + preço i = i +1 FIM PARA SE (TOTAL >= 40) ENTÃO ESCREVA ‘NÃO TENHO COMO PAGAR!!!!’ SENÃO ESCREVA ‘ACHO QUE DÁ!’ FIM SE
Programa de Engenharia Química/COPPE/UFRJ LMSCP início Leia altura Leia sexo Se sexo=M P = 72.7*altura - 58 P = 62.1*altura – 44.7 Escreva P fim
Programa de Engenharia Química/COPPE/UFRJ LMSCP início Leia idade Se id<5 Se id<=7 Sem classificação Se id<=11 Infantil A Infantil B Se id<=18 Adulto fim
CURSO de NIVELAMENTO Métodos Computacionais PARTE II - INTRODUÇÃO AO MATLAB Rogério Pagano (MatLab)
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • O Matlab é um software destinado a fazer cálculos com matrizes (Matlab= MATrixLABoratory). OBJETIVO Introduzir comandos básicos do MATLAB para permitir um rápido acesso às potencialidades do ambiente. O utilizador iniciante poderá dispor de uma referência rápida para algumas possibilidades de uso do MATLAB.
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • O MatLab é case sensitive (a≠ A) • Comandos Básicos Inserir dados (variáveis, vetores, matrizes) Manipulação de vetores e matrizes clearvariable; clearall; Comando lookfor: lookfor [-all] inverse
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Exercício 1 Gere uma sequência de números pares com início em 4 e a terminar no número 100. • Exercício 2 Gere uma sequência numérica decrescente com início em 5 e a terminar em -5. • Exercício 3 Gere uma sequência numérica com 100 elementos pertencentes ao intervalo [0 . . . 1]. • Exercício 4 Considere uma matriz A com 20 linhas e 30 colunas. Construa um comando que permita extrair para uma matriz B uma sub-matriz de A constituída pelas linhas de 10 a 15 e as colunas de 9 a 12. • Exercício 5 Gere uma sequência de números múltiplos de 3 compreendidos entre 100 e 132, dispostos num vector por ordem decrescente. • Exercício 6 Gere uma sequência a começar em π e a acabar em −π com um passo de −π/15.
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Comandos Básicos (matrizes especiais) eye(n) = matriz identidade de dimensão n ones(n) = matriz somente com elementos iguais a unidade inv(A) = inversa da matriz A diag(u) = constrói uma matriz diagonal com o vetor u A’ = retorna a transposta de A zeros(n) = constrói uma matriz de dimensão n com zeros rand(n) = fornece uma matriz aleatória de dimensão n zeros(n) = constrói uma matriz de dimensão n com zeros
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Números e matrizes associadas a A det(A) é o determinante (se A for uma matriz quadrada) [S,E] = eig(A) fornece uma matriz diagonal E de valores característicos e uma matriz S de vetores característicos rank(A) é o posto (número de pivôs = dimensão do espaço da linha e do espaço da coluna) size(A) é o par de números [m n] trace(A) é o traço = soma das entradas diagonais = soma dos valores característicos
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Polinômios f(x) = x2 – 3x + 2 p = [1 -3 2]; r = roots(p) raízes do polinômio q = poly(r) calcula coeficientes com as raízes polyval(p,r) calcula o valor de r num polinômio de coef p
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Outras funções (Polinômios) • polyvalm - avalia o polinômio com o argumento sendo uma matriz • conv - multiplicação • deconv - divisão • residue - expansão em frações parciais • polyder - derivada do polinômio • polyfit - ajuste do polinômio • Exercício 10 Calcule o valor da função sin(x+pi/10) ∗ cos(x) em 100 pontos do intervalo [−π . . . π]. • Exercício 11 Calcule o produto dos polinómios x6 + 10 e x2 − 2x + 3. • Exercício 12 Obtenha o polinômio cujas raízes são os números inteiros 1, 2 e 3.
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Formato numérico format short format short e format long format long e format hex
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP lógicos • Operadores aritiméticos elemento a elemento
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP • Funções intrínsecas
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Otimização EDO
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Gráficos t = 0:pi/100:2*pi; x = sin(t); plot(t,x) t = 0:pi/100:2*pi; x1 = sin(t); x2 = sin(t+pi/2); x3 = x1.*x2; plot(t,x1,t,x2,t,x3) legend(‘sin’,’cos’,’asin*cos’) fplot(‘sin(x)’,[ -pi, pi]) fplot(‘x^2+3’, [ -1, 2]) fplot(‘sin(x)’,[ -0, pi])
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Gráficos t = linspace(0,10*pi,1001); x = t + 3*sin(2*t); y = t + 5*cos(5*t); figure(1) plot(x,y) t = linspace(0,5*pi,5001); x = cos(t) - cos(80*t).*sin(t); y = 2*sin(t) - sin(80*t); figure(2) plot(x,y) Lembrar as funções hold on e hold off
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Gráficos Outros tipos:
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Outros tipos:
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Gráficos X = 0:0.05:1; subplot(121), plot(X,X.^2,’k*’) subplot(122), plot(X,X.^2,’b --‘)
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Gráficos 3D mesh [X,Y] = meshgrid(-8:.5:8); R = sqrt(X.^2 + Y.^2) + eps; Z = sin(R)./R; mesh(X,Y,Z)
MATLAB Programa de Engenharia Química/COPPE/UFRJ LMSCP Outros tipos de Gráficos 3D: