我的 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 (将#修改为@)