Вычисление собственных векторов в C # с использованием расширенной библиотеки матрицы в C #. СЕТЬ
-
25-09-2019 - |
Вопрос
Хорошо, ребята, я использую следующую библиотеку: http://www.codeproject.com/kb/recipes/advancedmatrixlibrary.aspx.
И я хочу рассчитать собственные векторы определенных матриц, которые у меня есть. Я не знаю, как сформулировать код.
Пока я попытался:
Matrix MatrixName = new Matrix(n, n);
Matrix vector = new Matrix(n, 0);
Matrix values = new Matrix(n, 0);
Matrix.Eigen(MatrixName[n, n], values, vector);
Однако он говорит, что лучший перегруженный метод Match имеет некоторые недопустимые аргументы. Я знаю, что библиотека работает, но я просто не знаю, как сформулировать мой код C #.
Любая помощь была бы фантастической!
Решение
Глядя на библиотеку, подпись метода собственного сигнала выглядит так:
public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
Есть несколько ошибок:
Обратите внимание
out
Ключевое слово рядом с параметрами D и V. Вам необходимо добавить ключевое слово вызов на вызов на EIGEN.Код ожидает матрицы в качестве первого аргумента, пока вы отправляете элемент. Таким образом,
MatrixName[n, n]
нужно изменить наMatrixName
.Вам не нужно создавать элементы матриц вектора и значений, поскольку метод EIGEN делает это для вас и вернет значения в два аргумента, которые вы отправляете благодаря ключевому слову OUT. Одно следует отметить, что вы получите вывод следующим образом:
Значения будут [N + 1,1] матрица
Вектор будет [n + 1, n + 1] матрица
Не так, как матрица (n, 0), как вы ожидаете от вашего первоначального кода.
Код будет выглядеть так:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
Другие советы
Вы код должны выглядеть так:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
C # out
Ключевое слово означает этот метод Eigen
создаст объект для вас, поэтому вы не должны делать это new Matrix(n, 0);