回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我正在编写下面的一段代码,它创建一个numpy数组,并使用许多变量赋值来实现这一点。代码是由Maple优化生成的,这导致了大量变量赋值。该代码是由非常复杂的数学计算结果生成的,使用Maple无法进一步简化</p>
<pre><code> from math import sin, cos
import numpy as np
def __calc_tau(self, q, s_dot_v, omega_dot_ref, f_th, qm_ddot_ref):
SC_param_est = self.SC_param_est
SC_param = self.SC_param
t1 = SC_param[3] + SC_param_est[0] + SC_param[10] + SC_param[9] + SC_param[8]
t2 = cos(q[9])
t3 = sin(q[9])
t4 = SC_param[38] - SC_param[41]
t5 = SC_param[35] - SC_param[38] + SC_param[40]
t6 = t2 * SC_param_est[7]
t7 = t3 * SC_param_est[9]
t8 = t5 * SC_param[10]
t9 = (-t6 + t4 - t7) * SC_param_est[0]
t10 = SC_param[32] * SC_param[9]
...
t638 = ...
MCQ = np.array([[t1, 0, 0, 0, t37, t54, t54, -t127, t61, -t128, 0, -t126, t125, 0, -t91, -t106, -t106,
-t45 * t108 * s_dot_v[6] - t46 * t91, -t114 * t45 - t16 * t46,
-(t123 * t45 + t46 * t78) * SC_param_est[0], SC_param[7] * t124 * t1],
[0, t1, 0, -t31, 0, -t51, -t51, -t56, -t38, -t68, t126, 0, -t134, t129, 0, t131, t131,
t46 * t108 * s_dot_v[6] - t45 * t91, t114 * t46 - t16 * t45,
-SC_param_est[0] * (-t123 * t46 + t45 * t78), -t135 * t133 * t1], t86, t34, t36, t35,
[t54, -t51, 0, -t300, -t58, t89, t89, t115, t121, -t69, -t106, t131, 0, t450, t43, t55,
t55, t170, t76, t239, -t47], t10, t5, t2], dtype='float64')
</code></pre>
<p>我用我的程序测量了timeit部分的执行时间,这似乎是执行时间约为3ms的瓶颈(英特尔i7-8565U@1.8 GHz)</p>
<p>有没有适当的方法来加速这一进程</p>