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.

Bluetooth Beacon 3D Trilateration en español se traduce como: Trilateración 3D de balizas Bluetooth.

Tengo este código aquí y, desafortunadamente, no funciona para mí. Obtengo este error:

Advertencia de tiempo de ejecución: se encontró un valor inválido en la raíz cuadrada z1 = np.sqrt(r1 * 2 – x * 2 – y ** 2)

Advertencia de tiempo de ejecución: se encontró un valor inválido en la raíz cuadrada z2 = np.sqrt(r1 * 2 – x * 2 – y ** 2) * (-1)

La ubicación del punto es: [nan nan nan]

Edit, tengo la solución para este problema:

z1 = np.sqrt(r1 ** 2 - x ** 2 - y ** 2)
z2 = np.sqrt(r1 ** 2 - x ** 2 - y ** 2) * (-1)

No funciona porque no podemos calcular NaN * (-1) y por eso el resto del código no funciona.

En su lugar, deberíamos escribir el código así:
“`
import cmath</p>

<pre><code>z1 = cmath.sqrt(pow(r1, 2.) – pow(x, 2.) – pow(y, 2.))
zx = z1.real
zy = z1.imag
val = zx + zy
z2 = val * (-1)
</code></pre>

“`
y ahora funciona correctamente.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para el Error de Trilateración

    El código trilateration.py proporcionado en el enlace dado está resultando en una advertencia de tiempo de ejecución de valor no válido encontrado en sqrt debido al cálculo de NaN * (-1). Esto se debe a que el valor de z2 se calcula multiplicando z1 por (-1). Para solucionar esto, podemos usar la biblioteca cmath para realizar operaciones matemáticas complejas.

    El código corregido se puede escribir de la siguiente manera:

    import cmath
    
    z1 = cmath.sqrt(pow(r1, 2.) - pow(x, 2.) - pow(y, 2.))
    zx = z1.real
    zy = z1.imag
    val = zx + zy
    z2 = val * (-1)
    

    Con esta corrección, el código trilateration.py debería funcionar sin errores y podemos obtener la ubicación del punto con precisión.

Comments are closed.