如何知道绘图图的方程?

问题描述 投票:0回答:1

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

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()

“

python differential-equations
1个回答
0
投票

非常不可能存在任何符号解决方案,在右边具有第三幂和第三根。定性行为的相关因素是

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)),对于大a ]接近u=a^(-1/4)y=a^(-3/4);和零或两个负根。当ODE越过y_equi时,其右侧的符号将从正变为负,因此这是一个稳定的平衡。

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

关于正y_equi=0.60893748,您希望从该方程式中提取出所有理论上的内容。

© www.soinside.com 2019 - 2024. All rights reserved.