私には難しいR
計算があり、コードを実行するために V と L と呼ばれる 2 台のコンピューターのオプションがあります。V は L より速いはずですが、私はこれを経験しませんでした。それで、私はそれをテストすることにしました。
簡単なテストとして、3000*3000 行列を 500 回反転させて時間を記録するよう依頼することにしました。
set.seed(123)
I=500
n=3000
time=matrix(NA,ncol=3,nrow=I)
for(i in 1:I){
t0<-proc.time()
x<-solve(matrix(runif(n^2),n))
mt1<-proc.time()
time[i,]<-(mt1-t0)[1:3]
}
問題は、特定の反復中にスタックしたことです。理由はわかりませんが、生成された行列が特異に近いためだと思われます。というわけで、コードを改善したいと思います。私は3つの方法を考えることができます:
- 生成された行列が簡単に可逆であることを確認してください。しかし、どうすればこれを強制できますか??? もちろん、どのソリューションも計算コストがかからない必要があります。そうしないと、演習が無意味になります。
- 時間がかかりすぎる
R
場合は、その反復をスキップするように依頼しますか?solve
しかし、もう一度言いますが、どうすればいいですか? - 代わりに別の計算タスクを割り当てますが、推奨事項はありますか?