如何用JavaScript中的虚数计算?

时间:2013-03-14 00:56:58

标签: javascript math

最近,我试图使用一些涉及虚数 i 的方程来计算。但是,与 e π不同,没有任何方法或本机函数会返回 i 。谷歌中的quick search没有得到任何答案。关于如何实现它的任何想法?

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

3 个答案:

答案 0 :(得分:17)

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

答案 1 :(得分:11)

假设你真的想要复杂的数字,而不仅仅是想象的组件:

我会模拟复数,就像建模2D点一样,即一对数字。

正如一个点有x和y分量,因此复数具有实部和虚部。 这两个组件都可以使用普通的数字类型(int,float等)建模

但是,您需要为所有数学运算定义新功能。

复数的加法和减法与点的加法和减法的工作方式相同 - 将各个组件相互添加,不要混合它们。例如:

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

乘法就像你在代数中学到的那样(a + b)*(c + d)=(ac + ad + bc + bd)。

除了现在你还必须记住i * i = -1。所以:

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

有关除法和取幂,请参阅http://en.wikipedia.org/wiki/Complex_number

答案 2 :(得分:5)

我不是数学专家,但我试着用另一个词来搜索,我得到了不同的结果。

检查这些:

我希望这会有所帮助。