Rutas
/
Lua
Lua
/
Ejercicios
/
Números complejos
Números complejos

Números complejos

Media

Instrucciones

Un número complejo se expresa de la forma z = a + b * i, donde:

  • a es la parte real (un número real),

  • b es la parte imaginaria (también un número real), y

  • i es la unidad imaginaria, que cumple i^2 = -1.

Operaciones con números complejos

Conjugado

El conjugado del número complejo z = a + b * i viene dado por:

zc = a - b * i

Valor absoluto

El valor absoluto (o módulo) de z se define como:

|z| = sqrt(a^2 + b^2)

El cuadrado del valor absoluto se calcula como el producto de z y su conjugado zc:

|z|^2 = z * zc = a^2 + b^2

Suma

La suma de dos números complejos z1 = a + b * i y z2 = c + d * i se calcula sumando sus partes real e imaginaria por separado:

z1 + z2 = (a + b * i) + (c + d * i)
        = (a + c) + (b + d) * i

Resta

La diferencia de dos números complejos se obtiene restando sus partes respectivas:

z1 - z2 = (a + b * i) - (c + d * i)
        = (a - c) + (b - d) * i

Multiplicación

El producto de dos números complejos se define como:

z1 * z2 = (a + b * i) * (c + d * i)
        = (a * c - b * d) + (b * c + a * d) * i

Recíproco

El recíproco de un número complejo distinto de cero viene dado por:

1 / z = 1 / (a + b * i)
      = a / (a^2 + b^2) - b / (a^2 + b^2) * i

División

La división de un número complejo entre otro viene dada por:

z1 / z2 = z1 * (1 / z2)
        = (a + b * i) / (c + d * i)
        = (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i

Potenciación

Elevar e (la base del logaritmo neperiano) a un exponente complejo puede expresarse con la fórmula de Euler:

e^(a + b * i) = e^a * e^(b * i)
              = e^a * (cos(b) + i * sin(b))

Requisitos de implementación

Dado que no debes usar el soporte integrado para números complejos, implementa las siguientes operaciones:

  • suma de dos números complejos
  • resta de dos números complejos
  • multiplicación de dos números complejos
  • división de dos números complejos
  • conjugado de un número complejo
  • valor absoluto de un número complejo
  • potenciación de e (la base del logaritmo neperiano) a un número complejo

Implementación

Este ejercicio requiere que uses objetos basados en closures. Puedes leer más sobre este enfoque de la orientación a objetos en Lua en este artículo.

Este ejercicio también requiere que uses la sobrecarga de operadores mediante metamétodos de metatablas. Puedes leer más sobre esto en Programming in Lua.


Fuente

WikipediaEl enlace se abre en una nueva ventana o pestaña
Editar en GitHub El enlace se abre en una ventana o pestaña nueva
Lua Exercism

¿Listo para empezar Números complejos?

Regístrate en Exercism para aprender y dominar Lua con 117 ejercicios y mentoría humana real, todo gratis.