只有size-1数组可以转换为Python标量:尝试用的方程绘制圆形轨道.圆形



我对python还比较陌生,所以请原谅我在代码中的任何废话。我正试图使用我的经典力学教科书(约翰·R·泰勒的经典力学(中的方程,在python中编程一颗行星的圆形轨道(我刚刚使用了天王星和太阳的质量(。我想我可以用这些方程画一个函数y,它等于一个圆的方程,其中c_square是半径,x是用来画圆的值的数组。让我知道如何改进代码,或者我甚至朝着正确的方向前进。

import matplotlib.pyplot as plt 
import numpy as np  
import matplotlib
import math
fig = plt.figure()
ax = fig.add_subplot()
m_uranus = 8.681 * 10**(25)
m_sun = 1.989 * 10 **(30) 
G = 6.67430 * 10**(-11)
mu = (m_uranus * m_sun)/(m_uranus + m_sun)
l = (1.7 * 10**(42)) * 1000 * 24 * 60 * 60 
ang_squared = l ** 2
c = (ang_squared)/(G * m_uranus * m_sun * mu)
c_squared = c**2 
print(m_sun, mu,  m_uranus,  ang_squared, c)
x = np.arange(-100, 100, 1)
y = math.sqrt(c_squared - x) 
plt.plot(x, y)
plt.show()

正如@JohanC所提到的,使用numpynp.sqrt((而不是math.sqrt((修复您的错误,这里的修复方法是(删除了不必要的库(:

import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot()
m_uranus = 8.681 * 10 ** 25
m_sun = 1.989 * 10 ** 30
G = 6.67430 * 10 ** (-11)
mu = (m_uranus * m_sun) / (m_uranus + m_sun)
l = (1.7 * 10 ** 42) * 1000 * 24 * 60 * 60
ang_squared = l ** 2
c = ang_squared / (G * m_uranus * m_sun * mu)
c_squared = c ** 2
print(m_sun, mu, m_uranus, ang_squared, c)
x = np.arange(-100, 100, 1)
y = np.sqrt(c_squared - x)
plt.plot(x, y)
plt.show()

希望,这将帮助你!

相关内容

  • 没有找到相关文章

最新更新