Комплексная арифметика в Common Lisp

Узнай цену своей работы

Формулировка задачи:

Не верю своим глазам... Работаю в LispWorks:
Листинг программы
  1. CL-USER 1 > (defun test (x)
  2. (+ (* (cos x) (cos x)) (* (sin x) (sin x)))) ;; функция должна возвращать 1...
  3. TEST
  4. CL-USER 2 > (test 1) ;; OK
  5. 0.99999995
  6. CL-USER 3 > (test 10) ;; OK
  7. 1.0
  8. CL-USER 4 > (test 20) ;; OK
  9. 1.0
  10. CL-USER 5 > (test #C(1 1)) ;; OK (хотя точность... ну, ладно - float)
  11. #C(1.0000001 1.1920929E-7)
  12. CL-USER 6 > (test #C(30 30)) ;; ЧТО ЭТО ?
  13. #C(0.0 0.0)
  14. CL-USER 7 > (test #C(10 10)) ;; А ЭТО ?
  15. #C(20.0 0.0)
  16. CL-USER 8 > (test #C(0.5 -0.8)) ;; ОК
  17. #C(1.0000002 -5.9604646E-8)
Что происходит?

Решение задачи: «Комплексная арифметика в Common Lisp»

textual
Листинг программы
  1. x:=30+30*I;
  2. > evalf(sin(x)^2,30);
  3. > evalf(cos(x)^2,30);
  4. > evalf(sin(x)^2+cos(x)^2,30);
  5.  
  6.                             x := 30 + 30 I
  7.  
  8.  
  9.                                      26
  10.   0.271915665447622268381856029215 10   -
  11.  
  12.                                            25
  13.         0.870239954482600088075880628745 10   I
  14.  
  15.  
  16.                                       26
  17.   -0.271915665447622268381856019215 10   +
  18.  
  19.                                            25
  20.         0.870239954482600088075880628744 10   I
  21.  
  22.  
  23.                           1.0000 - 0.00001 I

Объяснение кода листинга программы

В этом коде выполняются вычисления с комплексными числами в Common Lisp. Вот список номеров и названий переменных и их значений:

  1. x := 30 + 30 I — это присваивание переменной x значение 30 + 30 I (комплексное число)
  2. evalf(sin(x)^2,30) — это вызов функции evalf с аргументом sin(x)^2 и указанием точности вычисления 30. Функция sin(x) возвращает синус комплексного числа x, а ^2 означает возведение в квадрат. В данном случае, результат вычисления будет вещественным числом.

  3. evalf(cos(x)^2,30) — это вызов функции evalf с аргументом cos(x)^2 и указанием точности вычисления 30. Функция cos(x) возвращает косинус комплексного числа x, а ^2 означает возведение в квадрат. В данном случае, результат вычисления будет вещественным числом.

  4. evalf(sin(x)^2+cos(x)^2,30) — это вызов функции evalf с аргументом sin(x)^2+cos(x)^2 и указанием точности вычисления 30. В данном случае, результат вычисления будет вещественным числом.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут