【发布时间】:2020-12-05 14:02:36
【问题描述】:
问题:
TypeError:float() 参数必须是字符串或数字,而不是“函数”
ValueError:x 和 y 必须具有相同的第一个维度,但形状为 (10,) 和 (1,)
第 32 行 grap_plot, = mplt.plot(x,F,'r')
总结
我有一个 sympy 函数(“U”),U 取决于 x 和 t,它们是符号变量,然后我使用 lambdify 从 sympy 切换到 numpy,因为我想使用取决于 t 的滑块绘制 U,但我不能
from sympy import *
import numpy as np
from sympy.plotting import plot
import matplotlib.pyplot as mplt
from matplotlib.widgets import Slider
init_printing()
( x, t, n) = symbols('x t n' , positive = True)
Ro= Rational(10,1)**-3 #[Kg/m]
T= Rational(49) #[N]
L = Rational(1) #[m]
c = sqrt(T/Ro)
f = x*(x-1)**2
b = simplify((2/L)*integrate(f*sin(n*pi*x/L),(x,0,L)))
U = expand(summation(b*sin(n*pi*x/L)*cos(c*n*pi*t/L),(n,1,10)))
U0 = simplify(U.subs({t:0}))
mplt.style.use('seaborn-whitegrid')
p = plot(f,(x,0,L))
F = (lambdify(['x','t'], U ,'numpy'))
F0 = (lambdify('x', U0,'numpy'))
x = np.arange(0, L, 0.1)
fig = mplt.figure(figsize=(8,3))
grap_ax = mplt.axes([0.1, 0.2, 0.8, 0.65])
slider_ax = mplt.axes([0.1, 0.05, 0.8, 0.05])
mplt.axes(grap_ax)
mplt.title('Movimiento de la cuerda')
grap_plot, = mplt.plot(x,F,'r')
mplt.xlim(0, L)
mplt.ylim(-0.15, 0.15)
t_slider = Slider(slider_ax,'t',1, 10,0)
def update(t):
grap_plot.set_ydata(F)
fig.canvas.draw_idle()
t_slider.on_changed(update)
mplt.show()
我尝试了很多,但我无法修复它,请帮助,谢谢。
【问题讨论】:
-
请提供预期的MRE。在故障点跟踪有问题的值。
-
grap_plot, = mplt.plot(x,F,'r') 线错误。
-
我有一个 sympy 函数(“U”),U 取决于 x 和 t,它们是符号变量,然后我使用 lambdify 从 sympy 切换到 numpy,因为我想使用滑块绘制 U这取决于 t,但我不能。
标签: python numpy matplotlib slider sympy