Комплексная арифметика в 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. В данном случае, результат вычисления будет вещественным числом.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д