我第一次尝试学习微分几何和渐近性。使用渐近性,我能够定义参数曲线的表达式并求出速度。我试图根据下面的定义计算曲线的长度,但无法计算出如何使用渐近来计算。有没有人能指点一下如何计算曲线长度?
下面是我拥有的当前代码(使用symmy&matplotlib)。
# Expression of Parametric Curve
t = sympy.symbols('t')
x_expr = sympy.cos(t)
y_expr = sympy.sin(t)
f_x = sympy.lambdify(t, x_expr, 'numpy')
f_y = sympy.lambdify(t, y_expr, 'numpy')
# Differential of Parametric Curve
diff_x = sympy.lambdify(t, sympy.diff(x_expr, t), 'numpy')
diff_y = sympy.lambdify(t, sympy.diff(y_expr, t), 'numpy')
t_values = np.linspace(0, 2 * np.pi, 80, endpoint=True)
X = f_x(t_values)
Y = f_y(t_values)
# Plot the curve
clear_figure()
ax = create_subplot()
ax.set_xlim(-1.5, 1.5)
ax.set_ylim(-1.5, 1.5)
ax.scatter(X, Y, s=4)
plt_canvas.draw()
# Plot the velocities
t1_values = np.linspace(0, 2 * np.pi, 9, endpoint=True)
for t1 in t1_values:
ax.arrow(f_x(t1), f_y(t1), diff_x(t1), diff_y(t1), head_width=0.02, head_length=0.02, ec='red', linewidth=0.1)
plt_canvas.draw()
1条答案
按热度按时间2uluyalo1#
从
geometry
,您可以定义一条参数曲线,它可以告诉您该曲线的长度。这是你所期待的吗?SymPy还不支持3-D曲线,但通常可以通过参数定义点,然后在感兴趣的范围内进行积分来实现这一点。