python行星名称输出_用python绘制行星轨道

博客作者遇到了一个问题,他们的Python代码用于绘制基于轨道半径的一般方程的椭圆,但结果是绘制出了一条直线而非椭圆。代码中定义了物理常数,如角动量、质量、太阳质量、半长轴和引力常数,然后计算了能量、偏心率等。在尝试通过循环计算并绘制x=r*cos(theta)和y=r*sin(theta)时,发现x值相同,导致图形失真。作者分享了代码并寻求解决方案。
摘要由CSDN通过智能技术生成

我已经写了'r'(Radius)值的一般轨道方程的代码,并试图绘制x=r*cos(theta)和{}的图形,但是我的代码给出了相同的“x”值来表示不同值的“r”,所以我用一条直线而不是椭圆来结束enter code here。在from numpy import *

import matplotlib.pyplot as plt

import pprint

L = 9.11*10**38 #L = angular momentum

m = 3.28*10**23 #m = mass of mercury

M = 1.99*10**30 #M = mass of sun

a = 5.8*10**7 #a = semi-major axis

G = 6.674*10**-11 #G = Gravitationl constant

k = G*M*m

E = -k/(2*a) #E = energy

p = L**2/(m*k)

c = 1 + (2*E*L**2)/m*k**2

e = sqrt(-c) #e = eccentricity

def fx(x):

r = p/(1 + e*cos(x))

return r

n = 1000

phi =linspace(0,2*pi,n)

radius = zeros([n])

theta = zeros([n])

x = zeros([n])

y = zeros([n])

for i in range(0,n):

radius[i] = fx(phi[i])

theta[i] = 180*phi[i]/pi

for i in range(0,n):

x[i] = radius[i]*cos(phi[i])

for i in range(0,n):

y[i] = radius[i]*sin(phi[i])

print('r =',radius)

print('x =',x)

print('y =',y)

plt.plot(x,y)

plt.show()

这是我的数学书截图:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Python行星轨道模拟程序,其中包括太阳、地球和月亮的轨道运动。该程序使用了Pygame库来实现图形化界面。 ```python import pygame import math # 初始化Pygame pygame.init() # 置窗口大小 size = (800, 600) screen = pygame.display.set_mode(size) pygame.display.set_caption("Solar System") # 加载图片 sun = pygame.image.load(r"F:/solar-system/image/sun_bg.png") earth = pygame.image.load(r"F:/solar-system/image/earth_bg.png") moon = pygame.image.load(r"F:/solar-system/image/moon_bg.png") # 置初始位置和速度 pos_e_x, pos_e_y = 400, 200 pos_m_x, pos_m_y = pos_e_x + 50, pos_e_y + 10 speed_e = 0.1 speed_m = 0.2 roll_e = 0 roll_m = 0 # 游戏循环 done = False clock = pygame.time.Clock() while not done: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: done = True # 清屏 screen.fill((0, 0, 0)) # 绘制太阳 screen.blit(pygame.transform.scale(sun, (170, 170)), (327, 167)) # 计算地球位置 roll_e += speed_e pos_e_x = int(400 + 150 * math.sin(roll_e)) pos_e_y = int(300 + 150 * math.cos(roll_e)) # 绘制地球 screen.blit(pygame.transform.scale(earth, (50, 50)), (pos_e_x, pos_e_y)) # 计算月亮位置 roll_m += speed_m pos_m_x = int(pos_e_x + 50 * math.sin(roll_m)) pos_m_y = int(pos_e_y + 50 * math.cos(roll_m)) # 绘制月亮 screen.blit(pygame.transform.scale(moon, (20, 20)), (pos_m_x, pos_m_y)) # 更新屏幕 pygame.display.flip() # 控制帧率 clock.tick(60) # 退出Pygame pygame.quit() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值