- 积分
- 264
- 明经币
- 个
- 注册时间
- 2004-3-1
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
各位高手,我最近学习autolisp,编了一个程序作为毕业设计用。但是运行时,出现invalid argument 错误信息,这是一个大程序中的一个子程序,目的是求出其中的一点,然后转道cy7继续执行,其中一种情况涉及到解方程(已知解肯定在这两点之间),是我自己编的,按照0.618卓见逼近。麻烦各位高手给看看。
y7,y6,x7,x6,low_x11,low_x22都有前面的程序求出来了
(defun cy6 (/ d1 d2 d0 h_x hx1 hx2 hx3 dd1 dd3) (setq d0 (/ (- y7 y6) (- x7 x6))) (if (< x6 low_x11) (setq x6 low_x11) ) (if (> x7 low_x22) (setq x7 low_x22) ) ; end if (setq d1 (- (exp (- x6 low_x)) (exp (- low_x x6)))) (setq d2 (- (exp (- x7 low_x)) (exp (- low_x x7)))) (setq d1 (/ d1 2)) (setq d2 (/ d2 2)) (cond ((<= d2 d0) (setq h_x x7) (cy7) ) ((>= d1 d0) (setq h_x x6) (cy7) ) ((and (< d1 d0) (> d2 d0)) (setq hx1 x6) (setq hx2 x7) (setq dd1 d1) ;;; (while (> (abs (- dd1 d0)) 1.0e-10) (setq hx3 (+ hx1 (* 0.618 (- hx2 hx1)))) (setq dd3 (- (exp (- hx3 low_x)) (exp (- low_x hx3)))) (setq dd3 (/ dd3 2)) (if (> dd3 d0) (setq hx2 hx3) (progn (setq hx1 hx3) (setq dd1 dd3) ) ;end progn ) ;end if ) ;end while (setq h_x hx1) (cy7) ) ) ) ;end cy6
|
|