def F(d,m1,m2):
G=6.67*10**-11
F=G*m1*m2/(d*d)
return F
def a(m,F):
return F/m
def s(v,a,dt):
return v*dt + 0.5*a*dt*dt
if __name__ == '__main__':
x1 = 0 #paikka
alkux2= 6400*10**3+20
x2 = alkux2
m1 = 6*10**24
m2 = 10
v1 = 0
v2 = 0
dt = 0.00001
dist = x2 - x1
loppuero = 6400*10**3
laskuri = 0
while (dist > loppuero):
laskuri = laskuri + 1
voima = F(dist,m1,m2)
a1 = voima/m1
#print("a1 :",a1)
#oletus vakionopeus dt:n ajan.
v1 = v1 + a1 * dt
x1 = x1 + v1 * dt
#print("x1 ", x1)
a2 = voima/m2
#print("a2:",a2)
v2 = v2 - a2* dt
x2 = x2 + v2 * dt
#print("x2 ",x2)
dist = x2-x1
#print(laskuri," : etäisyys on =",dist)
print("aika :",laskuri/(1/dt)," s")
print("massa 1 kulkema matka on ",x1)
print("massa 2 kulkema matka on ",alkux2-x2)
# Ongelma: Kuinka kauan kestää vakiovoimalla kiihdyttää arvoon 0,8C.
# Raketti kiihtyy 24h loppunopeuteen klassisen fysiikan mukaan
import math
import matplotlib.pyplot as plt
C = 299000 #valon nopeus
LoppuNopeus = 0.8*C
a0 = LoppuNopeus/(24*60*60) #Alkukiihtyvyys
nopeus = 0 # nopeusmuuttuja, alkunopeus
T = 0 # aika sekunneissa (loopit)
NOPEUDET =[nopeus]
while (nopeus < LoppuNopeus):
a = a0*(1*math.sqrt(1-nopeus**2/C**2))
nopeus = nopeus + a
NOPEUDET.append(nopeus/C)
if(T%10000==0):
print("nopeus on",nopeus," a =", a,"m/s^2")
T = T+1
print(T, "s")
print(round(T/(60*60)),"h")
plt.plot(NOPEUDET);
plt.show();
import math
import matplotlib.pyplot as plt
def dist(x1,y1,x2,y2):
dx = x2 - x1;
dy = y2 - y1;
d = (dx**2+dy**2)**(0.5);
print("dist on :",d)
return d;
def kulma(x1,y1,x2,y2):
#Palauttaa kahden pisteen p1 -> p2 välisen kulman radiaaneina.
dx = x2-x1;
dy = y2-y1;
#print("dy: ",dy," ja dx: ",dx,"kulma on",math.atan2(dy,dx))
return(math.atan2(dy,dx))
if __name__ == '__main__':
x = [] # Koiran koordinatit
y = []
catx = [] # Kissan koordinaatit
caty = []
cat_y = 0 # Kissan alkupaikka
cat_x = 0
cat_vy = 1 # kissan nopeus y-suunnassa
cat_vx = -0.4 # kissan nopeus x-suunnassa
dog_x = 2 # Koiran alkupaikka
dog_y = 3
dog_v = 2.1 # koiran nopeus
dog_kulma = 0 # koiran suunta
#Simulaation arvot
dt = 0.01 # Askel
end = 0.01 # millä etäisyyserolla lopetetaan
x.append(dog_x) #lisätään 1. koordinaatit listaan
y.append(dog_y)
dist(dog_x,dog_y,cat_x,cat_y)
while(dist(dog_x,dog_y,cat_x,cat_y) > end):
dog_kulma = kulma(dog_x,dog_y,cat_x,cat_y)
#koordinaattien päivitys
dog_x = dog_x + dog_v * dt * math.cos(dog_kulma)
dog_y = dog_y + dog_v * dt * math.sin(dog_kulma)
x.append(dog_x)
y.append(dog_y)
cat_y = cat_y + cat_vy * dt
cat_x = cat_x + cat_vx * dt
catx.append(cat_x)
caty.append(cat_y)
#Kuvan tulostaminen
plt.plot(x,y,marker="o",color='tab:green', label="Dog")
plt.plot(catx,caty, marker="o", label = "Kissa")
plt.legend() #lisää otsikot label
plt.show()