Ранг матриц - PullRequest
       7

Ранг матриц

1 голос
/ 26 июня 2019

Мне нужно вычислить ранги n симметричных матриц размера m. Однако при этом я понял, что время вычисления ранга симметричной матрицы намного медленнее, чем время вычисления ранга нормальной матрицы (см. Мой код ниже).

# Part I
m = 77;
n = 20_000;
A = rand(m,m);
SA = Symmetric(A);
@btime rank($A); #result: 357.101 μs (9 allocations: 92.77 KiB)
@btime rank($SA); #result: 2.915 ms (13 allocations: 75.69 KiB)

По этой причине я только что вычислил ранги n квадратных матриц размера m. Время выполнения этой работы составляло 8-9 с. Но я не доволен этим.

# Part II
A3D = rand(m, m, n);
ArrOfArr = [ii for ii in eachslice(A3D ,dims=3)];
@btime res1 = rank.($ArrOfArr); # 8.568 s (180002 allocations: 1.77 GiB)

Итак, кто-нибудь знает, как ускорить мой код во второй части? Заранее спасибо!

...