Если я создаю комплексное число с амплитудным отрицанием (-1) и без фазы (0), что соответствует удвоению -1 и преобразует его обратно в амплитуду и фазу, амплитуда не отрицательнаC++ получить отрицательные числа из комплекса
complex<double> c;
c = polar(-1.0, 0.0);
cout << c << ", " << abs(c) << ", " << arg(c) << endl;
выход
(-1, 0), 1, -3.14159
он должен был
(-1, 0), -1, 0
Как я могу получить BAC k правильное значение амплитуды?
полярный (-1.0,0.0) => -180 градусов аргумент, 1 радиус. Радиус не может быть отрицательным. –
Вы знаете, что отображение (rho, theta) - (abs, arg) не является строго биективным? – vaxquis
Правильный инструмент для решения таких проблем - ваш отладчик. Перед тем, как просить о переполнении стека, вы должны пропустить свой код по очереди *. Для получения дополнительной информации, пожалуйста, прочтите [Как отлаживать небольшие программы (Эрик Липперт)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как минимум, вы должны \ [изменить] ваш вопрос, чтобы включить пример [Минимальный, полный и проверенный] (http://stackoverflow.com/help/mcve), который воспроизводит вашу проблему, а также замечания, сделанные вами в отладчик. –