• Nenhum resultado encontrado

Métodos Computacionais em Física

N/A
N/A
Protected

Academic year: 2021

Share "Métodos Computacionais em Física"

Copied!
13
0
0

Texto

(1)

MetComp 2014-2 IF-UFRJ

Métodos Computacionais em Física

Tatiana G. Rappoport tgrappoport@if.ufrj.br 2014-2

(2)

MetComp 2014-2 IF-UFRJ

Macros

• Funções facilitam a organização do programa. • Mas:

• as informações locais devem ser guardadas no ponto de chamada da função

• novas variáveis devem ser criadas e inicializadas, consumindo tempo de execução

• Se a função puder ser escrita em uma só́ linha podemos usar MACROS – são mais eficientes

• #define F(x) (5*(cos((x)*(x)-1.)-1./2))

• x pode ser um número, uma variá́vel ou uma expressãomais complexa. • Sempre que F(x) for encontrado, ele sera ́ substituído por

(3)

MetComp 2014-2 IF-UFRJ

Exemplos de macros

#include <stdio.h>

#define SQR(x) ((x)*(x))

#define CUBE(a) ((a)*(a)*(a))

#define MAXIMO(x,y) (((x) > (y)) ? (x) : (y)) #define MINIMO(x,y) (((x) < (y)) ? (x) : (y))

#define SOMA(x,y) x+y // Definicao errada

int main(){ double x = -5.0, y = 10.0; printf("SQR(x) = %f\n", SQR(x)); printf("CUBE(x) = %f\n", CUBE(x)); printf("MAXIMO(x,y) = %f\n", MAXIMO(x,y)); printf("MINIMO(x,y) = %f\n", MINIMO(x,y));

printf("Dobro de x+y = %f\n", 2*SOMA(x,y));//Errado return 0;

(4)

MetComp 2014-2 IF-UFRJ

Dividindo o programa em vários arquivos

• Ja ́ vimos como estruturar a lógica de um programa atravé́s de funções e macros

• Um programa grande, com vários includes, protótipos de funções, macros e constantes simbólicas, torna-se rapidamente de difícil leitura.

• Um programa deve caber na tela do computador

• Um programa deve ser dividido em vários arquivos

• Não precisamos ter uma có́pia da função em todos os programas principais

• Podemos compilar apenas o arquivo modificado

• Funções genéricas (p.ex. raiz de uma função) podem ser usadas em outros códigos

(5)

MetComp 2014-2 IF-UFRJ

Compilando

• Quando dividimos um programa em vários arquivos devemos incluir os .h em cada arquivo em que as definições contidas nesse arquivo sejam usadas.

• Compilando:

gcc -o executavel principal.c parte1.c parte2.c ...

• Para compilar um arquivo de implementação isoladamente (útil para achar erros):

gcc -c parte1.c

será criado um arquivo chamado parte1.o

• Para compilar o programa o comando é:

• gcc -o executavel.exe principal.c parte1.o parte2.c . . .

• Compare os programas contidos nos arquivos fatorial2.c (sem funções) e fatorial1.c (com funções).

(6)

MetComp 2014-2 IF-UFRJ

Sistema de equações diferenciais acopladas

• O método de Euler pode ser aplicado a sistemas de equações acopladas com mais de uma variável dependente e uma variável independente.

• Ex: problemas em duas ou mais dimensões, onde temos a posição das

partículas descritas por duas ou mais coordenadas dependentes do tempo.

• Aplicando o método de Euler, teriamos

Aplicando o m´etodo de Euler a cada uma delas, ter´ıamos:

y

1

(x

i+1

) = y

1

(x

i

) + hf

1

(x

i

, y

1

(x

i

), y

2

(x

i

), y

3

(x

i

))

y

2

(x

i+1

) = y

2

(x

i

) + hf

2

(x

i

, y

1

(x

i

), y

2

(x

i

), y

3

(x

i

))

y

3

(x

i+1

) = y

3

(x

i

) + hf

3

(x

i

, y

1

(x

i

), y

2

(x

i

), y

3

(x

i

))

· · ·

Devemos resolvˆe-las simultaneamente, calculando todas num dado x

i

antes de passar a x

i+1

.

Podemos tratar o conjunto de vari´aveis dependentes e suas respectivas

derivadas como componentes de um vetor. Introduzindo uma notac¸˜ao

vetorial:

Equac¸˜ao diferencial:

!y

!

= !

f (x, !y(x))

Condic¸˜oes iniciais:

!y(x

0

)

Soluc¸˜ao pelo m´etodo de Euler:

!y(x

i+1

) = !y(x

i

) + h !

f (x

i

, !y(x

i

))

M´etodos Computacionais em F´ısica I

7

Sistema de equac¸ ˜oes diferenciais acopladas

O m´etodo de Euler pode ser aplicado a sistemas de equac¸˜oes

acopladas, com mais de uma vari´avel dependente, todas func¸˜ao da mesma vari´avel independente.

Ex: problemas em duas ou mais dimens˜oes, onde temos a posic¸˜ao das part´ıculas descritas por duas ou mais coordenadas dependentes do

tempo.              y! 1 = f1(x, y1, y2, y3) y! 2 = f2(x, y1, y2, y3) y! 3 = f3(x, y1, y2, y3) · · ·

conhecidas as condic¸˜oes iniciais y1(x0), y2(x0), y3(x0), · · ·

M´etodos Computacionais em F´ısica I 6

Sistema de equac¸ ˜oes diferenciais acopladas

O m´etodo de Euler pode ser aplicado a sistemas de equac¸˜oes

acopladas, com mais de uma vari´avel dependente, todas func¸˜ao da mesma vari´avel independente.

Ex: problemas em duas ou mais dimens˜oes, onde temos a posic¸˜ao das part´ıculas descritas por duas ou mais coordenadas dependentes do

tempo.              y! 1 = f1(x, y1, y2, y3) y! 2 = f2(x, y1, y2, y3) y! 3 = f3(x, y1, y2, y3) · · ·

conhecidas as condic¸˜oes iniciais y1(x0), y2(x0), y3(x0), · · ·

M´etodos Computacionais em F´ısica I 6

conhecidas as condições iniciais

calculamos todos os y(xi) antes de passar

(7)

MetComp 2014-2 IF-UFRJ

Equações diferenciais de segunda ordem

• Como sistema de equações diferenciais de primeira ordem acopladas!

• Queremos resolver y”=f(x,y,y’) conhecidos y(0) e y’(0).

• Fazemos y1=y e y2=y’ ( a derivada de uma função é outra função!)

Equac¸ ˜oes diferenciais de segunda ordem

como sistema de equac¸˜oes diferenciais de primeira

ordem acopladas

Queremos resolver

y

!!

= f (x, y, y

!

)

conhecidos

y(0)

e

y

!

(0)

.

Seja y

1

= y

e y

2

= y

!

( a derivada de uma func¸˜ao ´e outra func¸˜ao!).

Ent˜ao temos:

y

! 1

= y

2

y

! 2

= f (x, y

1

, y

2

)

Aplicando o m´etodo de Euler simples a cada uma delas:

y

1

(x

i+1

) = y

1

(x

i

) + hy

2

(x

i

)

y

2

(x

i+1

) = y

2

(x

i

) + hf (x

i

, y

1

(x

i

), y

2

(x

i

))

M´etodos Computacionais em F´ısica I

8

• Aplicando o método de Euler

Equac¸ ˜oes diferenciais de segunda ordem

como sistema de equac¸˜oes diferenciais de primeira

ordem acopladas

Queremos resolver

y

!!

= f (x, y, y

!

)

conhecidos

y(0)

e

y

!

(0)

.

Seja y

1

= y

e y

2

= y

!

( a derivada de uma func¸˜ao ´e outra func¸˜ao!).

Ent˜ao temos:

y

! 1

= y

2

y

! 2

= f (x, y

1

, y

2

)

Aplicando o m´etodo de Euler simples a cada uma delas:

y

1

(x

i+1

) = y

1

(x

i

) + hy

2

(x

i

)

y

2

(x

i+1

) = y

2

(x

i

) + hf (x

i

, y

1

(x

i

), y

2

(x

i

))

(8)

MetComp 2014-2 IF-UFRJ

Exemplo: Pêndulo simples

A equação que descreve o movimento de um pêndulo é dada por:

Exemplo: Pˆendulo simples

A equac¸˜ao que descreve o movimento de um pˆendulo ´e dada por:

d

2

θ/dt

2

+

g

l

senθ = 0

podemos escrever dθ/dt = ω, d

2

θ/dt

2

= dω/dt

, de forma a ter duas

equac¸˜oes diferenciais acopladas

dθ/dt = ω

dω/dt = −

gl

senθ

Chamando de #y o vetor cujas componentes s˜ao as func¸˜oes a serem

integradas, podemos fazer:

y[0] = θ

e teremos f [0] = dy[0]/dt = ω = y[1]

y[1] = ω

f [1] = dy[1]/dt = −

gl

senθ = −

gl

sen(y[0])

M´etodos Computacionais em F´ısica I

9

mas

Exemplo: Pˆendulo simples

A equac¸˜ao que descreve o movimento de um pˆendulo ´e dada por:

d

2

θ/dt

2

+

g

l

senθ = 0

podemos escrever dθ/dt = ω, d

2

θ/dt

2

= dω/dt, de forma a ter duas

equac¸˜oes diferenciais acopladas

dθ/dt = ω

dω/dt = −

gl

senθ

Chamando de #y o vetor cujas componentes s˜ao as func¸˜oes a serem

integradas, podemos fazer:

y[0] = θ

e teremos

f [0] = dy[0]/dt = ω = y[1]

y[1] = ω

f [1] = dy[1]/dt = −

gl

senθ = −

gl

sen(y[0])

M´etodos Computacionais em F´ısica I

9

Exemplo: Pˆendulo simples

A equac¸˜ao que descreve o movimento de um pˆendulo ´e dada por:

d

2

θ/dt

2

+

g

l

senθ = 0

podemos escrever dθ/dt = ω, d

2

θ/dt

2

= dω/dt, de forma a ter duas

equac¸˜oes diferenciais acopladas

dθ/dt = ω

dω/dt = −

gl

senθ

Chamando de #y o vetor cujas componentes s˜ao as func¸˜oes a serem

integradas, podemos fazer:

y[0] = θ

e teremos

f [0] = dy[0]/dt = ω = y[1]

y[1] = ω

f [1] = dy[1]/dt = −

gl

senθ = −

gl

sen(y[0])

M´etodos Computacionais em F´ısica I

9

Podemos criar um vetor cujas componentes são as funções a serem integradas

Exemplo: Pˆendulo simples

A equac¸˜ao que descreve o movimento de um pˆendulo ´e dada por: d2θ/dt2 + g

l senθ = 0

podemos escrever dθ/dt = ω, d2θ/dt2 = dω/dt, de forma a ter duas

equac¸˜oes diferenciais acopladas 

 

dθ/dt = ω

dω/dt = −gl senθ

Chamando de #y o vetor cujas componentes s˜ao as func¸˜oes a serem integradas, podemos fazer:

y[0] = θ e teremos f [0] = dy[0]/dt = ω = y[1]

y[1] = ω f [1] = dy[1]/dt = −gl senθ = −gl sen(y[0])

(9)

MetComp 2014-2 IF-UFRJ

Projétil com resistência do ar

• Desejamos calcular a trajetória de um corpo lançado para cima com um certo ângulo se considerarmos a resistência do ar.

• Existem vários regimes de resistência do ar.

• Modelo simples com dependência com a velocidade na forma

F

x

=

B

2

v

2

cos(✓)

F

y

=

B

2

v

2

sen(✓)

F

x

=

B

2

vv

x

F

y

=

B

2

vv

y

F

r

⇡ B

1

v

B

2

v

2 Velocidade alta! M´et Comp Eq. diferenciais de primeira ordem EDO primeira ordem: Revis˜ao do M´etodo de Euler Sistema de equac¸ ˜oes diferenciais acopladas Equac¸ ˜oes diferenciais de segunda ordem Melhorando o M´etodo de Euler Runge-Kutta de Quarta Ordem C: Divis˜ao do Programa em Arquivos x y v vy vx F Fx Fy !

F

x

=

B

2

v

2

cos✓

(1)

F

y

=

B

2

v

2

sen✓

F

x

=

B

2

vv

x

F

y

=

B

2

vv

y

Ent˜ao as equac¸˜oes

de movimento para x e y s˜ao escritas como

m

d

2

x

dt

2

=

B

2

vv

x

e

m

d

2

y

dt

2

=

B

2

vv

y

mg

y

x

(10)

MetComp 2014-2 IF-UFRJ

Projétil com resistência do ar

• Equações diferenciais

m

d

2

x

dt

2

=

B

2

vv

x

m

d

2

y

dt

2

=

B

2

vv

y

mg

dx

dt

= v

x

dv

x

dt

=

B

2

m

q

v

x2

+ v

y2

v

x

dy

dt

= v

y

dv

y

dt

=

B

2

m

q

v

x2

+ v

y2

v

y

g

duas equações diferenciais de segunda ordem

quatro equações diferenciais de primeira ordem

(11)

MetComp 2014-2 IF-UFRJ

Preparando o programa

• Podemos escrever as equações de forma compacta definindo um vetor de quatro componentes

d~

S

dt

= ~

f (~

S)

j

S[j]

f [j]

0

x

v

x

1

v

x B2 m

q

v

x2

+ v

y2

v

x

2

y

v

y

1

v

x B2 m

q

v

x2

+ v

y2

v

x

(12)

MetComp 2014-2 IF-UFRJ

Mastigando um pouco mais

M´et Comp Eq. diferenciais de primeira ordem EDO primeira ordem: Revis˜ao do M´etodo de Euler Sistema de equac¸ ˜oes diferenciais acopladas Equac¸ ˜oes diferenciais de segunda ordem Melhorando o M´etodo de Euler Runge-Kutta de Quarta Ordem C: Divis˜ao do Programa em Arquivos j S[j] f [j] 0 x vx 1 vx B2m q vx2 + vy2 vx 2 y vy 3 vy B2m q vx2 + vy2 vy g

As equac¸˜oes que definem a dinˆamica podem ent˜ao ser reescritas como dS[0] dt = f [0] = S[1] (7) dS[1] dt = f [1] = B2 m q S[1]2 + S[3]2 S[1] dS[2] dt = f [2] = S[3] dS[3] dt = f [3] = B2 m q S[1]2 + S[3]2 S[3] g

j

S[j]

f [j]

0

x

v

x

1

v

x B2 m

q

v

2 x

+ v

y2

v

x

2

y

v

y

1

v

x B2 m

q

v

2 x

+ v

y2

v

x

(13)

MetComp 2014-2 IF-UFRJ

Exercício

• Escreva um programa para resolver uma equação diferencial de segunda ordem usando o método de Euler. Utilize a ideia de separar o programa em arquivos.

• Como teste, resolva a equação diferencial para o movimento do pêndulo, que tem solução analítica para ângulos pequenos.

• Utilize diferentes valores de Δt e faça um gráfico no gnuplot contendo a solução analítica e outras três soluções para Δt diferentes.

Referências

Documentos relacionados

9 Para fazer backup de arquivos do banco de dados Microsoft SQL Server e restaurá-los, é recomendável usar os utilitários de backup e restauração internos pertencentes ao SQL..

IV - possibilidade de diferenciação dos limites de emissão, em função do porte, localização e especificidades das fontes de emissão, bem como das

modo de wordlist, serão usadas apenas as palavras contidas no

modo de wordlist, serão usadas apenas as palavras contidas no

O fornecedor deverá entregar os materiais, em perfeitas condições de uso e armazenamento, na Seção de Almoxarifado deste Tribunal, localizado na rua Duque de Caxias, 350 - 1° andar

A pesquisa aqui relatada, que teve como propósito geral contribuir para estudos e pesquisas sobre o aprendizado da leitura através de materiais em ambiente virtual

Para tanto devemos ter bem precisos alguns concei- tos, como: Arquivo Público, Arquivo Permanente, Documento, Do- cumento Arquivístico, Fundos, Série Documental, Arranjo, Des- crição

Proteção para as Mãos: Utilizar luvas de PVC / Neoprene ou outras resistentes a solventes orgânicos para evitar o contato mínimo do produto com a pele. Proteção para