Python(sympy):如何用sympy平滑地绘制第二个ODE解?



我正在学习结构动力分析。我解决了一个问题:1个自由度

问题是M *y'' + cy' + ky = 900 sin(5.3x)m=6938.78, c=5129.907, k=379259, y为x的函数

我解决了它的响应使用Python和Sympy库。我用pyplot画出了响应。但它的形状不像下面那样光滑输入图片描述

我怎样才能画出流畅的响应?

我试图通过numpy替换每个x到y来平滑地绘制,但无法将x插入到sin(5.3 3x)中。

from sympy import *
import matplotlib.pyplot as plt
x, y=symbols("x, y")
f=symbols('f',cls=Function)
y=f(x)
eq=Eq( 6938.78*diff(y,x,2)  +  5129.907*diff(y,x) + 379259*y-900*sin(5.3*x),0)
eq_done=dsolve(eq,y, ics={  f(0):0,  diff(y,x).subs(x,0):0   }  )
plot(eq_done.rhs,(x,0,10))

要获得更平滑的线条,您可以关闭自适应算法并设置每行的点数:

plot(eq_done.rhs,(x,0,10), adaptive=False, nb_of_points=1000)

此外,help()函数是您的朋友,因为它允许快速访问特定函数的文档。执行help(plot),了解plot命令的详细信息。

最新更新