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