Шаг 123.
Основы языка Haskell. Абстрактные типы данных (АТД). Ассоциативные списки на базе списка пар. Моделирование комплексных чисел

    На этом шаге мы рассмотрим моделирование работы с комплексными чслами.

    Среди библиотечных модулей находится модуль Complex, предназначенный для работы с комплексными числами [1, с.239-240].

    Рассмотрим демонстрационный пример.

   -- Демонстрация работы с комплексными числами
   -- с помощью библиотеки Complex   
   -- ****************************
   import Complex
   -----------------------------------------------
   -- Представление комплексных чисел в библиотеке
   -----------------------------------------------
   ch1 = 1 :+ 2
   ch2 = 3 :+ 4
   -------------------------------------
   -- Операции над комплексными числами:
   ---------------------------------------------------
   -- (1) нахождение действительной части комплексного 
   --     числа
   --------------------
   test1 = realPart ch1
   -------------------------------------------------
   -- (2) нахождение мнимой части комплексного числа
   -------------------------------------------------
   test2 = imagPart ch1
   ------------------------------------
   -- (3) нахождение сопряженного числа
   ------------------------------------
   test3 = conjugate ch1
   -------------------------------------------
   -- (4) нахождение модуля комплексного числа
   -------------------------------------------
   test4 = magnitude ch1
   -----------------------------------------------
   -- (5) вычисление аргумента комплексного числа
   -----------------------------------------------
   test5 = phase ch2
   ------------------------------------------------
   -- (6) нахождение комплексного числа по заданным
   --     полярным координатам
   -------------------------------
   test6 = mkPolar (sqrt 2) (pi/4)
   -------------------------------------------------
   -- (7) нахождение полярных координат по заданному
   --     комплексному числу
   -------------------------
   test7 = polar ch1
   ---------------------------------------------------
   -- (8) нахождение комплексного числа с модулем 1 по
   --     заданному аргументу
   --------------------------
   test8 = cis (pi/4)
   ------------------------------------------------------
   -- (9) преобразование целого числа в комплексное число
   ------------------------------------------------------
   test9 = fromInteger 7
   -----------------------------------------------
   -- (10) вычисление суммы двух комплексных чисел
   -----------------------------------------------
   test10 = ch1+ch2
   --------------------------------------------------
   -- (11) вычисление разности двух комплексных чисел
   --------------------------------------------------
   test11 = ch1-ch2
   ------------------------------------------------------
   -- (12) вычисление произведения двух комплексных чисел
   ------------------------------------------------------
   test12 = ch1*ch2
   --------------------------------------------------
   -- (13) вычисление частного двух комплексных чисел
   --------------------------------------------------
   test13 = ch1/ch2
   ---------------------------------------------------
   -- (14) возведение комплексного числа в комплексную
   --      степень
   -----------------------------------------------------------
   test14:: Complex Double -> Complex Double -> Complex Double 
   test14 x y = x**y
   ----------------------------------------------------------
   -- (15) извлечение квадратного корня из комплексного числа
   ----------------------------------------------------------
   test15 = sqrt ch2
   --------------------------------------------------------
   -- (16) извлечение корня n-степени из комплексного числа
   --------------------------------------------------------
   test16 x n = x**(1.0/n)
   ---------------------------------------------------
   -- (17) операции с комплексными числами и числом pi
   ---------------------------------------------------
   test17 = ch1+pi
   ---------------------------------------------------
   -- (18) вычисление значения комплексной функции exp
   ---------------------------------------------------
   test18 = exp ch2
   ---------------------------------------------------
   -- (19) вычисление значения комплексной функции log
   --      (натуральный логарифм)
   ------------------------------
   test19 = log ch2
   ---------------------------------------------------
   -- (20) вычисление значения комплексной функции sin
   ---------------------------------------------------
   test20 = sin ch2
   ---------------------------------------------------
   -- (21) вычисление значения комплексной функции cos
   ---------------------------------------------------
   test21 = cos ch2
   ---------------------------------------------------
   -- (22) вычисление значения комплексной функции tan
   --      (тангенс)
   -----------------
   test22 = tan ch2
   ----------------------------------------------------
   -- (23) вычисление значения комплексной функции sinh
   --      (гиперболический синус)
   -------------------------------
   test23 = sinh ch2
   ----------------------------------------------------
   -- (24) вычисление значения комплексной функции cosh
   --      (гиперболический косинус)
   ---------------------------------
   test24 = cosh ch2
   ----------------------------------------------------
   -- (25) вычисление значения комплексной функции tanh
   --      (гиперболический тангенс)
   ---------------------------------
   test25 = tanh ch2
   ----------------------------------------------------
   -- (26) вычисление значения комплексной функции asin
   --      (арксинус).
   --      Внимание! Возможны непонятные результаты:
   --      > asin (sin ch1)
   ------------------------
   test26 = asin ch2
   ----------------------------------------------------
   -- (27) вычисление значения комплексной функции acos
   --      (арккосинус)
   --------------------
   test27 = acos ch2
   ----------------------------------------------------
   -- (28) вычисление значения комплексной функции atan
   --      (арктангенс)
   --------------------
   test28 = atan ch2
   -----------------------------------------------------
   -- (29) вычисление значения комплексной функции asinh
   --      (гиперболический арксинус)
   ----------------------------------
   test29 = asinh ch2
   -----------------------------------------------------
   -- (30) вычисление значения комплексной функции acosh
   --      (гиперболический арккосинус)
   ------------------------------------
   test30 = acosh ch2
   -----------------------------------------------------
   -- (31) вычисление значения комплексной функции atanh
   --      (гиперболический арктангенс).
   --      Внимание! Возможны непонятные результаты:
   --      > atanh (tanh ch1)
   --------------------------
   test31 = atanh ch2
Файл с примерами можно взять здесь.
(1)Роганова Н.А. Функциональное программирование. - М: ГИНФО, 2002. - 260 с.

    На следующем шаге мы рассмотрим работу с битами.




Предыдущий шаг Содержание Следующий шаг