Cálculo de vetores próprios em C# usando a biblioteca Matrix avançada em C#. INTERNET

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

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!

Foi útil?

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:

  1. Observe o out Palavra -chave ao lado dos parâmetros D e V. Você precisa adicionar a palavra -chave externa à chamada para Eigen.

  2. O código espera uma matriz como o primeiro argumento, enquanto você está enviando um elemento. Desta forma, MatrixName[n, n] precisa mudar para MatrixName.

  3. 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);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top