Почему в
MATLAB Version: 8.1.0.604 (R2013a)
>> sin(2+3i)*atan(4i)/(1-6i)
ans =
-1.8009 - 1.9190i
>> sin(2+3i)*atan((4i))/(1-6i)
ans =
-1.8009 - 1.9190i
>> atan(4i)
ans =
-1.5708 + 0.2554i
MATLAB Version 6.5.0.180913a (R13)
>> sin(2+3i)*atan(4i)/(1-6i)
ans =
1.1002 + 2.3907i
>> sin(2+3i)*atan((4i))/(1-6i)
ans =
1.1002 + 2.3907i
>> atan(4i)
ans =
1.5708 + 0.2554i
Объясните пожалуйста, почему так?
И чему же все-таки равен atan(4i)?
Ответ
Провёл небольшое исследование и выяснил следующее. Если скормить WolframAlpha вот эти уравнения (если не заметили, то я в левой части i заменил на x): sin(2+3x)*atan(4x)/(1-6x) = 1.1002 + 2.3907i и sin(2+3x)*atan(4x)/(1-6x) = -1.8009 - 1.9190i то среди их корней будет и x = i (с некоторой погрешностью). Это наводит на мысль, что оба результата верны. Однако по тем или иным причинам Matlab в разных версиях отдаёт предпочтение разным вариантам. Возможно, в какой-то версии между 6.5.0.180913a и 8.1.0.604 был переработан алгоритм работы тригонометрических функций или функций, работающих с комплексныыми числами. Возможно, вам стоит обратиться на форум Математика, есть шанс, что там сидят люди, знакомые с такой ситуацией. P. S. WolframAlpha считает, что правильный ответ 1.1002 + 2.3907i
Комментариев нет:
Отправить комментарий