Как вычислить квадратный корень из отрицательных чисел?

Я пытаюсь создать комплексное число из квадратного корня отрицательного числа, используя следующий код:

 include Math
 z = Complex(sqrt(-9))

Но он выдает эту ошибку:

Math::DomainError: Numerical argument is out of domain - "sqrt"
    from kata2.rb:20:in `sqrt'
    from kata2.rb:20:in `polinomio'
    from kata2.rb:34
    from /home/howarto/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>'

Как построить комплексное число из квадратного корня из отрицательного числа?


person Howarto    schedule 02.09.2013    source источник
comment
Если вы используете библиотеки, укажите, что вы используете. Что такое c? Это метод? Это локальная переменная? Это цифра? Это положительно? Это отрицательно? Не используйте его без объяснения причин. Не давайте пытаться угадать.   -  person sawa    schedule 02.09.2013
comment
Извините, в следующий раз выложу весь код. c было числом   -  person Howarto    schedule 02.09.2013


Ответы (1)


Функция Math.sqrt не может вычислить квадратный корень из отрицательных чисел:

irb> Math.sqrt(-1)
Math::DomainError: Numerical argument is out of domain - "sqrt"
...

Вы должны использовать модуль CMath которые возвращают комплексные числа по мере необходимости:

irb> require 'cmath'
irb> CMath.sqrt(-1)
# => (0+1.0i) 
irb> CMath.sqrt(-1).class
# => Complex
irb> CMath.sqrt(1).class
# => Float
person toro2k    schedule 02.09.2013