明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2434|回复: 2

如何定义反余弦函数

[复制链接]
发表于 2005-12-31 15:56:00 | 显示全部楼层 |阅读模式

LISP中没有反余弦函数,但计算中常知道三角形的三个边,这时需要求出该三角形的一个角则没有相应的反余弦函数拿来用.相关计算公式:arccos(A)=arccos[(b*b+c*c -a*a)/2*b*c].如何定义这样一个函数呢?

恳请哪位大侠指教!

谢谢!

发表于 2006-1-5 08:18:00 | 显示全部楼层

用这个子程序可以解决问题吗?

(defun acos(val)

(atan (/ (sqrt (- 1.0 (* val val))) val))

)

发表于 2006-4-3 09:57:00 | 显示全部楼层

这样可以避免出现差错,也可加快运行 !

(defun acos (x / ls )
 (cond
    ((= x 0)  (setq ls (* 0.5 pi)))
    ((= x 1)  (setq ls 0))
    ((= x -1) (setq ls pi))
    ((> (abs x) 1)      
      (alert "     ** ERROR **  \n arccos(x)的最大值是 1")     
      (setq pbcos "ERROR" ls 0)
    )
    ((< (abs x) 1)
      (setq ls (atan (/ (sqrt (- 1 (* x x))) x)) )
    )
 );cond
);defun acos

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-19 19:02 , Processed in 0.165512 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表