Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
LinAlgError: las últimas 2 dimensiones de la matriz deben ser cuadradas

Necesito resolver un conjunto de ecuaciones simultáneas de la forma A x = B para x. He usado la función numpy.linalg.solve, ingresando A y B, pero aparece el error 'LinAlgError: las últimas 2 dimensiones de la matriz deben ser cuadradas'. ¿Cómo puedo solucionar esto?

Aquí está mi código:

 A = matrix([[v1x, v2x], [v1y, v2y], [v1z, v2z]]) print A B = [(p2x-p1x-nmag[0]), (p2y-p1y-nmag[1]), (p2z-p1z-nmag[2])] print B x = numpy.linalg.solve(A, B)

Los valores de la matriz/vector se calculan anteriormente en el código y esto funciona bien, pero los valores son:

un =

 (-0.56666301, -0.52472909) (0.44034147, 0.46768087) (0.69641397, 0.71129036)

B =

 (-0.38038602567630364, -24.092279373295057, 0.0)

x debe tener la forma (x1,x2,0)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

En caso de que aún no haya encontrado una respuesta, o en caso de que alguien en el futuro tenga esta pregunta.

Para resolver Ax=b :

numpy.linalg.solve utiliza LAPACK gesv. Como se menciona en la documentación de LAPACK , gesv requiere que A sea cuadrada:

LA_GESV calcula la solución de un sistema lineal complejo o real de ecuaciones A X = B, donde A es una matriz cuadrada y X y B son matrices rectangulares o vectores. La eliminación gaussiana con intercambios de filas se usa para factorizar A como A = P L*U , donde P es una matriz de permutación, L es la unidad triangular inferior y U es la triangular superior. Luego se usa la forma factorizada de A para resolver el sistema anterior.

Si una matriz no es cuadrada, significa que tiene más variables que sus ecuaciones o al revés. En estas situaciones, puede tener los casos de ninguna solución o un número infinito de soluciones. Lo que determina el espacio de solución es el rango de la matriz en comparación con el número de columnas. Por lo tanto, primero debe verificar el rango de la matriz.

Dicho esto, puedes usar otro método para resolver tu sistema de ecuaciones lineales. Sugiero echar un vistazo a los métodos de factorización como LU o QR o incluso SVD. En LAPACK puedes usar getrs , en Python puedes hacer diferentes cosas:

  • primero haga la factorización como QR y luego alimente las matrices resultantes a un método como scipy.linalg.solve_triangular
  • resuelve los mínimos cuadrados usando numpy.linalg.lstsq

También eche un vistazo aquí donde se formula y resuelve un ejemplo simple.

over 4 years ago · Santiago Trujillo Report

0

Una matriz cuadrada es una matriz con el mismo número de filas y columnas. La matriz que está haciendo es de 3 por 2. Agregue una columna de ceros para solucionar este problema.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!