我正在尝试用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。
答案 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)');