FORTRAN E QTIPLOT: SOLUÇÃO NUMÉRICA DE EQUAÇÕES DE MOVIMENTO. Edio Cunha da Costa

Documentos relacionados
Programação de Computadores III

Programação de Computadores:

MATLAB EM VIBRAÇÕES MECÂNICAS

Introdução ao Fortran 90. Aula 3

Algoritmos RESUMO - LINGUAGEM C

Introdução ao SciLab. SciLab O que é? Onde obter o programa:

Apostila de Fortran. É uma pseudo-linguagem a qual oferece recursos para que o programador possa codificar e testar os seus algoritmos.

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Introdução ao Scilab 3.0 Parte 3

Introdução à Linguagem C

Aprender a utilizar o aplicativo Gnuplot para fazer gráficos

Introdução a Linguagem C

Linguagem Haskell. Universidade Estadual Santa Cruz Conceitos de Linguagens de Programação. Tiago Carneiro 19 Agosto 2013

Introdução ao Scilab

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

Capítulo 11. GRÁFICOS COM WGNUPLOT

Introdução à Linguagem C. Adaptado de slides das Profas. Patrícia Jaques, Mônica Py, Deise Saccol e Vania Bogorny

Capítulo 5. ARQUIVOS E FUNÇÕES MATEMÁTICAS INTRÍNSECAS

Introdução ao fortran 90 - Aula 1

Capítulo 10. MATRIZES

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano

INTRODUÇÃO AO SCILAB

Vetores, Matrizes e Gráficos

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Universidade Federal do Rio Grande Bacharelado em Matemática Aplicada Disciplina de Algoritmos e Programação de Computadores

Introdução à Linguagem C

Prof. Dr. Marco Antonio Leonel Caetano

Linguagem de programação: Pascal

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Linguagem Haskell. Riocemar S. de Santana

Disciplina: Introdução a Programação. IPRJ/UERJ Professora: Sílvia Mara da Costa Campos Victer. Índice: Aula1 - Introdução Programa Algoritmo

Apresentação da ferramenta de programação. Comandos de entrada e saída. Prof. Alex Camargo

Aula 12- Variáveis e valores reais

Linguagens de Programação Aula 13

Ambiente Scilab Variáveis, expressões, comando de atribuição Entrada e Saída básica

11 - Estrutura de um programa em C

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Programação imperativa. 3. Mais funções

Professor: Domingos Equipe Haskell: Lucas Montesuma, Francisco Leonardo CONCEITOS DA LINGUAGEM DE PROGRAMAÇÃO CÁLCULADORA EM HASKELL

In I t n rto r d o u d ç u ão ã o à à Com o pu p t u a t ç a ão ã Linguagem Fortran! " 1

, cosh (x) = ex + e x. , tanh (x) = ex e x 2

Aula 5 Equação Diferencial de Segunda Ordem Linear e Coeficientes constantes:

Tipo de argumentos. valor. argumentos

Erros nas aproximações numéricas

11 ª Lista de Exercícios

RESOLUÇÕES LISTA 02. b) FALSA, pois para termos a equação de uma reta em um certo ponto a função deve ser derivável naquele ponto.

Introdução da Linguagem C

y (n) (x) = dn y dx n(x) y (0) (x) = y(x).

Programação Computacional C/C++

massa do corpo: m; constante elástica da mola: k; adotemos a aceleração da gravidade igual a g.

Matlab Noções introdutórias. Roteiro para aula

Algoritmos e Estruturas de Dados I (DCC/003) Estruturas Condicionais e de Repetição

Introdução à Programação

Algoritmos - 2. Alexandre Diehl. Departamento de Física - UFPel

Resolução De Problemas Em Informática. Docente: Ana Paula Afonso Resolução de Problemas. 1. Analisar o problema

FACCAT Sistemas de Informação. Estruturas de Dados

CURSO INTRODUÇÃO AO R

CÁLCULO NUMÉRICO. Profa. Dra. Yara de Souza Tadano.

Mini curso básico. Gilberto A. S. Segundo Fábio Carmo. Programa de Educação Tutorial

Linguagem de Programação. Thiago Leite Francisco Barretto

ALGORITMOS AULA 2. Profª Amanda Gondim

SSC 0301 IC para Engenharia Ambiental

TÉCNICO DE INFORMÁTICA - SISTEMAS

GEO764 - Programação avançada em Geofísica. Controle da seqüência. Estrutura IF... THEN... ELSE. Comando IF

Derivadas. Derivadas. ( e )

CCO 016 / COM 110 Fundamentos de Programação

Exercícios Repetição

UNIVERSIDADE FEDERAL RURAL DA AMAZONIA ICIBE INSTITUTO CIBER ESPACIAL PROFº JOÃO SANTANNA

ENGENHARIA DE PRODUÇÃO ICC 1 TÉCNICAS DE PROGRAMAÇÃO

Aula 6. Doravante iremos dizer que r(t) é uma parametrização da curva, e t é o parâmetro usado para descrever a curva.

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Capítulo 04. Erros de arredondamento e Truncamento (Parcial)

Introdução à Computação

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

(d) f (x) = ln (x + 1) (e) f (x) = sinh (ax), a R. (f) f(x) = sin(3x)

Unidade 6: Ambiente de Programação Prof. Daniel Caetano

Benchmarks. 1. Introdução

exatasfepi.com.br Informática C/C++ André Luís Duarte Feliz é o homem que acha sabedoria, e o homem que adquire entendimento; Provérbios 3:13

AERODESIGN AULA 1 MATLAB

CFAC: Programação em FORTRAN - I

Programação em FORTRAN - I. João Manuel R. S. Tavares

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage. Introdução à Programação

Introdução à Programação

Programação estruturada no Fortran 90-1

CONCEITOS DE ALGORITMOS

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

massa do corpo: m; constante elástica da mola: k.

Modelagem em Engenharia C & A Aula 1- Introdução e informações

Departamento de Matemática Universidade de Coimbra

Introdução à Programação

INFORMÁTICA APLICADA AULA 03 ALGORITMOS

Universidade Federal Rural do Semi Árido UFERSA Pro Reitoria de Graduação PROGRAD Disciplina: Física II Professora: Subênia Medeiros

ALGORITMO ALGORITMO NÃO COMPUTACIONAL

1 Da aula teórica ao Java

F = m d 2 x d t 2. temos que as forças a única força que atua no bloco é a força elástica da mola ( F E ), dada por. F E = k x

Estruturas de Repetição

Linguagem de Programação C

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Transcrição:

FORTRAN E QTIPLOT: SOLUÇÃO NUMÉRICA DE EQUAÇÕES DE MOVIMENTO Conteúdo Programático Edio Cunha da Costa 1. Equações diferenciais ordinárias (a) Equações diferenciais ordinárias na Mecânica Clássica: 2 a Lei de Newton i. MRU

ii. MRUV iii. Movimento plano iv. Força resistiva proporcional a velocidade v. MHS vi. MHS amortecido vii. MHS forçado viii. MHS acoplado ix. Gravitação x. Partículas carregadas em campos eletromagnéticos var-

iáveis (b) Soluções numéricas i. Método de Euler ii. Método de Runge Kutta (4 a ordem) 2. Introdução ao FORTRAN (a) Histórico (b) FORTRAN 77 e FORTRAN 90/95 (c) Programação em FORTRAN i. Declaração de variáveis (integer, real, double precision)

ii. Operações matemáticas (+ - * / **) iii. Funções (sqrt, log, exp, sin, cos, tan) iv. Entrada e saída de dados (read, write, open, close, format) v. Comparações (maior que, menor que,...) vi. Loop (do, do while, enddo) vii. Condições (if-then-else) 3. Algoritmo e programas para resolver os problemas de mecânica clássica usando os métodos de Euler e Runge Kutta

4. Grácos e análise dos resultados: QtiPlot (a) Barra de menu/ícones (b) Importar dados numéricos (c) Opções da tabela (d) Opções do gráco (e) Análise numérica 1. Equações Diferenciais Ordinárias Equações que envolvem uma função e suas derivadas ordinárias (função de uma variável)

Podem ser linear, não-linear, com coecientes constantes, coecientes variáveis, homogêneas, etc. A solução é uma função que satisfaz a equação diferencial dx = Ax2 d 2 u 2 = du + tu A x d 2 y dx 2 = dy dx x 2dy dx = Ax + By ( ) dv 2 = v Ad2 x 2 + Bdx + Cx = 0 As constantes de integração estão dadas pelas condições iniciais ou pelas condições de contorno Um equação diferencial ordinária de ordem n pode ser escrita

como um sistema de n equações diferenciais de primeira ordem. Por exemplo seja a equação linear de segunda ordem A d2 x 2 + Bdx + Cx = 0 (1) Se denirmos a variável u tal que u = dx, a equação (1) poderá ser escrita como o sistema de equações de primeira ordem A du + Bu + Cx = 0 dx = u (a) Equações diferenciais ordinárias na Mecânica Clássica: 2 a Lei de Newton

O movimento de uma partícula é determinado pelas forças que atuam na mesma: d p = F (2) em que m é a massa da partícula, p = m v é o momento linear e F é a soma (vetorial) de todas as forças que atuam na referida partícula. Da equação (2) obtemos três equações diferenciais, em geral, acopladas dp x = F x dp y = F y ou m dv y = F y dp z = F z m dv x = F x m dv z = F z

e nem sempre de fácil solução. Para um sistema físico constituído por várias partículas, um sistema de equações diferenciais deste tipo deve ser escrito para cada uma delas. As equações de movimento obtidas a partir da 2 a Lei de Newton são equações diferenciais de segunda ordem para a posição da partícula. Assim, esta equação pode também ser escrita como um sistema de duas equações de primeira ordem, uma para a velocidade e uma para a posição: d v = F m e d r = v

i. MRU Se F x = 0, então ii. MRUV m dv x = 0 e dx = v x (3) Se F x = cte então iii. Movimento no plano m dv x = cte e dx = v x (4)

Seja F a força (ou resultante das forças) que atua(m) na partícula. Então F x (t) = f(t), F y (t) = g(t) e dv x dv y = f(t) m = g(t) m e e dx = v x (5) dy = v y (6) iv. Força resistiva proporcional a velocidade Seja uma partícula em queda, sujeita a ação das forças peso e resistência do ar, dadas respectivamente por P = mg e F ar = αv y. Com um referencial orientado positivamente para cima, a 2 a Lei de Newton ca dv y = g + α m v y e dy = v y (7)

v. MHS Seja uma partícula de massa m sujeita a ação de uma força elástica, dada pela Lei de Hooke. A 2 a Lei de Newton ca vi. MHS amortecido dv x = k m x e dx = v x (8) Seja o MHS anterior, agora, sujeito a uma força de atrito, proporcional a velocidade, dada por αv. A equação (8) ca escrita como dv x = k m x α m v x e dx = v x (9)

vii. MHS forçado O mesmo MHS anterior pode estar sujeito a uma força externa (F ext ), em geral variável. Temos dv x = k m x α m v x + 1 m F ext(t) (10) viii. MHS acoplado Sejam dois MHS's acoplados por uma mola. Neste caso teremos um sistema de equações acopladas.

dv m A A dv m B B dx A dx B = k 2 x B (k 1 + k 2 ) x A (11) = k 2 x A (k 3 + k 2 ) x B (12) = v A (13) = v B (14) ix. Gravitação Consideremos duas partículas interagindo gravitacionalmente. As equações de movimento para o sistema são m A d v A = Gm Am B d v r 3 r e m B B = Gm Am B r 3 r (15)

com dr A = v d r A e B = v B (16) Observe que o sistema de equações (15) nos dá um sistema com seis equações escalares, a saber dv m Ax A dv Ay m A dv m Az A dv m Bx B dv By m B dv m Bz B = Gm Am B r 3 (x B x A ) = Gm Am B r 3 (y B y A ) = Gm Am B r 3 (z B z A ) = Gm Am B r 3 (x B x A ) = Gm Am B r 3 (y B y A ) = Gm Am B r 3 (z B z A )

Nestas equações r = (x B x A ) 2 + (y B y A ) 2 + (z B z A ) 2 é a distância entre as partículas. x. Partículas carregadas em campos eletromagnéticos variáveis Seja uma partícula de massa m e carga elétrica q movendo-se num campo eletromagnético, dado pelos campos E e B. Então m d v = q v B + q E (17)

ou seja m dv x m dv y m dv z = q (v y B z v z B y ) + qe x (18) = q (v z B x v x B z ) + qe y (19) = q (v x B y v y B x ) + qe z (20) com dx = v x, dy = v y e dz = v z. O sistema acima é um problema mais complexo porque os campos E e B, em geral, dependem da posição e do tempo. (b) Soluções numéricas i. Método de Euler

Consideremos y = y(x), denição de derivada é dy dx = dy dx = f(x, y) com y(x o) = y o. A lim y(x + x) y(x) x 0 x y(x + x) y(x) Assim, podemos aproximar f(x, y), de modo x que, considerando valores pequenos de x, escrevemos y(x + x) = y(x) + f(x, y) x (21) Assim, tendo o valor inicial y(x o ) para x = 0, obtemos os valores de y(x) para cada valor subsequente de x, incrementado por x, ou seja

x 1 = x o + x y(x 1 ) = y(x o ) + f(x o, y o ) x x 2 = x 1 + x y(x 2 ) = y(x 1 ) + f(x 1, y 1 ) x x 3 = x 2 + x y(x 3 ) = y(x 2 ) + f(x 2, y 2 ) x x n+1 = x n + x y(x n+1 ) = y(x n ) + f(x n, y n ) x ii. Método de Runge Kutta (4 a ordem) O método de Runge Kutta é um método mais preciso e eciente em relação ao método de Euler. Consideremos a equação diferencial dy = f(x, y), dx y(x o) = y o A solução desta equação é aproximada por y(x n+1 ) = y(x n ) + 1 6 (k 1 + 2k 2 + 2k 3 + k 4 ) (22)

sendo os coecientes dados por e k 1 = x f(x n, y n ) k 2 = x f(x n + x 2, y n + k 1 2 ) k 3 = x f(x n + x 2, y n + k 2 2 ) k 4 = x f(x n + x, y n + k 3 ) x n+1 = x n + x 2. Introdução ao FORTRAN (a) Histórico

- O FORTRAN foi a primeira linguagem de programação de alto nível, criada em 1956. - Já sofreu várias modicações para permitir a incorporação de recursos de programação cada vez mais modernos. - Em 1966 o American National Standards Institute (ANSI) padronizou o FORTRAN IV em duas versões (básico e avançado) com recursos de operações lógicas, operações básicas sobre números complexos, comandos de entrada e saída, entre outros. - Em 1977, o ANSI padronizou o FORTRAN 77, que inclui recursos de programação estruturada, de operações sobre caracteres, manipulação e uso de arquivos, entre outros.

- De lá pra cá foram criadas outras versões, dentre elas o FOR- TRAN 90 e o FORTRAN 95. (b) FORTRAN 77 e FORTRAN 90/95 Existem várias diferenças entre estas versões. Por exemplo no FORTRAN 77 as linhas do programa fonte devem começar na coluna 7 e terminar na coluna 72 enquanto o FORTRAN 95 não precisa; o FORTRAN 95 possui recursos para otimizar operações com matrizes. (c) Programação em FORTRAN Para programar em FORTRAN:

escrevemos o código fonte em qualquer editor de texto, salvando o arquivo como.for ou.f90 ou.f95, por exemplo. numa janela de terminal compilamos o código fonte para criar o arquivo executável. Isto é feito através do comando gfortran arquivo.f95 que criará, no diretório em que foi salvo o código fonte, um arquivo a.out executável. Podemos alterar o nome do arquivo executável com o comando gfortran arquivo.f95 -o executavel

e podemos ainda usar a opção -W (warning, cuidado) para que o compilador informe algum possível erro ou inconsistência. Neste caso, usamos gfortran -W arquivo.f95 -o executavel para executar o programa basta digitar na linha de comando o nome do arquvi executável, precedido de././a.out./executavel se após o nome do arquivo executável digitarmos & o programa será executado em segundo plano

i. Declaração de variáveis: inteiras (integer a,b(10),c1,d(3,5)) (integer :: a,b(10),c1,d(3,5)) reais (real a, b(10), c1, d(3,5),var) (real :: a, b(10), c1, d(3,5),var) dupla precisão (double precision) complexas (complex) lógicas (logical)

caractere (character) Vetores e matrizes podem também ser declarados pelo comando dimension real, dimension (3,2) :: a real, dimension (1:8) :: b ii. Operações matemáticas adição +

subtração - produto * divisão / potência ** iii. Funções sqrt(x) (raiz quadrada)

cos(x) (cosseno-em radiano) cosh(x) (cosseno hiperbólico) sin(x) (seno-em radiano) sinh(x) (seno hiperbólico) tan(x) (tangente) tanh(x) (tangente hiperbólica)

exp(x) (função exponencial) log(x) (logarítmo natural) log10(x) (logarítmo na base 10) iv. Entrada e saída de dados (read, write, open, close, format) read(stream, label [, end=end][, err=err]) list write(stream, label) list

stream é um número que referencia um arquivo, ou uma variável caracter ou * para entrada via teclado label é o número de um formato de leitura dos dados ou * pra livre de formato list lista dos itens a serem lidos, separados por vírgula, possivelmente textos colocados entre aspas [, end=end][, err=err] é opcional label format (format descriptors)

label é o inteiro referenciado pelo read format descriptions é a lista de itens separados por vírgula que descrevem como os dados serão lidos/gravados. Os formatos são: niw para saída de inteiros nfw.d saída de real ou complexo na forma de ponto xo new.d saída de real ou complexo na forma de ponto utuante n contador opcional (quantos itens de entrada e saída)

w número de caracter por número, incluindo sinais e espaço d número de digitos decimais de w open([unit=]stream, err=escape, action=action, le=name) stream identicador vinculado ao read ou write action umas das opções read, write ou readwrite le nome do arquivo, entre aspas, no qual os dados serão lidos e/ou gravados

close(stream) para fechar o arquivo indicado em read, write, open v. Comparações (maior que, menor que,...) FORTRAN 77:.gt..ge..lt..le..eq..ne. FORTRAN 95: > >= < <= == /= vi. Loop (do, do while, enddo) Podemos repetir uma sequencia de comandos e instruções usando loop que tem a estrutura

do var =inicio, nal, passo xxx end do var é uma variável inteira passo é opcional; indica o incremento da variável var [nome:] do var = inicio, nal, passo xxx end do [nome]

ou [nome:] do while (expressão lógica) xxx end do [nome] vi. Condições (if-then-else) if (expressão lógica) then... else if (expressão lógica) then

... else if (expressão lógica) then... else... end if 3. Algoritmo e programas para resolver os problemas de mecânica clássica usando os métodos de Euler e Runge Kutta

O algoritmo geral para escrevermos programas para a solução numérica de equações de movimento pode ser assim escrito: início do programa declarar e fornecer os valores de m, x o, v o, t o, t e parâmetros (g, µ, α,... ) escrever as forças F 1, F 2,... para t = t o, t max, t faça calcule os valores de t, v, x, F 1, F 2,...

escreva os valores num arquivo de dados m para m do programa Podemos inserir comentários no arquivo fonte (programa) usando o símbolo! na primeira coluna ou ao nal de uma linha de comando A linguagem apresenta muitos outros recursos que exigiriam curso mais extenso. No entanto, existem vários livros, manuais e refências disponíveis em livrarias e na rede mundial de

computadores, que podem ser consultados para implementar o código fonte. Por exemplo, ao invéz da estrutura if-then-else podemos utilizar a seguinte sequencia select case (valor da expressão) case (valor 1)... case (valor 2, valor 3)...

case (valor 4)... case default... end select Podem ser escritas subrotinas programas no editor kate

O editor kate é um editor de texto que sinaliza diferentes formas de código fonte como FORTRAN, C, C++, entre outros. Se o terminal konsole estiver instalado no sistema operacional, uma janela do konsole poderá ser aberta interiormente ao kate, na qual poderemos compilar o programa fonte e executar o arquivo executável. 4. Grácos e análise dos resultados: QtiPlot O QtiPlot é um software que, através da leitura dos dados obtidos pela integração numérica, permite a construção de grácos, ajuste de curvas, cálculos sobre os dados como derivadas,

integrais, médias, construção de novas tabelas, exportação de grácos em formatos espcícos (eps, pdf)etc..., etc..., etc... Ao longo do minicurso, veremos algumas destas ferramentas dispostas na 1. Barra de menu/ícones 2. Importação e exportação de dados numéricos 3. Opções da tabela 4. Opções do gráco

5. Análise numérica no gráco e na tabela Referências 1. Linguagem de Programação Estruturada FORTRAN 77. MAXIMILIAN EMIL HEHL. McGraw-Hill. 2. Self-study guide 2 Programming in Fortran 95. RACHAEL PADMAN MICHAELMAS. University of Cambridge - Department of Physics. Computational Physics.