sympy与numpy混合使用

写在前面:符号计算与矩阵运算结合是十分常见的!这就需要sympy与numpy混合使用!此时存在一个问题:sympy有自己“独有的”的数据类型,在混合使用时需要把sympy数据类型统一成numpy和python中的普通数值

说明:numpy数组/矩阵中是可以有sympy的“符号元素”的!这点已亲测!



(1)在numpy中进行符号赋值:

需要用float和int等进行类型转换:float(f.eval())

示例:

x,y = sympy.symbols('x y')

f = (x+y)**2 + (x+1)**2 + (y+3)**2

# 一阶导数:

fx = sympy.diff(f,x)

fy = sympy.diff(f,y)

grad_f1 = np.array([[fx],[fy]])    # numpy矩阵存入sympy字符元素

# 赋值:

x_tmp = 10

y_tmp = -1.5 

grad_f1 = np.array([[float(fx.evalf(subs={x:x_tmp,y:y_tmp}))],

                               [float(fy.evalf(subs={x:x_tmp,y:y_tmp}))]])     

# 用float进行类型转换!方便后面numpy进行普通数值计算!现在grad_f1就是普通数值矩阵!

你可能感兴趣的:(sympy与numpy混合使用)