level 3
筇殇love
楼主

求大佬翻牌,利用fold函数与sum函数求迭代,当mm=50时,计算时间要将近三个小时,可是我还需要将mm取到更大,比如说100,200,如何能减少计算时间呢?按理说用sum函数计算累加应该不费时间才对呀。代码如下:mm = 20;
\[Rho]sb = \[Rho]s[[1, 1]];
Gsb = G[[1, 1]];
vsb = Sqrt[Gsb/\[Rho]sb];
yyy = 32/9*\[Rho]sb*vsb^2*r0^3 +
I*\[Omega]*\[Pi]/2*\[Rho]sb*vsb^2*r0^4;
\[Alpha]\[Alpha][y_,
k_] := -(Gp*
Ip*(\[Lambda]*Cos[L*\[Lambda]] +
Sum[Vmk[i, k]*B[[i]]*Cos[\[Theta][i] + L*B[[i]]], {i, mm}]) +
y*(Sin[L*\[Lambda]] +
Sum[Vmk[i, k]*Sin[\[Theta][i] + L*B[[i]]], {i, mm}]))*(Gp*
Ip*(Sum[Rmk[i, k]*B[[i]]*Cos[\[Theta][i] + L*B[[i]]], {i,
mm}] - \[Lambda]*Sin[\[Lambda]*L]) +
y*(Cos[\[Lambda]*L] +
Sum[Rmk[i, k]*Sin[\[Theta][i] + L*B[[i]]], {i, mm}]))^-1
TT[y_, k_] := -Gp*
Ip (\[Lambda]*
Sum[(\[Alpha]\[Alpha][y, k]*Rmk[i, k] + Vmk[i, k])*
Cos[\[Theta][i]]*B[[i]], {i, mm}])/(\[Alpha]\[Alpha][y, k] +
Sum[Sin[\[Theta][i]]*(\[Alpha]\[Alpha][y, k]*Rmk[i, k] +
Vmk[i, k]), {i, mm}]);
TpM = Fold[TT, yyy, {1, 2}] // AbsoluteTiming