如何用Python自动替换SymPy符号变量求解函数斜率及vy?
自动代入SymPy导数表达式变量值的实现方法
优化后的代码
from sympy import * import numpy as np x = symbols('x') y = sin(0.5*x) vx = -15 x_v = 2*np.pi # 对目标函数求导,得到符号化的斜率表达式 slope = diff(y) print("符号斜率表达式:", slope) # 自动将符号变量x替换为指定位置x_v,得到该点的实际斜率 s = slope.subs(x, x_v) theta = atan(s) vy = tan(theta) * vx print("y方向速度vy:", vy)
实现思路
SymPy的符号表达式自带subs()方法,专门用于替换符号变量:
- 调用
diff(y)得到的slope是一个符号表达式(此处为0.5*cos(0.5*x)) - 使用
slope.subs(x, x_v)可以一键将表达式中的x替换为x_v的数值,无需手动推导并改写斜率公式 - 这种方式完全通用,无论目标函数
y是什么可导形式,只需保持求导+替换的逻辑,就能适配任意位置的斜率计算
扩展说明
如果需要同时替换多个符号变量,subs()支持传入字典参数,例如:
a, x = symbols('a x') y = sin(a*x) slope = diff(y) # 同时替换a和x为指定值 s = slope.subs({a: 0.5, x: 2*np.pi})
内容的提问来源于stack exchange,提问作者Anthony
相关产品推荐
相关产品推荐

