【问题标题】:Sympy function as MatrixSympy 函数作为 Matrix
【发布时间】:2023-02-23 04:51:55
【问题描述】:

有没有一种简单的方法来定义具有多个输出的 sympy 函数。我想要这样的东西(目前我正在用循环构造它,但它看起来很愚蠢):

f1 = Function('f1')(x)
f2 = Function('f2')(x)
...
fn = Function('fn')(x)

f = Matrix([f1,f2 ..., fn])

如果有一个实现来构建这个,我会很高兴听到。

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    做你所做的事情需要以某种方式循环。这是一种方法:

    >>> 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 ......但是您想要使用此函数列表做什么?)

    【讨论】:

      【解决方案2】:

      您可能正在寻找 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)]])
      

      【讨论】:

      • FunctionMatrix 不像 Function 那样工作
      • 是否可以使f(或矩阵)依赖于另一个变量t,这样矩阵就可以与t区分开来?
      【解决方案3】:

      对于具有不同函数作为条目的矩阵

      >>> M = sp.Matrix(2, 3, lambda i, j: sp.Function(f'f_{i}{j}')(x))
      [[f00(?) f01(?) f02(?)]
       [f10(?) f11(?) f12(?)]]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 1970-01-01
        相关资源
        最近更新 更多