在javascript中使用虚数的trig函数

时间:2014-02-17 15:53:08

标签: javascript math

我正在尝试用javascript编写一些代码来计算trig函数,反三角函数和带虚数的双曲三角函数。我有罪,cos,sinh和cosh运作良好。但是,我在为其他人提供的解决方案与我在this site找到的唯一验证相匹配时遇到了一些问题。

例如,下面是asin(x + yi)的代码。我正在使用位于here的公式以及在那里找到的模数和参数的定义。它没有错误,但与我引用的网站的结果不符。我做错了什么?

ASIN(Z)= - I * LN(IZ + SQRT(1-Z ^ 2))

var id1=SquareComplex (window[id].Solution_real, window[id].Solution_imag);     
var real=1-window[id1].Solution_real;
var imag=window[id1].Solution_imag;
var id2=SquareRoot(real, imag); 
imag=window[id].Solution_real+window[id2].Solution_imag;
real=-window[id].Solution_imag+window[id2].Solution_real;
var modulus=Math.sqrt(real^2+imag^2);
var argument=Math.atan2(imag,real);  
var Solution_imag=-Math.log(modulus);
var Solution_real=argument;

此代码旨在分几步完成。第一行调用一个对复数z进行平方的函数。第二行和第三行从数字1中减去结果。第四行调用一个函数来取复数的平方根。第五行和第六行将先前动作的结果添加到将复数乘以i的结果。其余的行得到这些结果的模数和参数,取自然对数,然后乘以负数i。

2 个答案:

答案 0 :(得分:0)

你的前三行是:

var id1=SquareComplex (window[id].Solution_real, window[id].Solution_imag);     
var real=1-window[id1].Solution_real;
var imag=window[id1].Solution_imag;

假设id是您的初始z,那么这不会计算1-z^2的实部和虚部,因为我认为它是无意的。原因是假想部分没有被减去。

尝试

var imag = -window[id1].Solution_imag;

看看是否有帮助。我无法保证其中没有任何错误,但我建议您仔细检查并确保每条线都做到应有的效果。

答案 1 :(得分:0)

您可能对math.js感兴趣,它支持包括三角函数在内的所有函数的复数:

var value = math.complex(2, 3);
var ans = math.asin(value);

或者使用表达式解析器:

var ans = math.eval('asin(2 + 3i)');