這裡所謂的張量和黎曼那裡的張量是不一樣的,那個張量更多的用在物理上,這個張量就是矩陣的擴充套件。比如零階張量就是數,一階張量就是向量,二階張量就是矩陣,三階四階就是更高維的數的集合。這個領域現在在數學上還都是很新的東西,矩陣的秩我們都知道怎麼求,但是三維的張量或更高維的張量的秩現在在數學上也沒有結果。至於張量的奇異值分解也只是也只是用很早的如用hosvd來處理,我感覺這並不完全合適,新的分解演算法就連老美也都沒研究出來,從二維到多維的確有很多基礎的理論都不適用了,像兩個張量相乘這樣基礎的演算法,現在雖然有,但我感覺也不是通用的,還要繼續改進。
下面就是我看的一篇**的張量相乘和分解方法,她的理論也可能不正確,不過這種新領域,大家都是在探索。
**在這裡:他主要介紹的是t-svd,t-svd分解後合成的只是原張量的乙個近似結果,而t-qr就能得到乙個準確的結果,所以我這裡用了t-qr。以matlab角度來看t-svd和t-qr的**其實是很類似的。
mul.m 張量相乘,**第七頁3.3的那個公式
function c=mul(a,b)[a_n1 a_n2 a_n3]=size(a);
[b_n1 b_n2 b_n3]=size(b);
c=zeros(a_n1,b_n2,a_n3);
a=cell(a_n3,1
); b=cell(b_n3,1
);
for i=1
:a_n3
a=a(:,:,i);
b=b(:,:,i);
endindex_up=zeros(1
,a_n3);
index_down=zeros(1
,a_n3);
for i=1
:a_n3
index_up(i)=a_n3-i+1
; index_down(i)=i;
ends=cell(a_n3,a_n3);
for i=1
:a_n3
for j=1
:a_n3
if i==j
s=a;
endif j>i
s=a;
endif js=a;
endend
endre=cell(a_n3,1
);
for i=1
:a_n3
re=zeros(a_n1,b_n2);
endfor i=1
:a_n3
for j=1
:a_n3
for k=1:1
re=re+s*b
;
endend
endfor i=1
:a_n3
c(:,:,i)=re
;
endend
transpos.m 張量求轉置,**第十頁example3.15的公式
function a=transpos(b)[n1 n2 n3]=size(b);
a=zeros(n2,n1,n3);
for i=1
:n3 a(:,:,i)=b(:,:,i)'
;end
end
python三階魔方 三階魔方還原公式
1.第二層稜塊歸位 2.頂層十字 3.頂層稜中間塊歸位 這一步的目的是使頂層的4個稜中間塊全部歸位。轉動頂層 u 若可以使乙個稜中間塊歸位 如下圖左,這裡以 紅 黃 塊為例 而其他3個都不能歸位,則將 紅 黃 所在這一面 紅面 定為正前面 f 按照圖示步驟轉動,可使4塊稜中間塊全部歸位,或出現下一種...
三階魔方教程
這裡講述的是層先法,有7步,需要記憶4個公式。關於公式的記憶,有很多種方法,我採用的是編口訣。第一步 把白色的那一面轉好。第二步 把和白色底面的那一層轉好。第三步 第一面和第一層轉好之後,以白色為底 把魔方盡量轉成倒t字形,看最上層中間的塊 a 和第二層左右的塊 b 需要交換的,如果有要交換的,先把...
三階魔方復原
網上有關三階魔方的教程有好多,多數方法步驟基本都是一樣的,但是 清晰 說明詳細 流程嚴謹的感覺不是很多。按照上面鏈結中的教程,從第一步到第八步,仔細按照教程嚴格完成每一步,很快就可以學會復原方法。當時我在第二步時沒有按照教程的方法去做,看得也不是很仔細,覺得很快完成了第二步和第三步,但是到了第四步時...