Подтвердить что ты не робот

Как рассчитать с мнимыми числами в JavaScript?

В последнее время я пытаюсь вычислить, используя некоторые уравнения, которые включают в себя мнимое число i. Однако, в отличие от e или π, нет никаких методов или нативных функций, которые возвратят i. быстрый поиск в Google не дал мне ответа. Любые идеи о том, как его достичь?

function imaginary(){
    return {
        rational: this,
        imaginary: "2i"  //magic code that does this
    };
};
Number.prototype.imaginary = imaginary;
4b9b3361

Ответ 1

Предполагая, что вам действительно нужны комплексные числа, а не только мнимый компонент:

Я бы моделировал комплексное число так же, как вы бы моделировали двумерную точку, т.е. пару чисел.

Так же, как точка имеет x и y компоненты, поэтому комплексное число имеет реальные и мнимые компоненты. Оба компонента можно просто моделировать с помощью обычных числовых типов (int, float и т.д.).

Однако вам нужно будет определить новые функции для всех математических операций.

Сложение и вычитание комплексных чисел работает так же, как сложение и вычитание точек - добавьте отдельные компоненты друг к другу, не смешивайте их. Например:

(3 + 2i) + (5 + 4i) = (8 + 6i)

Умножение работает так же, как вы узнали в алгебре при умножении (a + b) * (c + d) = (ac + ad + bc + bd).

Кроме того, вы также должны помнить, что я * я = -1. Итак:

(a + bi) * (c + di) = (ac + adi + bci + bdii) = (ac-bd) + (ad + bc) i

Для деления и возведения в степень см. http://en.wikipedia.org/wiki/Complex_number

Ответ 2

Библиотека math.js поддерживает сложные числа, матрицы и т.д. Библиотека совместима с встроенной математикой JavaScript, поэтому она проста в использовании.

http://mathjs.org

Вы можете просто делать такие вещи, как:

math.i;                         // i
math.sqrt(-4)                   // 2i
var a = math.complex('2 + 3i'); // 2 + 3i
var b = math.complex(4, 5);     // 4 + 5i
math.add(a, b);                 // 6 + 8i
math.multiply(a, b);            // -7 + 22i
math.eval('e^(pi*i) + 1');      // ~0
// etc...

Изменить: обратите внимание, что math.js поставляется с парсером выражений, что делает его более удобным для работы со сложными значениями и математическими выражениями:

math.eval('(2 + 3i) * (4 + 5i)'); // -7 + 22i