Курсовая работа: Численное интегрирование функции методом Гаусса

(setq m (/ (+ b a) 2))

(setq n (/ ( - b a) 2))

(setq s1 (* g10c1 (+ (funcall f (+ m (* n g10x1))) (funcall f ( - m (* n g10x1))))))

(setq s2 (* g10c2 (+ (funcall f (+ m (* n g10x2))) (funcall f ( - m (* n g10x2))))))

(setq s3 (* g10c3 (+ (funcall f (+ m (* n g10x3))) (funcall f ( - m (* n g10x3))))))

(setq s4 (* g10c4 (+ (funcall f (+ m (* n g10x4))) (funcall f ( - m (* n g10x4))))))

(setq s5 (* g10c5 (+ (funcall f (+ m (* n g10x5))) (funcall f ( - m (* n g10x5))))))

(setq s (+ s1 s2 s3 s4 s5))

(* s ( - b a))

)

;; рекурсивная ф-ция подсчета с заданной точностью

;; gc - ранее посчитаный интеграл на интервале (a,b)

( defun Gauss (a b eps gc f)

;; разбиваем интервал на две половины

( setq k (/ (+ a b) 2))

;; в каждой половине считаем интеграл

( setq ga (Gauss_Calc a (/ (+ a b) 2) f))

(setq gb (Gauss_Calc (/ (+ a b) 2) b f))

(if (> (abs ( - (+ ga gb) gc)) eps)

(progn

(setq ga (Gauss a (/ (+ a b) 2) (/ eps 2) (Gauss_Calc a (/ (+ a b) 2) f) f))

(+ ga (Gauss (/ (+ a b) 2) b (/ eps 2) (Gauss_Calc (/ (+ a b) 2) b f) f))

)

(+ ga gb)

)

)

;; открываем файл для чтения

( setq input-stream (open " d: \\predel. txt": direction: input))

(setq a (read input-stream))

К-во Просмотров: 372
Бесплатно скачать Курсовая работа: Численное интегрирование функции методом Гаусса