问题标签 [lambdify]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

python - 将 N 个矩阵相乘 - 符号计算

将 20 个相同的 6x6 矩阵 (M) 相乘的最有效(最快)方法是什么?

0 投票
0 回答
54 浏览

python - 我想用一组值提供一个lambdify生成的函数,我怎样才能最好地做到这一点?

我已经用lambdify生成了一个函数,如果我一一指定所有特定参数,则只能使用该函数输出值。我希望能够使用 q, numpy 数组来提供函数 phi_num。像 phi_num(q)。

我尝试将 numpy 数组更改为元组并尝试遍历所有 val,如图所示。

如图所示,phi_calc 输出值,但选项 b 和 a 不输出。

0 投票
1 回答
181 浏览

python-3.x - 大量的 sympy lamdify 问题

我在使用sympy.lambdify. 我有一个相当简单的符号表达式,仅涉及平方根、正弦和余弦以及一些大数(由此处未显示的程序的其他部分生成)。Lambdify 确实适用于单个浮点数,但不适用于 numpy 数组。但是,这些对于以后的绘图非常有帮助。

我得到的错误是

这是一个mwe。请注意,它expr1可以正常工作,而expr2不能。任何解决此问题的帮助将不胜感激。

python 3.7.3
numpy
1.16.3 sympy 1.14

编辑:
我不能直接修改expr2. 它只是以这种形式出现在此处以提供 mwe。然而,在实际代码中,它被生成为矩阵的特征值,并且需要相当长的时间来计算。

0 投票
1 回答
205 浏览

python - 如何使用 lambdify 评估我的函数?

我有一个包含多个变量的表达式,让我们说如下:

我有三个变量列表,如下所示:

我想为变量的每个元素评估我的函数。我知道我可以定义如下内容:

这给了我 14 作为期望的结果。但是如何将 x、y 和 z 作为三个列表传递(而不是单独编写元素)并获得如下结果:

似乎使用lambdify是评估函数的更有效方法,基于此注释: https ://www.sympy.org/scipy-2017-codegen-tutorial/notebooks/22-lambdify.html

谢谢。

0 投票
1 回答
84 浏览

python - 参数为函数的lambdified函数的Lambda

我目前正在尝试创建一个 lambda 函数,它将一个变量传递给作为lambdified 函数的输入的函数和lambdified 函数本身。我的 Python 版本是 2.7,我的 sympy 版本是 1.3。

当传递正确的参数 (Y) 时,我能够让lambdify 函数 (f) 正常工作。然后我尝试创建一个 lambda 函数,它将一个变量 (z) 传递给一个函数 (controlFunc),然后这两个函数都将被输入到我的lambdify 函数 (f) 中。

问题似乎是 lambda 函数每次迭代都将使用最新的 lambdify 函数(它应该)并更新所有 PREVIOUS lambda 函数以使用最新的 lambdify 函数。我相信这不是我的代码中的错误,但我很容易出错。

我尝试将lambdify 函数设置为一个可变变量,然后从中创建一个lambda 函数。我尝试在 lambda 函数中使用整个 lambdify 函数。我什至尝试使用列表理解(我相信这是正确的术语)来评估列表中的每个 lambda。

我知道 func_lambda(X) 的输出应该是 [100.,200.,300.,400.,500.] 的数组。

我当前的结果是 [500.,500.,500.,500.,500.] 的数组。

0 投票
2 回答
634 浏览

python - “添加”对象在数值和符号表达式中没有属性“sinh”错误?

最终,我的目标是在数值上区分表达式“u”(参见代码)相对于 t、相对于 X 和相对于 X 的三倍。

第一个想法是只用数字写下表达式,为 X 和 t 提供数组(linspaces)。这导致错误“'Add' object has no attribute 'cosh'”。关于这个错误,我唯一知道的是它表明我应该使用 sympy-functions 而不是 numpy-functions 或其他方式。但是,使用符号策略表达式(sympy-functions)然后尝试lambdify 给出了同样的错误,这次没有属性'sinh'。

我不知道我哪里错了。符号表达式定义得很好,只有当我将第一个lambdify添加到代码中时才会发生错误。

有谁知道如何修复我的代码以防止此错误,或者知道另一种方法来数字区分 u,如上所述?

0 投票
1 回答
258 浏览

python - sympy lambdify 与元组中的函数参数?

假设您已经计算fu出 sympy 计算的结果:

在哪里

是符号。现在你想转向fu(显然)两个变量的 numpy 函数。您可以通过以下方式做到这一点:

你生产fun(x,y). 有没有办法lambdify可以产生fun(z)with x,y=z,即产生以下功能:

0 投票
3 回答
319 浏览

python - 如何使用 sympy.lambdify 和 Max 函数来替换 numpy.maximum 而不是 numpy.amax?

我正在尝试用 sp.Max(x, 0) 内部的大分析表达式进行lambdify。我想使用 numpy 来向量化我的计算,所以 x 将是一个数组。我需要 x 和 0 的元素最大值。不过,默认情况下,sympy 将 sp.Max 更改为 np.amax。它沿着轴找到最大值,这不是我需要的。lambdify 中的“modules”关键字不像我预期的那样工作。我试过了:

它给:

sp.Max 出于某种原因更改为 amax。

如果 'numpy' 未包含在 'modules' 列表中,它会简单地跳过所有其他功能。我也尝试在列表中交换 dict 和 'numpy',但没有帮助。请澄清一下,怎么了?这是同情的错误吗?

0 投票
0 回答
44 浏览

python - 如何评估此示例的lambdify 函数?

我是 Python 新手。我正在尝试 Sympy 和 Numpy。

我在 sympy 中有这个表达式如下

x值范围就像说a = numpy.linspace(0,numpy.pi)

n 是一个简单的数组,比如说b = numpy.linspace(1,6,6)

在论文中,首先我将替换表达式中的 n 个值,然后在 x 的每个值处评估表达式。

最后一步f(a,b)不会做我的工作。它显然不会。

我试过了,x = [numpy.linspace(0,numpy.pi) for x in range(6)] 但这不是我猜的方式。

我该怎么做?

编辑。

但我想达到 f(a,50)。

0 投票
1 回答
226 浏览

python - 将 sympy 函数转换为 lambda 函数

我一直在尝试转换我的 sympy 函数变量,它看起来像这样:-

(atan(−3/)+2.66602685430536⋅10−6)^2+(atan(−2/)−0.0896686524911619)^2+(atan(−1/)−0.16739555984988)^2

函数表达式

为此,我一直在尝试使用 lambdastr 和 lambdify。通过以下方式:-

但不断收到此错误:-

AttributeError:“符号”对象没有属性“atan”

我发现这是因为 lambdastr 通过以下方式为 atan 函数添加了数学模块:-

λ x,z: (( math.atan ((z - 3)/x) + 2.66602685430536e-6) 2 + (**math.atan ((z - 2)/x) - 0.0896686524911619) 2 + (** math.atan ((z - 1)/x) - 0.16739555984988)**2)

所以,我像这样单独实现了 atan:-

这确实给了我一个 lambda 函数,但它似乎不起作用

给出一个错误:

在 _lambdifygenerated(x, z)

1 def _lambdifygenerated(x, z):
----> 2 return (Lambda((x, z), (tan_inv((z - 3)/x) + 2.66602685430536e-6)**2 + (tan_inv(( z - 2)/x) - 0.0896686524911619)**2 + (tan_inv((z - 1)/x) - 0.16739555984988)**2))

NameError:名称“Lambda”未定义

有人可以帮我解决这个问题吗?

谢谢