Ю1.11

Задача

     Комплексное число. Заданы действительная и мнимая части комплексного числа     [latex]z=x+\imath \cdot y[/latex] .  Преобразовать его в тригонометрическую форму и напечатать в виде выражения:

[latex]z=r\cdot\left(\cos\varphi+\sin \varphi\right)[/latex] .

     Для справки:    [latex]r=\sqrt{x^{2}+y^{2}}[/latex] ;      [latex]\varphi= \text{arctg} \left(\frac{y}{x}\right)[/latex]  .

x

y

Результат

Комментарий

4

2

z = 4.47214 * (cos(0.463648) + i *sin(0.463648))

пройден

1

0

z = 1 * (cos(0) + i * sin(0))

пройден

-1

-2

z = 2.23607 * (cos(-2.03444) + i * sin(-2.03444))

пройден

0

0

no answer

пройден;

(x стоит в знаменателе и не может быть нолем)

-100

356

z = 369.778 * (cos(1.84464) + i * sin(1.84464))

пройден

1,2

5,4

  z = 5.53173 *(cos(1.35213) + i*sin(1.35213))

пройден

 Код программы:

 

В условии задачи даны все нужные формулы.

Программа вычисляет r (радиус [latex]r[/latex]) и f (угол [latex]\varphi[/latex] ) и выводит их, вставляя в формулу геометрической формы комплексного числа  (которая не меняется).

Для выполнения программы и проверки тестов можно воспользоваться следующим объектом.

Решение на Java:

 

Денисова Ольга
Денисова Ольга

Latest posts by Денисова Ольга (see all)

9 thoughts on “Ю1.11

  1. Эта задача коварней, чем кажется. Вы используете функцию atan, которая как и нормальная математическая функция арктангенса, выдает интервалы в промежутке [-pi/2,+pi/2], что недостаточно, чтобы задать точку на (комплексной) плоскости. Лучше воспользоваться функцией atan2.

    И в таком случае, я не понимаю, как у Вас пройден тест

    «x=-1 y=-2 z = 2.23607 *(cos(1.10715) + i*sin(1.10715))»

    ???

    Просто наберите в google строчку

    2.23607 *(cos(1.10715) + i*sin(1.10715))

    и посмотрите, что выйдет.

    Кстати для функции arctg в LaTeX есть конструкция … посмотрел и, к сожалению, в » ONLINE РЕДАКТОР ФОРМУЛ LATEX » такой конструкции нет, но можно набрать с клавиатуры \operatorname{arctg}

    • Забыл отметить, звездочку в математических формулах использовать не нужно, умножение представляется маленькой точкой ( \cdot — center dot в разделе символы).

    • Как вы и сказали я ввела в гугле и получила ответ :
      0.99999834 + 2.00000309 i
      Разве он неправильный?

      Когда я исправила функцию atan на atan2 компилятор выдал ошибку.

      Когда изменила в формуле латекс arctg на \operatorname{arctg} формула перестала отображаться.

      В таблице тестов, в колонке «результат», указаны не формулы, а то, что выводит компилятор. Нужно ли их тоже записывать в latex?

      (Я пока откатила все новые изменения и оставила так как было).

      • 0.99999834 + 2.00000309 i — это чему в реальности и равно то что Вы вывели, т.е 2.23607 *(cos(1.10715) + i*sin(1.10715))! Но у Вас в исходных данных было x=-1, y=-2, т.е. число -1 — 2 i, а Вы фактически представили 1 + 2 i. Вы заметили, что atan2 имеет два аргумента, а не один? И в каком порядке их подставлять. Не зря я Вам привел ссылку.

        \operatorname{arctg} увы действительно на сайте не работает, в онлайн редакторе формул все в порядке, заменил в Вашем посте на
        \text{arctg}, не очень правильно логически, т.к. arctg это таки мат. функция, а не текст, но зато выглядит правильно.

        В колонке результат указаны значения правильно, ну вернее их можно указать в таком виде, вопрос в том как они там берутся. Если их генерирует Ваша программа в качестве ответа, то нужно проверить их как-то иначе, например ввести в гугл значения колонки результаты, как я сделал с тестом номер 3. Ведь в чем суть таблицы тестов. Если Вы вводите исходные данные из таблицы, программа должна напечатать ответ, который совпадает с колонкой результатов. Т.е. эта таблица используется для проверки программы. Если же Вы получаете таблицу при помощи программы, Вы проверяете программу при помощи самой же этой программы, что странно. А уж как должна выглядеть колонка, в математической нотации или как выдает программа, это не такой очевидный вопрос, не уверен как лучше.

  2. Кстати, теперь условие (x != 0) можно заменить на (x != 0 || y != 0), т.к. atan2 правильно обрабатывает ситуацию нулевого x. Более того, несмотря на то что atan2 должна генерировать ошибку для двух нулей (If both arguments passed are zero, a domain error occurs) , у меня программа работает даже вообще безо всякого условия, выдавая угол, равный нулю, при x=0, y=0.