Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

В разных версиях Matlab функция atan возвращaeт разный результат

Почему в 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

Комментариев нет:

Отправить комментарий