如何用JavaScript中的虚数计算?

Der*_*會功夫 19 javascript math

最近,我试图使用一些涉及其中虚数的方程来计算i.但是,与eor 不同?,没有任何方法或本机函数会返回i.一个快速搜索在谷歌没有得到我任何答复.关于如何实现它的任何想法?

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

Jos*_*ong 17

math.js库支持复数,矩阵等.该库与JavaScript的内置Math库兼容,因此非常易于使用.

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...
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,math.js附带了一个表达式解析器,这使得处理复杂的值和数学表达式更加方便:

math.eval('(2 + 3i) * (4 + 5i)'); // -7 + 22i
Run Code Online (Sandbox Code Playgroud)

  • mathjs现在支持从极坐标创建和转换复数,[见文档](https://github.com/josdejong/mathjs/blob/master/docs/datatypes/complex_numbers.md). (3认同)
  • @trysis 这些是数字舍入错误,请参阅文档:http://mathjs.org/docs/datatypes/numbers.html#roundoff-errors (3认同)
  • mathjs 不支持将复数转换为极坐标或从极坐标转换,这与大多数其他语言中的复数库不同。如果需要,也许可以查看 https://npmjs.org/package/Complex。 (2认同)

mbe*_*ish 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


ebr*_*lil 5

我不是数学专家,但我尝试用另一个术语搜索,我得到了不同的结果.

检查这些:

我希望这有帮助.

  • 虽然这些链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 (2认同)