如何定义反余弦函数
<P>LISP中没有反余弦函数,但计算中常知道三角形的三个边,这时需要求出该三角形的一个角则没有相应的反余弦函数拿来用.相关计算公式:arccos(A)=arccos[(b*b+c*c -a*a)/2*b*c].如何定义这样一个函数呢?</P><P>恳请哪位大侠指教!</P>
<P>谢谢!</P>
用这个子程序可以解决问题吗?
<P>(defun acos(val)</P><P>(atan (/ (sqrt (- 1.0 (* val val))) val))</P>
<P>)</P> <P>这样可以避免出现差错,也可加快运行 !</P>
<P>(defun acos (x / ls ) <BR> (cond <BR> ((= x 0) (setq ls (* 0.5 pi)))<BR> ((= x 1) (setq ls 0))<BR> ((= x -1) (setq ls pi))<BR> ((> (abs x) 1) <BR> (alert " ** ERROR ** \n arccos(x)的最大值是 1") <BR> (setq pbcos "ERROR" ls 0)<BR> )<BR> ((< (abs x) 1)<BR> (setq ls (atan (/ (sqrt (- 1 (* x x))) x)) )<BR> )<BR> );cond <BR>);defun acos</P>
页:
[1]