鼠尾草坡场和微分方程

时间:2015-11-06 20:08:13

标签: python matplotlib differential-equations sage

我试图在sage笔记本中绘制斜率场和几种独特的解决方案,但是我的斜率场与解决方案不匹配。

c = var('c')
y = (ln(x)+c)/x
show(y)
p1 = plot_slope_field( y, (x,0,5), (c,-5,5))

for i in range(-5,5):
    p1 = p1 + plot(y(c=i),x,0,5, ymin=-5, ymax=5)
p1

plot P1

我希望斜率场近似于附近函数的斜率,但它们看起来根本不匹配。

2 个答案:

答案 0 :(得分:3)

斜率不应包含积分常数。斜率字段是微分方程(1,f(x,y))的向量字段y'=f(x,y)。因此,您需要通过消除常量c来找到函​​数族的ODE。

等式

y = (ln(x)+c)/x

常量c的隔离给出了

c = xy - ln(x)

和导数方程/隐式ODE

0 = xy' + y - 1/x

因此,坡度应为坡度

y' = f(x,y) = -y/x + 1/(x*x)
x = var('x')
y = var('y')
c = var('c')
ysol = (ln(x)+c)/x
show(ysol)
p1 = plot_slope_field( -y/x+1/(x*x), (x,0,5), (y,-5,5))

for i in range(-5,5):
    p1 = p1 + plot(ysol(c=i),x,0,5, ymin=-5, ymax=5)
p1

slope field by sage server

答案 1 :(得分:1)

我发现了我的错误,@ kcrisman也指出了它,我忘了区分(线性化)斜率场的函数。

这解决了它:

p1 = plot_slope_field( diff(y), (x,0,5), (c,-5,5))

我们得到:

proper_field