Комплексная арифметика в Common Lisp
Формулировка задачи:
- CL-USER 1 > (defun test (x)
- (+ (* (cos x) (cos x)) (* (sin x) (sin x)))) ;; функция должна возвращать 1...
- TEST
- CL-USER 2 > (test 1) ;; OK
- 0.99999995
- CL-USER 3 > (test 10) ;; OK
- 1.0
- CL-USER 4 > (test 20) ;; OK
- 1.0
- CL-USER 5 > (test #C(1 1)) ;; OK (хотя точность... ну, ладно - float)
- #C(1.0000001 1.1920929E-7)
- CL-USER 6 > (test #C(30 30)) ;; ЧТО ЭТО ?
- #C(0.0 0.0)
- CL-USER 7 > (test #C(10 10)) ;; А ЭТО ?
- #C(20.0 0.0)
- CL-USER 8 > (test #C(0.5 -0.8)) ;; ОК
- #C(1.0000002 -5.9604646E-8)
Решение задачи: «Комплексная арифметика в Common Lisp»
- x:=30+30*I;
- > evalf(sin(x)^2,30);
- > evalf(cos(x)^2,30);
- > evalf(sin(x)^2+cos(x)^2,30);
- x := 30 + 30 I
- 26
- 0.271915665447622268381856029215 10 -
- 25
- 0.870239954482600088075880628745 10 I
- 26
- -0.271915665447622268381856019215 10 +
- 25
- 0.870239954482600088075880628744 10 I
- 1.0000 - 0.00001 I
Объяснение кода листинга программы
В этом коде выполняются вычисления с комплексными числами в Common Lisp. Вот список номеров и названий переменных и их значений:
- x := 30 + 30 I — это присваивание переменной x значение 30 + 30 I (комплексное число)
-
evalf(sin(x)^2,30) — это вызов функции evalf с аргументом sin(x)^2 и указанием точности вычисления 30. Функция sin(x) возвращает синус комплексного числа x, а ^2 означает возведение в квадрат. В данном случае, результат вычисления будет вещественным числом.
-
evalf(cos(x)^2,30) — это вызов функции evalf с аргументом cos(x)^2 и указанием точности вычисления 30. Функция cos(x) возвращает косинус комплексного числа x, а ^2 означает возведение в квадрат. В данном случае, результат вычисления будет вещественным числом.
-
evalf(sin(x)^2+cos(x)^2,30) — это вызов функции evalf с аргументом sin(x)^2+cos(x)^2 и указанием точности вычисления 30. В данном случае, результат вычисления будет вещественным числом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д