我正在尝试对方程进行数值积分
去寻找. 我已经定义了以下内容:
我的代码如下:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
def dP_dr(x, r):
return -(x+density(r, p_c, R))*(mass(r, p_c, R)+4*np.pi*r**3*x)/(r*(r-
2*mass(r, p_c, R)))
def mass(r, p_c, R):
return 4*np.pi*p_c*(5*r**3*R**2-3*r**5)/(15*R**2)
def density(r, p_c, R):
return p_c*(1-(r/R)**2)
p_c = 7*10**17 #central density
P_c = 1.6*10**34 #central pressure
R = 10 #radius
deltaR = 0.01
r = np.linspace(deltaR, R, int(R/deltaR))
P = odeint(dP_dr, P_c, r)
plt.figure()
plt.plot(r, P, label='Pressure')
plt.xlabel('Radius (km)')
plt.title('Neutron Star')
plt.legend(loc=0)
plt.show()
我不确定出了什么问题,但我收到了溢出错误。图表结果也是垃圾。压力,也应该减少,但它会以非常尖锐的尖峰跳跃。对我做错的任何帮助将不胜感激。