sympy:Lambdify 不转换 sqrt 表达式

亚历山大·蒂勒

我尝试对一些计算出的特征值进行参数化,但出现以下错误。

File "<string>", line 1, in <lambda>
AttributeError: 'Symbol' object has no attribute 'sqrt'

为了避免命名空间冲突(在这篇文章中解释了Python 中出现此错误的原因(AttributeError: 'Mul' object has no attribute 'cos')?)我使用了以下导入命令而不是from sympy import *

import sympy as sp
import numpy as np

def calculate_general_eigenvalues():
    Y, Z = sp.symbols("Y,Z")
    Rzy = sp.symbols("Rzy", positive=True)

    eigenvalues = [Y + Z,Rzy*Y + sp.sqrt(Rzy*Z)]

    print("eigenvalues of the system ")
    print(eigenvalues[0])
    print(eigenvalues[1])
    lam1 = sp.lambdify((Y,Z), eigenvalues[0] ,modules=['numpy'])
    lam2 = sp.lambdify((Y,Z), eigenvalues[1] ,modules=["numpy", {'sqrt': np.sqrt}])
    print(lam1(1,1))
    print(lam2(1,1))


    return (lam1,lam2)


l1,l2 = calculate_general_eigenvalues()

我还在这里找到了第二个提示(Python: SymPy lamdify abs for use with NumPy)是否包含该命令,lambdify(x, f(x), ["numpy", {'Abs': numpy.abs}])但如您所见,它在我的代码中不起作用

我该如何解决我的问题?

用户6655984

问题不在于 sqrt。您的第二个特征值涉及 Rzy,您在对其进行lambdify 时未将其包含在变量中。解决这个问题,它可以简单地与modules="numpy". 无需重新映射 sqrt:NumPy 知道 sqrt,只是不知道如何将其应用于 Rzy 等符号。

lam1 = sp.lambdify((Y,Z), eigenvalues[0], modules='numpy')
lam2 = sp.lambdify((Y,Z,Rzy), eigenvalues[1], modules='numpy')
print(lam1(1,1))
print(lam2(1,1,1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得sympy来简化包含sqrt(2)/ 2的表达式?

来自分类Dev

将表达式的sympy数组转换为numpy数组

来自分类Dev

将字符串转换为 SymPy 表达式?

来自分类Dev

如何使sympy简化表达式llike(a ** 2-4-* b)* sqrt(1 /(a ** 2-4-* b))

来自分类Dev

使用lambdify将涉及向量转置的表达式转换为数值函数

来自分类Dev

将sympy表达式转换为向量以查找线性独立子集

来自分类Dev

使用SymPy将符号表达式转换为Python函数

来自分类Dev

sympy TypeError:无法将表达式转换为浮点型

来自分类Dev

将sympy表达式转换为向量以查找线性独立子集

来自分类Dev

表达式不匹配正则表达式

来自分类Dev

在sympy中智能重写表达式

来自分类Dev

sympy中表达式的数值

来自分类Dev

Sympy:从表达式获取函数

来自分类Dev

从sympy表达式生成python代码?

来自分类Dev

Sympy-比较表达式

来自分类Dev

在sympy中运行表达式的AST

来自分类Dev

获取sympy表达式的操作

来自分类Dev

从SymPy表达式中提取数字

来自分类Dev

sympy中表达式的数值

来自分类Dev

解决 sympy 中的表达式列表

来自分类Dev

正则表达式或不匹配

来自分类Dev

正则表达式不匹配

来自分类Dev

“不包含”动态lambda表达式

来自分类Dev

传递表达式而不评估它

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式“不包含”

来自分类Dev

正则表达式不匹配

来自分类Dev

正则表达式不运行

来自分类Dev

正则表达式不匹配