最近,我试图使用一些涉及虚数 i
的方程来计算。但是,与 e
或π
不同,没有任何方法或本机函数会返回 i
。谷歌中的quick search没有得到任何答案。关于如何实现它的任何想法?
function imaginary(){
return {
rational: this,
imaginary: "2i" //magic code that does this
};
};
Number.prototype.imaginary = imaginary;
答案 0 :(得分:17)
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
答案 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)
我不是数学专家,但我试着用另一个词来搜索,我得到了不同的结果。
检查这些:
我希望这会有所帮助。