Я пытаюсь создать контурную диаграмму гравитационного потенциала системы из 2 тел.Ввод массы двух тел и их разделения.Я продолжаю получать сообщение об ошибке
TypeError: Вход z должен быть как минимум массивом 2x2.
, который, как я полагаю, относится к термину PHI в ax.contour (X, Y, PHI).
Я пытался изменить x, y и phi, чтобы они соответствовали (я не понимаю, почему они еще не совпадают, потому что phi генерируется из значений x и y).Кроме того, я никогда не использовал контурный график раньше, и у меня ограниченный опыт программирования, поэтому, пожалуйста, прости мое невежество.
import matplotlib.pyplot as plt
import numpy as np
n=100
#x and y evenly spaced values
x=np.arange(-n,n,0.01)
y=np.arange(-n,n,0.01)
X,Y=np.meshgrid(x,y)
r=np.array([X,Y])
#r is the scalar distance from the center that each test particle resides at
#r=np.array([(X**2+Y**2)**0.5])<--this was used to generate the output image
def Lagrange(m1,m2,a):
mtot=m1+m2
#the distance from the bodies to the center of mass of the system
x1=-(m2/mtot)*a
x2=(m1/mtot)*a
omsq=mtot/(a**3) #omega squared term
def phi(r):#gravitational potential function
phi= -m1/abs(r-x1)-m2/abs(r-x2)-0.5*omsq*r**2
return phi
#I also had a vector plot included in this code (among other details),
#but decided to omit them as it's not relevant to the error I am receiving.
fig=plt.figure()
ax=fig.add_subplot(111)
PHI=np.meshgrid(phi(r))
ax.contour(X,Y,PHI) #3rd dimension is the contour lines
plt.show()
Lagrange(3.0,1.0,1.0)
Я ожидаю, взяв входные координаты x и y системы (их длины совпадают) и используя сгенерированные выходные значения из функции phi (которая также должна соответствовать длине x и y) создать контурный график, где контурные линии будут представлять гравитационный потенциал, заданный фи.
Вот пара изображений, которые я упомянул в комментариях. код Python (слева) и рабочий код Matlab (справа)