【发布时间】:2023-02-23 04:51:55
【问题描述】:
有没有一种简单的方法来定义具有多个输出的 sympy 函数。我想要这样的东西(目前我正在用循环构造它,但它看起来很愚蠢):
f1 = Function('f1')(x)
f2 = Function('f2')(x)
...
fn = Function('fn')(x)
f = Matrix([f1,f2 ..., fn])
如果有一个实现来构建这个,我会很高兴听到。
【问题讨论】:
有没有一种简单的方法来定义具有多个输出的 sympy 函数。我想要这样的东西(目前我正在用循环构造它,但它看起来很愚蠢):
f1 = Function('f1')(x)
f2 = Function('f2')(x)
...
fn = Function('fn')(x)
f = Matrix([f1,f2 ..., fn])
如果有一个实现来构建这个,我会很高兴听到。
【问题讨论】:
做你所做的事情需要以某种方式循环。这是一种方法:
>>> f = [Function('f%i' % i)(x) for i in range(5)]; f
[f0(x), f1(x), f2(x), f3(x), f4(x)]
这是另一个:
>>> f = [i(x) for i in symbols('f:5', cls=Function)]; f
[f0(x), f1(x), f2(x), f3(x), f4(x)]
(如果需要,请将 f 换成 Matrix ......但是您想要使用此函数列表做什么?)
【讨论】:
您可能正在寻找 FunctionMatrix,它的工作方式与 Function 类似,但将矩阵坐标映射到矩阵。
查看它的documentation。文档字符串中的示例:
>>> from sympy import Function
>>> f = Function('f')
>>> X = FunctionMatrix(3, 3, f)
>>> X.as_explicit()
Matrix([
[f(0, 0), f(0, 1), f(0, 2)],
[f(1, 0), f(1, 1), f(1, 2)],
[f(2, 0), f(2, 1), f(2, 2)]])
【讨论】:
f(或矩阵)依赖于另一个变量t,这样矩阵就可以与t区分开来?
对于具有不同函数作为条目的矩阵
>>> M = sp.Matrix(2, 3, lambda i, j: sp.Function(f'f_{i}{j}')(x))
[[f00(?) f01(?) f02(?)]
[f10(?) f11(?) f12(?)]]
【讨论】: