Julia에서 크기 N의 Riemann 행렬을 만들기위한 함수를 구현했습니다. Riemann 가설과 관련된 N-by-N 행렬입니다.Julia의 Riemann 행렬 함수 최적화
DET(A) = O(N! N^(-1/2+epsilon))
은 epsilon > 0
이고, DET()
은 결정자를 나타내고, !
은 계승을 나타낸다. 여기
B(i,j) = i-1 if i divides j, and
-1 otherwise.
잘 작동 내 코드이지만, 최적화 필요
A = B(2:N+1, 2:N+1)
와
, A = 리만 매트릭스
: 희망function riemann(x::Int32)
R = zeros(Int32,x+1,x+1)
for i=1:x+1, j=1:x+1
if j%i == 0
R[i,j] = i-1
else
R[i,j] = -1
end
end
return R[2:x+1,2:x+1]
end
을, 내가 필요 보다 효율적인 형태로 작성하십시오 :
function riemann!{T}(R::AbstractMatrix{T}, x::T)
.
.
.
모든 의견을 환영합니다.
편집 :
글쎄, 이것은 제가 위에서 제안한 다른 형태입니다. 나는 원래의 코드와 비교하여 속도를 향상시키지 않았다.
function calc_riemann!{T}(R::AbstractMatrix{T}, x::T)
for i=1:x+1, j=1:x+1
if j%i == 0
R[i,j] = i-1
else
R[i,j] = -1
end
end
end
function riemann(x::Int)
R = Array(Int, x+1,x+1)
calc_riemann!(R, x)
y = R[2:x+1,2:x+1]
end
질문이 무엇인지 분명하지 않습니다. – StefanKarpinski
질문은 효율적인 메모리 사용과 최고의 속도를 위해 위 기능을 최적화하는 방법입니다. –
'Int32'를'Int's로 만들었다면, 당신은 이것을 훨씬 빨리 얻을 수 있을지 의심 스럽습니다. 함수 밖에서 행렬을 할당하려고 제안하는'riemann! '버전과 비슷하지만 전체 시간은 변경되지 않습니다. – IainDunning