Вычисление определенного интеграла по формуле прямоугольников на равномерной сетке - Lisp

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

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

Зная значения функции в равностоящих точках на отрезке, вычислить определенный интеграл по формуле прямоугольников: I = h *(f0 + f1 + f2 +f3+...+ fn-1+ fn) Значения функции в точках и шаг разбиения отрезка заданы списком: (f0 f1 f2 f3 ….fn-1 fn h), h – шаг разбиения. Есть решение
(define bar (list 1 2 3 4 2)) 
(define (revert l) 
(if (null? l) null 
(append (revert (cdr l)) (list (car l))) 
) 
) 
(* (car (revert bar)) (apply + (cdr (revert bar))))
Можно ли как-то сделать это с помощью макроса (ну или просто добавить какой-нибудь макрос, можно вообще любой)?

Решение задачи: «Вычисление определенного интеграла по формуле прямоугольников на равномерной сетке»

textual
Листинг программы
(defmacro int-00 (lst)
  (let ((h (gensym 'h))
        (f (gensym 'f)))
   `(let ((,h (car (last ',lst)))
          (,f (butlast ',lst)))
      (* ,h (apply '+ ,f)))))

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


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

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

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