Как дорогой это должно вычислить собственные значения матрицы?

Извините, @ofmiceandmoon. Мой предыдущий ответ был плохим, потому что я не правильно понял ваш вопрос. Вот правильный ответ:

Допустим, у вас есть представление с именем «form». В вашей форме введите:

<input type="text" name="name" value="{{ request()->get('name') }}">

И в вашем контроллере вы хотите перейти к другому представлению с именем «display» и показать входное значение:

$name = $request->input('name');
return view('layouts.display')->with('name', $name);

И в вашем представлении дисплея:

<a href="{{ url()->previous() }}?name={{ $name }}"><button type="submit" class="button btn-sm">Bearbeiten</button></a>

Я надеюсь, что это делает трюк.

32
задан vrajs5 11 June 2014 в 06:55
поделиться

6 ответов

При больших матрицах обычно не нужны все собственные значения. Вы просто хотите, чтобы верхние сделали (скажем) сокращение размеров.

Каноническим алгоритмом является итерационный алгоритм Арнольди-Ланцоша, реализованный в ARPACK:

www.caam.rice.edu/software/ARPACK/

В eigs есть интерфейс matlab:

http: // www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/eigs.html

eigs(A,k) and eigs(A,B,k) return the k largest magnitude eigenvalues.

И теперь есть также интерфейс R:

http: //igraph.sourceforge.net/doc-0.5/R/arpack.html

18
ответ дан 27 November 2019 в 20:25
поделиться

Большинство алгоритмов для собственных вычислений значения масштабируется к большому о (n^3), где n является размером строки/седла (симметричный и квадратный) матрица.

Для знания временной сложности лучшего алгоритма до даты необходимо было бы отослать к последним научно-исследовательским работам в Научных вычислениях / Численные методы.

Но даже если бы Вы принимаете худший случай, Вам все еще было бы нужно, по крайней мере, 1000^3 операции для 1000x1000 матрица.

R использует стандартную программу LAPACK (DSYEVR, DGEEV, ZHEEV и ZGEEV) реализация по умолчанию. Однако Вы могли указать EISPACK=TRUE в качестве параметра для использования RS EISPACK, RG, CH и стандартных программ CG.

Самые популярные и хорошие пакеты с открытым исходным кодом для вычисления собственного значения являются LAPACK и EISPACK.

20
ответ дан 27 November 2019 в 20:25
поделиться

Я предполагаю, что помогает, разрежена ли матрица?

Да, существуют алгоритмы, которые работают хорошо на разреженных матрицах.

Посмотрите, например: http://www.cise.ufl.edu/research/sparse/

12
ответ дан 27 November 2019 в 20:25
поделиться

Сколько времени это могло бы взять на практике, если я имею 1000x1000 матрица?

MATLAB (на основе LAPACK) вычисляет на двухъядерной машине на 1,83 ГГц все собственные значения 1000x1000 случайный примерно за 5 секунд. Когда матрица симметрична, вычисление может быть сделано значительно быстрее и требует только приблизительно 1 секунды.

8
ответ дан 27 November 2019 в 20:25
поделиться

Я смотрел бы на алгоритмы Собственного значения, которые связываются со многими различными методами. У них все будут различные характеристики, и надо надеяться каждый подойдет в Ваших целях.

5
ответ дан 27 November 2019 в 20:25
поделиться

Apache Mahout - это фреймворк с открытым исходным кодом, построенный на map-reduce (т.е. он работает для действительно очень больших матриц). Обратите внимание, что для многих матричных вещей вопрос не в том, "каково время выполнения big-o", а скорее в том, "насколько это распараллеливаемо?". Mahout говорит, что они используют Lanczos, который, по сути, может выполняться параллельно на стольких процессорах, сколько вы захотите ему дать.

2
ответ дан 27 November 2019 в 20:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: