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

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

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

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

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

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

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


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

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

6   голосов , оценка 4.167 из 5

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

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

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