Вычисление собственных векторов в C # с использованием расширенной библиотеки матрицы в C #. СЕТЬ

StackOverflow https://stackoverflow.com/questions/4400203

Вопрос

Хорошо, ребята, я использую следующую библиотеку: 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)

Есть несколько ошибок:

  1. Обратите внимание out Ключевое слово рядом с параметрами D и V. Вам необходимо добавить ключевое слово вызов на вызов на EIGEN.

  2. Код ожидает матрицы в качестве первого аргумента, пока вы отправляете элемент. Таким образом, MatrixName[n, n] нужно изменить на MatrixName.

  3. Вам не нужно создавать элементы матриц вектора и значений, поскольку метод 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);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top