Gauss-Legendre积分法
本帖最后由 阿然 于 2014-4-26 10:55 编辑学习lisp这么久以来,深感不是不能理解Lisp的各种函数使用方法,而是算法方面的知识缺失更加困扰我,痛定思痛,努力向各前辈学习各种算法,下面是刚学习的Gauss-legendre积分法,请各位指教,谢谢
;;;5阶Gauss-Legendre积分法
;;; a 下限
;;; b 上限
;;; eps精度
;;; 其中函数fun为自定义被积函数计算式
(defun gauss (a b eps / m i j s p ep h aa bb w x g tk c)
(setqtk '(-0.9061798459 -0.5384693101 0.0 0.5384693101 0.9061798459)
c '(0.2369268851 0.4786286705 0.5688888889 0.4786286705
0.2369268851)
)
(setqm1
h(- b a)
s(abs (* 0.001 h))
p1.0e+35
ep (+ eps 1.0)
)
(while (and (>= ep eps)
(> (abs h) s)
)
(setq g 0.0
i 1
)
(while (<= i m)
(setq aa (+ a (* (- i 1) h))
bb (+ a (* i h))
w0.0
)
(setq j 0)
(repeat 5
(setq x(/ (+ (* (- bb aa) (nth j tk)) bb aa) 2.0)
w(+ w (* (fun x) (nth j c)))
)
(setq j (1+ j))
)
(setq g (+ g w)
i (1+ i)
)
)
(setq g(* g h 0.5)
ep (/ (abs (- g p)) (+ 1.0 (abs g)))
pg
m(1+ m)
h(/ (- b a) m)
)
)
g
)
(defun fun (x)
(setq y (+ (* x x) (sin x)))
)
大佬,你好,这个http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100248(批量相同组合图元关联修改)的帖子里的完整程序,可以提供一下吗,冲压模具上比较有用?谢谢。
页:
[1]