Написать функцию для вычисления полиномов Лежандра - Lisp
Формулировка задачи:
Всем доброго времени!
Ниже дано задание (пунктуация и написание сохранено).
По нему написал функцию, но не знаю правильно ли.
Подскажите пожалуйста.
Напишите рекурсивную функцию для вычисления полиномов Лежандра (P0(x)=1, P1(x)=x, Pn+1(x)= ((2*n+1)*x*Pn(x)-n*Pn-1(x))/(n+1) при n>1).
(defun lejandr (n x) (if (= n 0) 1 (if (= n 1) x (/ (- (* (+ (* 2 (- n 1)) 1) x (lejandr (- n 1) x)) (* n (lejandr (- n 2) x))) (+ (- n 1) 1)))))
Решение задачи: «Написать функцию для вычисления полиномов Лежандра»
textual
Листинг программы
(print-leg 10) +x -(1/2)+(3/2)x^2 -(3/2)x+(5/2)x^3 (3/8)-(15/4)x^2+(35/8)x^4 +(15/8)x-(35/4)x^3+(63/8)x^5 -(5/16)+(105/16)x^2-(315/16)x^4+(231/16)x^6 -(35/16)x+(315/16)x^3-(693/16)x^5+(429/16)x^7 (35/128)-(315/32)x^2+(3465/64)x^4-(3003/32)x^6+(6435/128)x^8 +(315/128)x-(1155/32)x^3+(9009/64)x^5-(6435/32)x^7+(12155/128)x^9 -(63/256)+(3465/256)x^2-(15015/128)x^4+(45045/128)x^6-(109395/256)x^8+(46189/256)x^10
Объяснение кода листинга программы
В этом коде используется функция для вычисления полиномов Лежандра, называемая print-leg, которая принимает один аргумент, представляющий собой целое число. Функция print-leg выводит коэффициенты полинома Лежандра для заданного порядка полинома. Код начинается с вызова функции print-leg со значением 10 в качестве аргумента. Затем следуют коэффициенты полинома Лежандра для порядка 10, которые вычисляются внутри функции print-leg. Пожалуйста, обратите внимание, что значения коэффициентов полинома Лежандра округлены до ближайшего целого числа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д