微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我的 odeint 函数无法解决一个非常简单的微分方程而且我的 Python 技能水平约为 -1/10

如何解决我的 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 举报,一经查实,本站将立刻删除。