阿然 发表于 2014-4-26 10:53:05

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)))
)

lpx530115 发表于 2024-11-13 16:45:49

大佬,你好,这个http://bbs.mjtd.com/forum.php?mod=viewthread&tid=100248(批量相同组合图元关联修改)的帖子里的完整程序,可以提供一下吗,冲压模具上比较有用?谢谢。
页: [1]
查看完整版本: Gauss-Legendre积分法