擅长:python、mysql、java
<p><code>Matrix(final)</code>创建和显式矩阵与您的个别方程。将它们保留在矩阵中可能比较方便,这样您对一个条目所做的任何操作都可以对所有条目执行。为此,请将要执行的操作定义为<code>applyfunc</code>的函数参数:</p>
<pre><code>>>> ex = Matrix(final)
>>> ex = ex.applyfunc(expand)
>>> ex = ex.applyfunc(lambda i: collect(i, dt))
...
</code></pre>
<p>对于打印经济,我使用带有紧凑符号项的矩阵来计算相同的值,然后在简化的矩阵上运行<code>cse</code>得到:</p>
^{pr2}$
<p>对非对易表达式的有限支持也可用,在这种情况下可以帮助:</p>
<pre><code>>>> A, x = symbols("A x", commutative=False)
>>> dt = symbols('dt')
>>> k1 = A*x
>>> k2 = A*(x + S(1)/2*k1*dt)
>>> k3 = A*(x + S(1)/2*k2*dt)
>>> k4 = A*(x + k3*dt)
>>> final = dt*S(1)/6*(k1 + 2*k2 + 2*k3 + k4)
>>> final.expand()
dt**4*A**4*x/24 + dt**3*A**3*x/6 + dt**2*A**2*x/2 + dt*A*x
>>> factor(_)
dt*A*(dt**3*A**3/24 + dt**2*A**2/6 + dt*A/2 + 1)*x
</code></pre>
<p>但并非所有的简化例程都能识别nc(这是一个已知的问题):</p>
<pre><code>>>> collect(final,x)
Traceback (most recent call last):
...
AttributeError: Can not collect noncommutative symbol
</code></pre>