Tracks
/
MoonScript
MoonScript
/
Ejercicios
/
Números complejos
Números complejos

Números complejos

Intermedia

Instrucciones

Un número complejo se expresa en 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 está 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 está 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 está 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

Exponenciación

Elevar e (la base del logaritmo natural) a un exponente complejo se puede expresar usando 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
  • exponenciación de e (la base del logaritmo natural) a un número complejo

Instrucciones específicas de MoonScript

Este es un ejercicio orientado a objetos: vas a implementar ComplexNumbers como una clase.

Los tests van a comparar dos instancias de números complejos para ver si son iguales. Esto significa que tu clase tendrá que implementar el metamétodo __eq.

Los tests también realizan operaciones aritméticas con números complejos, así que hay metamétodos aritméticos que tendrás que implementar.

Caution

Algunas de las funciones de números complejos harán cálculos con números de punto flotante. Tu «igualdad» tendrá que lidiar con números que son aproximadamente iguales.


Fuente

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

¿Todo listo para empezar Números complejos?

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