Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

wrong eigh eigenvectors for complex valued matrix

Abierto
#307 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
42/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Stack tecnológico
rust
Área
hpc

Línea de trabajo

Start by reproducing the provided complex-valued matrix example and trace the implementation behind eigh with UPLO::Lower. Compare the eigenvector result for the matrix and its Hermitian conjugate, then add a regression test based on the shown assertions; done means the original matrix's eigenvectors satisfy the eigenvalue equation.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

The resulting eigenvectors for eigh of complex valued matrix is wrong.

If eigh is called with the hermitian conjugate of the matrix,
the resulting eigenvectors are the eigenvectors of the original matrix.

   let values = vec![
        c64::new(1.0, 0.0), c64::new(0.0, -2.0),
        c64::new(0.0, 2.0), c64::new(5.0, 0.0),
    ];
    let matrix = Array2::<c64>::from_shape_vec([2; 2], values).unwrap();
    // assertion passed
    let (eigvalues, eigvecs) = matrix.t().mapv(|v| v.conj()).eigh(UPLO::Lower).unwrap();
    for i in 0 .. 2 {
        let dot = matrix.dot(&eigvecs.column(i));
        let mul = &eigvecs.column(i).mapv(|c| c*eigvalues[i]);
        assert_close_l2!(&dot, &mul, 1.0e-10);
    }
    // assertion failed.
    let (eigvalues, eigvecs) = matrix.eigh(UPLO::Lower).unwrap();
    for i in 0 .. 2 {
        let dot = matrix.dot(&eigvecs.column(i));
        let mul = &eigvecs.column(i).mapv(|c| c*eigvalues[i]);
        assert_close_l2!(&dot, &mul, 1.0e-10);
    }
Lenguaje dominante
Rust
Estrellas
452
Forks
95
Métricas de merge de PR
Sin PR fusionados en 30 d

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de rust-ndarray/ndarray-linalg

Todos los issues de rust-ndarray/ndarray-linalg

Issues similares

Más issues de Rust

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.