Buscar

Exercícios de Fisica computacional

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 5 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Federal do Oeste da Bahia – UFOB 
Centro de Ciências Exatas e das Tecnologias – CCET 
Exercícios de Física Computacional – Semestre Letivo 2016.1 
 
FÍSICA COMPUTACIONAL 
Prof.: Antonio César do Prado Rosa Junior 
Aluno: Márcio Moreira Lima 
Curso: Física 
 
Com base nos algoritmo já feito nos exemplos do livro Métodos Computacional da Física, Claudio Sherer. 2a 
edição. Utilizamos o Scilab para desenvolver algoritmos para resolver os exercícios proposto no livro. 
 
 
Exemplo 2.1 
 
Implementar a solução numérica de. 
 
dx/dt = x x(0)=1 
Com ambas as formas e comparar com a solução exata. 
 Solução: A solução é feita de duas formas distintas de 
derivada numérica, à direita e a centrada. 
Pela direita temos que: 
xj+1 = xj + dt*xj 
xj+1 = xj (1+ dt) 
Onde xj+1 é o valor futuro e xj é valor atual. 
Para a derivada numérica centrada temos. 
xj+1 = xj-1 + dt*xj 
Temos que fazer algumas correções na equação 
devidas o valor de x1 que não temos para calcular x2. 
Então podemos reescrever como sendo. 
xj+1 = xj-1 + dt*(x0 (1+dt)) 
A solução exata é: 
x = exp(t) 
 
 
 
A seguir esta o algoritmo implementado em Scilab. 
 
derivadas.sce 
 
tmax=5 
dt=0.01 
 
nt= floor (tmax/dt)+1 
t=linspace (0,tmax,nt); 
x=zeros(1,nt); 
x(1)=1; 
umdt=1+dt; 
h=2*dt; 
for n=2:nt; 
x(n)= umdt*x(n-1); 
end 
y(1)=1; 
y(2)=umdt*x(1); 
for n=3:nt; 
y(n)=y(n-2)+h*y(n-1); 
end 
z=exp(t); 
xset("window", 1); 
clf; 
plot(t,x,t,y,t,z,"--") 
legend ("a direita","centrada", "exata",2) ; 
 
 Usando a condições iniciais tmax=5 e a variação do 
passo dt=1 entramos o seguinte gráfico. 
 Figura 1- Gráfico de (t , x) obtido a partir dt =0.1 e tmax =1. 
 Figura 2: Gráfico de (t , x) obtido a partir de dt = 0.01 e tmax =5 
 
Podemos observar na figura 1 e 2 que quando aumentamos o 
dt à derivada numérica a direito converge para a solução 
exata e podemos perceber que a derivada centrada é mais 
precisa nesta situação. 
 
Exercício 2.1: Modifique o programa para resolver a 
equação. 
dx/dt = a * x² 
Com x(0) = 1, e execute-o com diferentes valores da 
constante a, positivos e negativos, comparando com a 
relação exata x = 1 /(1- a *t). 
 
Solução: com base no exemplo 2.1 vamos construir nosso 
algoritmo. 
 
 
 
 
Universidade Federal do Oeste da Bahia – UFOB 
Centro de Ciências Exatas e das Tecnologias – CCET 
Exercícios de Física Computacional – Semestre Letivo 2016.1 
 
tmax = ?. 
dt = ? s 
a= ? 
nt= floor (tmax/dt)+1 
t=linspace (0,tmax,nt); 
x=zeros(1,nt); 
x(1)=1; 
h=2*a*dt; 
for n=2:nt; 
 x(n)=x(n-1)*(1+a*dt*x(n-1)); 
end 
y(1)=1; 
y(2)= x(1)*(1+a*dt*x(1)); 
for n=3:nt; 
 y(n)=y(n-2)+h*y(n-1)^2; 
end 
z=(1-a*t).\1; 
xset("window", 1); 
clf; 
plot(t,x,t,y,t,z,"--") 
legend ("a direita","centrada", "exata",2) 
xtitle ("Gráfico para a = 0.1 e tmax=5") 
 
Para a >1 a solução exata diverge. Vamos iniciar 
procedimento numérico para t = 0 e a*t < 1. Vamos ver os 
gráficos abaixo para diferentes valores de tmax e a. 
 Figura 3- Gráfico de (t , x) para os valores de a = 0.1 e tmax = 5
 Figura 4- Gráfico obtido com valores de a = 0.1 e tmax = 9.9. 
 
Como podemos observar na figura 3 e 4 só obtemos solução 
para a > 0 se a*t < 1. Para tmax = 10 a equação diverge e 
para tmax = 9.99 só conseguimos obter solução para valores 
de a <= 0.1. 
 
Para a < 0 obtemos os seguintes gráficos: 
 
 
 Figura5- Gráfico de (t , x) a partir de a = - 0.1 e tmax = 5 
 
 Figura6 - Gráfico de (t , x) para valores de a = - 0.1 e tmax = 10. 
 
 
 Figura7- Gráfico para valores de a = -1 e tmax = 10. 
 
Para valores de a < 0 a derivada centrada apresenta 
comportamento estranho se o |𝑎 ∗ 𝑡| não for muito pequeno 
Universidade Federal do Oeste da Bahia – UFOB 
Centro de Ciências Exatas e das Tecnologias – CCET 
Exercícios de Física Computacional – Semestre Letivo 2016.1 
 
para a = -1 e tmax = 10 a derivada centrada é diferente do 
esperado pela equação diferencial que se pretende encontrar. 
Podemos perceber nesse caso que a derivada centrada não é 
indicada para resolver o problema. 
 
Exemplo 2.2: seja x = (x,y) f = (-ay,bx). A equação 
equivalente a equação xj+1 = xj + dt*xj é o sistema. 
xj+1 = xj – a*dt*yj 
 yj+1 = yj + b*dt*xj 
Implementando o exemplo acima temos e podemos 
definir x como vetor coluna, os passos de integração com 
auxílio da matriz. 
 
Sistema.sce. 
a=1 
b=1 
x0=1 
y0=0 
tmax= 12 
dt=0.01 
 
X0=[x0;y0] 
nt=floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
X=zeros(2,nt); 
X(:,1)= X0; 
A=[0,-a;b,0] 
for j=1:nt-1; 
 X(:,j+1)=X(:,j)+dt*A*X(:,j); 
end 
x=X(1,:); 
y=X(2,:); 
clf; 
plot(t,x,t,y); 
legend("x(t)","y(t)"); 
 
o gráfico obtido é: 
 Figura 8- Gráfico de (t,x; t,v) gerado a partir função vetorial. 
 
 
 
 
 
 
Exercícios 2.2 
Modifique o programa sistema.sc, usando para f uma função 
não linear x e y. por exemplo, fx = -ay³, fy = bx³. 
 Solução: 
xj+1 = xj – a*dt*yj³ 
 yj+1 = yj + b*dt*xj³ 
o algoritmo é 
a=1 
b=1 
X0=1 
Y0=0 
tmax= 12 
dt=0.01 
 
nt=floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
X(1)= X0; 
Y(1)=Y0; 
for j=1:nt-1; 
 X(j+1)=X(j)-dt*a*Y(j)^3; 
 Y(j+1)=Y(j)+dt*b*X(j)^3; 
end 
plot(t,X,t,Y); 
legend("x(t)","y(t)"); 
 
O gráfico obtido é: 
 Figura 9- Gráfico de (t,x; t,v) da função vetorial. 
 
Exemplo 3.3 
Considere um pendulo de comprimento l=1. A equação de 
movimento para o ângulo Ө, entre a barra pendulo e a 
vertical é: 
Ӫ = -g sin(Ө) 
Solução: a seguir programaremos o algoritmo no Scilab para 
resolver numericamente o exemplo: 
 
clear 
close 
clc 
teta0= %pi/4 
v0=5 
tmax= 30 
dt=0.01 
ddt=2*dt 
dt2=dt^2 
nt= floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
teta(1)=teta0 
v(1)= v0 
teta(2)= v(1)*dt+teta(1) ; 
v(2)= (teta(2)-teta(1))/dt 
for j=2:nt-1; 
 f(j)= -10*sin(teta(j)); 
Universidade Federal do Oeste da Bahia – UFOB 
Centro de Ciências Exatas e das Tecnologias – CCET 
Exercícios de Física Computacional – Semestre Letivo 2016.1 
 
 teta(j+1)=2*teta(j)-teta(j-1)+((f(j)*dt2)); 
 v(j+1)=(teta(j+1)-teta(j-1))/ddt; 
end 
 
xset("window",1); 
clf; 
plot(t,teta,t,v); 
legend("Verlet","velocidade",2); 
 
Podemos ver abaixo o gráfico do pendulo simples obtido a 
partir do algoritmo. 
 
 Figura 10- Gráfico de (t , x; t , v) obtido para Ө= 𝟏. 𝟓 𝒆 𝒕𝒎𝒂𝒙 = 𝟏𝟎 𝒆 𝒗𝟎 =
𝟎. 
 
 
Exemplo 4. 
Generalizar o algoritmo do pendulo simples para o 
caso do oscilador massa-mola de m=1. Pela equação 
dada: 
𝑑²𝑥
𝑑𝑡²
= −𝑘𝑥 
O algoritmo em Scilab é: 
 
clear 
close 
clc 
x0=0 
v0=5 
k= 0.91 
tmax= 30 
dt=0.01 
ddt=2*dt 
dt2=dt^2 
nt= floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
x(1)=x0 
v(1)= v0 
x(2)= v(1)*dt+x(1) ; 
v(2)= (x(2)-x(1))/dt 
for j=2:nt-1; 
 f(j)= -k*x(j) 
 x(j+1)=2*x(j)-x(j-1)+((f(j)*dt2)); 
 v(j+1)=(x(j+1)-x(j-1))/ddt; 
end 
 
xset("window",1); 
clf; 
plot(t,x,t,v); 
legend("trajetória Verlet ","velocidade Valet",-1); 
 
Segue abaixo o gráfico a partir do algoritmo: 
 
 Figura 11- Gráfico de (t,x; t,v) para caso MHS. 
 
Exemplo 5. 
Vamos tratar do caso de uma função dependente da 
velocidade que o casa de uma partícula sobre ação de 
uma forçade atrito viscoso descrito pela seguinte 
equação: 
𝑑²𝑥
𝑑𝑡²
= −𝛾𝑣 
Solução: 
O usando método de Verlet pode fazer o algoritmo em 
Scilab como segue abaixo: 
 
clear 
close 
clc 
x0=2 
v0=10 
k= 0.25 
tmax= 6 
dt=0.01 
ddt=2*dt 
dt2=dt^2 
nt= floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
x(1)=x0 
v(1)= v0; 
x(2)= v(1)*dt+x(1) ; 
v(2)= (x(2)-x(1))/dt 
for j=2:nt-1; 
 f(j)= -k*(v(j)); 
 x(j+1)=2*x(j)-x(j-1)+((f(j)*dt2)); 
 v(j+1)=(x(j+1)-x(j))/dt; 
end 
z=v0*exp(-k*t); 
xset("window",1); 
clf; 
plot(t,x,t,v,t,z,"--"); 
legend("Verlet","velocidade","Quase exata",-1); 
Universidade Federal do Oeste da Bahia – UFOB 
Centro de Ciências Exatas e das Tecnologias – CCET 
Exercícios de Física Computacional – Semestre Letivo 2016.1 
 
 
Podemos observar os gráficos a baixo gerado pelo 
programa. 
 
 Figura 12- Gráfico de (t , x ; t , v) para o atrito viscoso. 
 
 
 Figura 13- Gráfico de (t ,x ; t , v) para o atrito viscoso com 𝜸 = 𝟏. 
 
Exemplo 6. 
No caso mais simples onde temos a seguinte equação: 
𝑑²𝑥
𝑑𝑡²
= 𝑘 
 
Solução: O usando método de Verlet pode fazer o 
algoritmo em Scilab como segue abaixo: 
clear 
close 
clc 
x0=0 
v0=12 
k= 0.45 
tmax= 5 
dt=0.1 
ddt=2*dt 
dt2=dt^2 
nt= floor(tmax/dt)+1; 
t=linspace(0,tmax,nt); 
x(1)=x0 
v(1)= v0 
x(2)= v(1)*dt+x(1) ; 
v(2)= (x(2)-x(1))/dt 
for j=2:nt-1; 
 f(j)= k 
 x(j+1)=2*x(j)-x(j-1)+((f(j)*dt2)); 
 v(j+1)=(x(j+1)-x(j))/dt; 
end 
z=v0+k*t; 
xset("window",1); 
clf; 
plot( t,x,t,v,t,z,"--"); 
legend("Posição Verlet","velocidade Verlet","Quase exata",2); 
 
A seguir podemos observar o gráfico: 
 
 Figura 14- Gráfico de (t , x; t , v) para uma constate.

Continue navegando