Python是一種強大的編程語言,可以用它來模擬各種現象,比如太陽系。下面我們介紹如何用Python模擬太陽系。
import math import turtle # 定義常量 G = 6.67428e-11 AU = (149.6e6 * 1000) # 定義行星 class Planet(turtle.Turtle): def __init__(self, m, r, x, y, vx, vy, color): turtle.Turtle.__init__(self, shape='circle') self.m = m self.r = r self.x = x self.y = y self.vx = vx self.vy = vy self.color(color) self.penup() self.goto(x, y) self.pendown() def move(self, dt): self.x += self.vx * dt self.y += self.vy * dt self.goto(self.x / AU, self.y / AU) # 定義太陽系 class SolarSystem(object): def __init__(self): self.planets = [] def add_planet(self, planet): self.planets.append(planet) def move(self, dt): for i, p in enumerate(self.planets): for q in self.planets[i+1:]: dx = q.x - p.x dy = q.y - p.y d = math.sqrt(dx*dx + dy*dy) f = G * p.m * q.m / (d*d) fx = f * dx / d fy = f * dy / d p.vx += fx / p.m * dt p.vy += fy / p.m * dt q.vx -= fx / q.m * dt q.vy -= fy / q.m * dt p.move(dt) # 定義行星信息 sun = Planet(1.9891e30, 696340000, 0, 0, 0, 0, 'yellow') earth = Planet(5.9742e24, 6371000, AU, 0, 0, 29780, 'blue') mars = Planet(6.4191e23, 3397000, 0, -1.524 * AU, -24007, 0, 'red') ss = SolarSystem() ss.add_planet(sun) ss.add_planet(earth) ss.add_planet(mars) # 模擬太陽系 for i in range(10000): ss.move(3600 * 24 * 30) # 時間步長為30天
這段代碼中使用了Python的turtle庫來實現行星的移動,通過計算引力變化實現行星的移動。實際中,還需要根據行星的真實參數來計算引力、速度等參數,才能更精確地模擬太陽系的運行。