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

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


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

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

11   голосов , оценка 4.273 из 5
Похожие ответы