如何在JavaScript中使用虚数进行计算?

如何在JavaScript中使用虚数进行计算?,javascript,math,Javascript,Math,最近,我试着用一些方程来计算,其中包括虚数I。但是,与e或π不同,没有任何方法或本机函数返回i。谷歌上的一个搜索引擎没有给我任何答案。关于如何实现它有什么想法吗 function imaginary(){ return { rational: this, imaginary: "2i" //magic code that does this }; }; Number.prototype.imaginary = imaginary; 我不是数学专

最近,我试着用一些方程来计算,其中包括虚数
I
。但是,与
e
π
不同,没有任何方法或本机函数返回
i
。谷歌上的一个搜索引擎没有给我任何答案。关于如何实现它有什么想法吗

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

我不是数学专家,但我尝试用另一个术语搜索,结果不一样

检查以下各项:


我希望这能有所帮助。

假设你真的想要复数,而不仅仅是虚数:

我会模拟一个复数,就像你模拟一个二维点一样,也就是一对数字

正如点有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


有关除法和求幂,请参见math.js库支持复数、矩阵等。该库与JavaScript的内置数学库兼容,因此非常易于使用

你可以这样做:

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

看看这里:^第一个结果似乎有很好的信息…什么样的计算?只是+-*/,或指数,等等?例如:
(5+2i)*(9+5i)=newValue
e^(i*pi)
上面发布的链接已失效。然而,这里有一个复制版本要感谢wayback机器:mathjs不支持将复数转换为极坐标或极坐标,这与大多数其他语言中的复数库不同。也许看看你是否需要它。mathjs现在支持从极坐标创建和转换复数。当我尝试
math.eval('e^(pi*I)+1')
时,我得到了1.2246467991473532e-16。这是在使用
termux
应用程序的手机上的节点REPL中出现的。@trysia这些都是数字舍入错误,请参阅文档:虽然这些链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。