Cálculo de vetores próprios em C# usando a biblioteca Matrix avançada em C#. INTERNET
-
25-09-2019 - |
Pergunta
Ok pessoal, estou usando a seguinte biblioteca: http://www.codeproject.com/kb/recipes/advancedmatrixlibrary.aspx
E desejo calcular os vetores próprios de certas matrizes que tenho. Não sei como formular o código.
Até agora eu tentei:
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);
No entanto, ele diz que a melhor correspondência de método sobrecarregada tem alguns argumentos inválidos. Sei que a biblioteca funciona, mas simplesmente não sei como formular meu código C#.
Qualquer ajuda seria fantástica!
Solução
Olhando para a biblioteca, a assinatura do método Eigen se parece com o seguinte:
public static void Eigen(Matrix Mat, out Matrix d,out Matrix v)
Existem alguns erros:
Observe o
out
Palavra -chave ao lado dos parâmetros D e V. Você precisa adicionar a palavra -chave externa à chamada para Eigen.O código espera uma matriz como o primeiro argumento, enquanto você está enviando um elemento. Desta forma,
MatrixName[n, n]
precisa mudar paraMatrixName
.Você não precisa instanciar as matrizes de vetor e valores, pois o método Eigen faz isso por você e retornará os valores nos dois argumentos que você envia graças à palavra -chave externa. Uma coisa a observar também é que você receberá a saída da seguinte forma:
Os valores serão uma matriz [n+1,1
O vetor será uma matriz [n+1, n+1
Não é a matriz (n, 0) como você espera do seu código inicial.
O código será assim:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
Outras dicas
Seu código deve ficar assim:
Matrix MatrixName = new Matrix(n, n);
Matrix vector;
Matrix values;
Matrix.Eigen(MatrixName, out values, out vector);
C# out
palavra -chave significa que o método Eigen
criará objeto para você, então você não deve fazer isso new Matrix(n, 0);