→ andrew43: sum(densum)不應該和for(i)同層11/25 13:44
→ andrew43: 你先想一下j=1;i=1時densum是什麼就能明白有問題11/25 13:44
→ celestialgod: 其實它就只是每個i都取代一個d[j] 但是最後一個i11/25 14:11
→ celestialgod: 才會填一次正確值XD 是不影響結果拉...11/25 14:11
→ celestialgod: 這個問題用sweep / colSums / rowSums就能解決了11/25 14:12
→ celestialgod: 原po再自己看一下我上面貼的程式~ 有問題再發問11/25 14:12
謝謝各位回答,我是沒用過sweep,只覺得這種迴圈寫的很煩,現在沒電腦,回家再試試
看
→ andrew43: 嗯後來發現了謝謝11/25 14:15
所以我程式應該是沒寫錯的?
因為計算量太大也不好手算qq
※ 編輯: empireisme (101.12.41.101 臺灣), 11/25/2019 14:17:10
※ 編輯: empireisme (101.12.41.101 臺灣), 11/25/2019 14:19:47
→ celestialgod: 不算寫錯 但是就多了不少操作 是可以省掉的11/25 14:27
→ celestialgod: 這種情況建議拿 2 x 2的矩陣來驗算會好一點11/25 14:28
→ celestialgod: sweep正如它字面上的意思就掃過去... 11/25 14:29
→ celestialgod: 自己玩玩看吧11/25 14:29
我算過小矩陣
但就是怕有萬一qq
比如說是不是對數學公式的理解錯誤
※ 編輯: empireisme (101.12.41.101 臺灣), 11/25/2019 14:34:45
→ andrew43: 只看式子,確實多算很多。rowSums colSums先練練看11/25 14:39
ok 看了c大的程式,看起來確實我沒有算錯但多算很多了
※ 編輯: empireisme (101.12.41.101 臺灣), 11/26/2019 10:09:21
→ a78998042a: temp = t(A)*p 12/01 09:32
→ a78998042a: den = colSums(temp) 12/01 09:32
→ a78998042a: r2 = t(temp)/den 12/01 09:32
→ a78998042a: d = colSums(r2) 12/01 09:33
→ a78998042a: 快一點,記憶體用量少一些 12/01 09:33
推 asdiy: 我的寫法是 simple=function(A,p){t=p/apply(A,1,function 01/01 00:04
→ asdiy: (x)x%*%p);apply(A,2,function(x)x%*%t} 做 10000*10000矩 01/01 00:04
→ asdiy: 陣是4秒 01/01 00:04