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