R에서 광범위한 계산을 시도했습니다. 18 시간이 지났지 만 RStudio는 계속 작동하는 것 같습니다. 스크립트를 다른 방식으로 작성하여 더 빠르게 만들 수 있는지 확신 할 수 없습니다.빠른 수치 계산을 구현 R
#defining the discretization of cells
dt<-1
t<-50000
dz<-0.0075
z<-350*dz
#velocity & diffusion
v<-2/(24*60*60)
D<-0.02475/(24*60*60)
#make the big matrix (all filled with zeros)
m <- as.data.frame(matrix(0, t/dt+1, z/dz+2)) #extra columns/rows for boundary conditions
#fill the first and last columns with constant boundary values
m[,1]<-400
m[,length(m)]<-0
#implement the calculation
for(j in 2:(length(m[1,])-1)){
for(i in 2:length(m[[1]])){
m[i,][2:length(m)-1][[j]]<-m[i-1,][[j]]+
D*dt*(m[i-1,][[j+1]]-2*m[i-1,][[j]]+m[i-1,][[j-1]])/(dz^2)-
v*dt*(m[i-1,][[j+1]]-m[i-1,][[j-1]])/(2*dz)
}}
R 그것을 구현하는 것이 얼마나 걸릴지 알 수있는 방법이 있나요 : 나는 아래와 같이 Crank–Nicolson type method (350)에 의해 50,000 이상 매트릭스를 구현하려고했다? 수치 계산을 구성하는 더 좋은 방법이 있습니까? 이 시점에서, 나는 더 빠른 것처럼 느껴졌습니다!
내 랩톱에서 루프 반복은 약 26 밀리 초가 걸립니다. 전체 매트릭스의 경우 약 126 시간 (5 일)입니다. – dww
휠을 다시 발명하는 이유는 무엇입니까? http://finzi.psych.upenn.edu/library/pracma/html/cranknic.html – MichaelChirico
그가 희소 행렬을 사용할 수 있는지 궁금합니다 –