如何解决我的 odeint 函数无法解决一个非常简单的微分方程而且我的 Python 技能水平约为 -1/10
我认为这与我必须在第二个 ODE 的函数中使用来自我的一阶、二阶 ODE 的结果这一事实有关。我一生都无法弄清楚这一点,而且我已经在谷歌上搜索了几个小时但没有运气......我相信你们中的大多数人都会马上看到问题所在
这是目前唯一没有报错的代码,但是剧情只是一条直线,不可能是对的
这是我目前的代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint,trapz,simps
r = np.linspace(0.001,5,5000)
M_encl_0 = 0
M_0 = 1 ## for simplicity in this part
w0 = [1,0] ## first entry is rho_tilde(0),second entry is x(0)
def function_rho(w,r):
rho,x = w
dwdx = [x,(1/rho)*(x**2) - (2/r)*x - 4*np.pi*M_0*(rho**2)]
return(dwdx)
soln_rho = odeint(function_rho,w0,r)
rho_tilde = soln_rho[:,0]
def function_M_encl(rho_tilde,r):
dM_encldr = 4*np.pi*(r**2)*rho_tilde
return(dM_encldr)
soln_M_encl = odeint(function_M_encl,M_encl_0,r)
plt.plot(r,soln_rho[:,0])
plt.xlabel("r tilde")
plt.ylabel("rho tilde")
plt.show()
plt.plot(r,soln_M_encl)
plt.xlabel("r tilde")
plt.ylabel("Enclosed Mass tilde")
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。