Я использую функцию eigs() в Julia для вычисления собственных значений и собственных векторов. Результаты недетерминированы и часто полны 0,0. Временное решение — связать LAPACK 2.0.
Есть идеи, как это сделать в Linux Ubuntu? Пока я не могу связать это, и я не знаю, насколько сложны навыки администрирования Linux, поэтому было бы хорошо, если бы кто-нибудь мог опубликовать руководство о том, как правильно связать его.
Большое спасибо.
Изменить:
Я хотел добавить результаты, но заметил один недостаток в коде. Я использовал matrix = sparse(map(collect,zip([triple(e,"weight") for e in edges(g)]...))..., num_vertices(g), num_vertices(g))
. Это ответ от вас на один из моих вопросов. Это работает нормально, когда вершины индексируются с 1. Но мои вершины имеют случайные индексы из-за их чтения из файла. Поэтому я изменил num_vertices, чтобы он был равен наибольшему индексу. Но я не заметил, чтобы он выполнял, например, вычисления с учетом 1000 вершин, когда вершина с максимальным индексом была 1000, хотя весь граф мог состоять из 3 вершин, например, 1, 10, 1000. Любая идея, как это исправить?
Редактировать 2:
#Content of matrix = matrix+matrix'
[2, 1] = 10.0
[3, 1] = 14.0
[1, 2] = 10.0
[3, 2] = 10.0
[5, 2] = 2.0
[1, 3] = 14.0
[2, 3] = 10.0
[4, 3] = 20.0
[5, 3] = 20.0
[3, 4] = 20.0
[2, 5] = 2.0
[3, 5] = 20.0
[6, 5] = 10.0
[5, 6] = 10.0
matrix = matrix+matrix'
(d, v) = eigs(matrix, nev=1, which=:LR, maxiter=1)
5 выполнений кода выше:
[-0.3483956604402672
-0.3084333257587648
-0.6697046040724708
-0.37450798643794125
-0.4249810113292739
-0.11882760090004019]
[0.3483956604402674
0.308433325758765
0.6697046040724703
0.3745079864379416
0.424981011329274
0.11882760090004027]
[-0.3483956604402673
-0.308433325758765
-0.669704604072471
-0.37450798643794114
-0.4249810113292739
-0.1188276009000403]
[0.34839566044026726
0.30843332575876503
0.6697046040724703
0.37450798643794114
0.4249810113292739
0.11882760090004038]
[0.34839566044026715
0.30843332575876503
0.6697046040724708
0.3745079864379412
0.4249810113292738
0.11882760090004038]