Как рассчитать с мнимыми числами в JavaScript?
В последнее время я пытаюсь вычислить, используя некоторые уравнения, которые включают в себя мнимое число i
. Однако, в отличие от e
или π
, нет никаких методов или нативных функций, которые возвратят i
. быстрый поиск в Google не дал мне ответа. Любые идеи о том, как его достичь?
function imaginary(){
return {
rational: this,
imaginary: "2i" //magic code that does this
};
};
Number.prototype.imaginary = imaginary;
Ответы
Ответ 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
Ответ 3
Я не эксперт по математике, но я попытался найти другой термин, и у меня были разные результаты.
Отметьте:
Надеюсь, это поможет.