如何知道绘图的方程式?

How to know the equation of the plot graphs?

我绘制了一阶非线性微分方程。 但我不知道如何知道地块的方程式。 请原谅我的无知

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
import math

def dy_dx(y,x,z):
    c_1 = 5.0 / (1.38 * 1223.0 * pow(10.0, 28.0)*pow(z,3.0))
    c_2 = pow(10.0, 5.0)
    return c_1 * ( y/math.sqrt(1.0+pow(y, 2.0)) ) * ( ((1.0-pow(y, 3.0))/(z* pow(y,(1.0/3.0)))) - (y * c_2) )

xs = np.linspace(0, pow(10.0, 12.0), pow(10.0, 6.0))
y_0 = 1.0
z = 0.00001
y1 = odeint(dy_dx, y_0, xs, args=(z,))
z = 0.000015
y2 = odeint(dy_dx, y_0, xs, args=(z,))
y1 = np.array(y1).flatten()
y2 = np.array(y2).flatten()

plt.rcParams.update({'font.size': 10})
plt.ylim(0,1.0)
plt.xlabel("x")
plt.ylabel("y")
plt.plot(xs, y1, 'r-')
plt.plot(xs, y2, 'b-')
plt.grid(True)
plt.show()

任何符号解都不太可能存在,右边有三次方和三次方根。定性行为的相关因素是

y^(2/3)*(1-y^3-c2*z*y^(4/3))

剩下的是正的非零因子。一维动态非常简单,右边的根是平衡位置,中间的符号告诉你那个区间的解是下降还是增长。

  • y=0 你可以有类似于 y'=C*y^(2/3) 的解决方案分支,因为那里的函数不是本地 Lipschitz。

  • 多项式u^9+a*u^4-1=0a=c_2*z恰好有一个正根u_asty_equi=u_ast^3,对于小的a是接近的到u=1(下一个近似值u=1/(1+a)^(1/4)~1/(1+a/4)),对于接近u=a^(-1/4)y=a^(-3/4)的大a;和零个或两个负根。由于 ODE 的右侧在超过 y_equi 时从正变为负,这是一个稳定的平衡。

    在您使用 c2=1e5z=1e-5z=1.5e-5 的示例中,一个人得到 a=1a=1.5 中间值定理告诉我们知道在 0 和 1 之间有一个根,第一种情况是 u_ast=0.89345331y_equi=0.71320698,第二种情况是 u_ast=0.84759991y_equi=0.60893748。这正是您在情节中看到的。

这就是您希望从这个等式中提取正数的所有理论内容 y