Написать функцию для вычисления полиномов Лежандра - Lisp

Узнай цену своей работы

Формулировка задачи:

Всем доброго времени! Ниже дано задание (пунктуация и написание сохранено).
Напишите рекурсивную функцию для вычисления полиномов Лежандра (P0(x)=1, P1(x)=x, Pn+1(x)= ((2*n+1)*x*Pn(x)-n*Pn-1(x))/(n+1) при n>1).
По нему написал функцию, но не знаю правильно ли. Подскажите пожалуйста.
Листинг программы
  1. (defun lejandr (n x)
  2. (if (= n 0) 1
  3. (if (= n 1) x
  4. (/ (- (* (+ (* 2 (- n 1)) 1) x (lejandr (- n 1) x)) (* n (lejandr (- n 2) x))) (+ (- n 1) 1)))))

Решение задачи: «Написать функцию для вычисления полиномов Лежандра»

textual
Листинг программы
  1. (print-leg 10)
  2.  
  3. +x
  4. -(1/2)+(3/2)x^2
  5. -(3/2)x+(5/2)x^3
  6. (3/8)-(15/4)x^2+(35/8)x^4
  7. +(15/8)x-(35/4)x^3+(63/8)x^5
  8. -(5/16)+(105/16)x^2-(315/16)x^4+(231/16)x^6
  9. -(35/16)x+(315/16)x^3-(693/16)x^5+(429/16)x^7
  10. (35/128)-(315/32)x^2+(3465/64)x^4-(3003/32)x^6+(6435/128)x^8
  11. +(315/128)x-(1155/32)x^3+(9009/64)x^5-(6435/32)x^7+(12155/128)x^9
  12. -(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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы