Извините, @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>
Я надеюсь, что это делает трюк.
При больших матрицах обычно не нужны все собственные значения. Вы просто хотите, чтобы верхние сделали (скажем) сокращение размеров.
Каноническим алгоритмом является итерационный алгоритм Арнольди-Ланцоша, реализованный в ARPACK:
www.caam.rice.edu/software/ARPACK/
В eigs есть интерфейс matlab:
eigs(A,k) and eigs(A,B,k) return the k largest magnitude eigenvalues.
И теперь есть также интерфейс R:
Большинство алгоритмов для собственных вычислений значения масштабируется к большому о (n^3), где n является размером строки/седла (симметричный и квадратный) матрица.
Для знания временной сложности лучшего алгоритма до даты необходимо было бы отослать к последним научно-исследовательским работам в Научных вычислениях / Численные методы.
Но даже если бы Вы принимаете худший случай, Вам все еще было бы нужно, по крайней мере, 1000^3 операции для 1000x1000 матрица.
R использует стандартную программу LAPACK (DSYEVR, DGEEV, ZHEEV и ZGEEV) реализация по умолчанию. Однако Вы могли указать EISPACK=TRUE в качестве параметра для использования RS EISPACK, RG, CH и стандартных программ CG.
Самые популярные и хорошие пакеты с открытым исходным кодом для вычисления собственного значения являются LAPACK и EISPACK.
Я предполагаю, что помогает, разрежена ли матрица?
Да, существуют алгоритмы, которые работают хорошо на разреженных матрицах.
Посмотрите, например: http://www.cise.ufl.edu/research/sparse/
Сколько времени это могло бы взять на практике, если я имею 1000x1000 матрица?
MATLAB (на основе LAPACK) вычисляет на двухъядерной машине на 1,83 ГГц все собственные значения 1000x1000 случайный примерно за 5 секунд. Когда матрица симметрична, вычисление может быть сделано значительно быстрее и требует только приблизительно 1 секунды.
Я смотрел бы на алгоритмы Собственного значения, которые связываются со многими различными методами. У них все будут различные характеристики, и надо надеяться каждый подойдет в Ваших целях.
Apache Mahout - это фреймворк с открытым исходным кодом, построенный на map-reduce (т.е. он работает для действительно очень больших матриц). Обратите внимание, что для многих матричных вещей вопрос не в том, "каково время выполнения big-o", а скорее в том, "насколько это распараллеливаемо?". Mahout говорит, что они используют Lanczos, который, по сути, может выполняться параллельно на стольких процессорах, сколько вы захотите ему дать.