es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ZeroDivisionError: la matriz es numéricamente singular.

Estoy tratando de resolver 5 ecuaciones con 5 incógnitas.

from sympy import *

w1, w2, w3, h2, h3 = symbols('w1 w2 w3 h2 h3')

tan = 8.89 / 19
h1 = 17.73
wt = 19

a1 = h1*w1 + (w1*w1*tan)/2
a2 = h2*w2 + (w2*w2*tan)/2
a3 = h3*w3 + (w3*w3*tan)/2
a4 = w2*(h1 + w1*tan - h2) + w3*(h1 + (w1 + w2)*tan - h3)
at = (h1*wt) + (wt*wt*tan)/2

eq1 = a1 - a2
eq2 = a1 - a3
eq3 = a1 - a4
eq4 = a1 + a2 + a3 + a4 - at
eq5 = w1 + w2 + w3 - wt

answer = nsolve((eq1, eq2, eq3, eq4, eq5), (w1, w2, w3, h2, h3), (1, 1, 1, 1, 1))
print(answer)

Pero recibo un error:

ZeroDivisionError: la matriz es numéricamente singular

Más registros de llamadas:

Archivo "/home/m3/Downloads/map/v-env/lib64/python3.6/site-packages/mpmath/calculus/optimization.py", línea 660, en __iter__
    s = self.ctx.lu_solve(Jx, fxn)
Archivo "/home/m3/Downloads/map/v-env/lib64/python3.6/site-packages/mpmath/matrices/linalg.py", línea 226, en lu_solve
    A, p = ctx.LU_decomp(A)
Archivo "/home/m3/Downloads/map/v-env/lib64/python3.6/site-packages/mpmath/matrices/linalg.py", línea 136, en LU_decomp
    raise ZeroDivisionError('la matriz es numéricamente singular')

No puedo comprender qué está mal con mis ecuaciones. Las ecuaciones son para una geometría. Las ecuaciones intentan dividir un área geométrica en 4 áreas iguales. ¿Alguien puede proporcionar algunas pistas? Gracias.

Tags:  ,

Answer

  1. Avatar for davy.ai

    El mensaje de error sugiere que la matriz de ecuaciones es singular, lo que significa que no hay una solución única porque las ecuaciones son linealmente dependientes. Esto puede ser debido a un error en la forma en que se derivaron las ecuaciones, o porque las ecuaciones son inconsistentes y no se pueden resolver.

    Sin más información sobre la geometría y las ecuaciones, es difícil diagnosticar el problema. Sin embargo, aquí hay algunas sugerencias para depurar:

    1. Verifique sus ecuaciones: ¿son correctas? Verifique sus cálculos para asegurarse de que no haya errores.

    2. Verifique si hay inconsistencias: ¿se contradicen las ecuaciones entre sí? Por ejemplo, si una ecuación dice que w1 = 2 y otra dice que w1 = 3, entonces las ecuaciones no se pueden resolver simultáneamente.

    3. Pruebe un solucionador diferente: la función nsolve es una forma de resolver sistemas de ecuaciones numéricamente, pero es posible que no siempre funcione. Podría probar un solucionador diferente, como solve o linsolve del módulo sympy.

    4. Simplifique las ecuaciones: ¿puede simplificar las ecuaciones mediante manipulación algebraica o sustituciones para reducir el número de incógnitas? Esto podría facilitar la resolución del problema.

    5. Utilice un solucionador simbólico: en lugar de usar un solucionador numérico, podría probar un solucionador simbólico como solve del módulo sympy. Esto le dará las soluciones exactas en términos de los símbolos, lo que puede ser más informativo que una aproximación numérica.

Comments are closed.