為什麼Mathematica裡矩陣索引這麼慢,有沒有什麼辦法迴避或者改進?

時間 2021-06-01 06:41:24

1樓:

With[,

With},

Table[Sinh[Sin[mat[[i,j]]] Cos[mat[[k,l]]]] If[k<=i,0,1i,m},,,]]]~Total~-1//AbsoluteTiming

2樓:燕南

樓主要求的是矩陣的外積,用 3 x 2 的符號矩陣說明,就是

In[71]:= m = , , };

In[72]:= Total@

Sinh@Flatten[

Table[Outer[Times, Sin[m[[i]]], Cos[m[[i + 1i, 2}]]

Out[72]= Sinh[Cos[c21] Sin[c11]] + Sinh[Cos[c22] Sin[c11]] +

Sinh[Cos[c31] Sin[c11]] + Sinh[Cos[c32] Sin[c11]] +

Sinh[Cos[c21] Sin[c12]] + Sinh[Cos[c22] Sin[c12]] +

Sinh[Cos[c31] Sin[c12]] + Sinh[Cos[c32] Sin[c12]] +

Sinh[Cos[c31] Sin[c21]] + Sinh[Cos[c32] Sin[c21]] +

Sinh[Cos[c31] Sin[c22]] + Sinh[Cos[c32] Sin[c22]]

用這個方法算,應該可以避免過多的矩陣元操作。

In[224]:= m = 100; n = 10;

mat = RandomReal[1, ];

Total@Sinh@

Flatten[Table[

Outer[Times, Sin[mat[[i]]], Cos[mat[[i + 1i,

m - 1}]] // AbsoluteTiming

a = 0;

(Do[AddTo[a, Sinh[Sin[mat[[i1, j1]]]*Cos[mat[[i2, j2]]]]], , , , ]; a) // AbsoluteTiming

Out[226]=

Out[228]=

這篇文章裡有一些優化(加速)Mathematica / Wolfram 語言程式的常用方法:10 Tips for Writing Fast Mathematica Code

為什麼Mathematica的DSolve函式會解不出顯式解??

不同的軟體演算法不同,可能這題正好對不上MMA的胃口 這題maple和matlab mupad 都能算出來,不過兩者解的形式很不相同 In 6 DSolve v t 3 v t 2 v t 2 v t 2 2 v t v t v t t Out 6 說明書裡面是這麼說的,DSolve include...

為什麼 Mathematica 不能顯示積分過程,即使它能算出最終結果?

wydi 終於可以回答了。如果你採用基於模式匹配的方法,有乙個現成的 Rubi 庫可以用。wydi 全自動不定積分過程生成工具 by Mathematica 受限於方法,對於某些需要技巧的題是算不出的 但是內建的 Integrate 能出來 並且有些規則過於。一步到位,難以銜接。但是勝在速度快,以及...

mathematica裡怎麼求乙個多元多項式的次數?

大頭小頭排排站 初學者,給乙個思路簡單一點的答案 先將變數統一成乙個,回到Exponent的適用範圍求次數。MultivariableExponent poly Exponent poly Thread Variables poly Variables poly 1 Variables poly 1...