明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1306|回复: 2

[求助](已解决) polar 函数出错,为什么?

[复制链接]
发表于 2009-4-2 17:19:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2009-4-2 18:41:02 编辑

请问为什么输入以下代码后返还: (6.12323e-017 1.0)
  1. (setq
  2.    j^ (polar (list 0 0) (* 0.5 pi) 1)
  3. )
按道理应该返还: (0 1)

具体情况如下:
  1. _$  (setq
  2.     j^ (polar (list 0 0) (* 0.5 pi) 1))
  3. (6.12323e-017 1.0)
  4. _$
  5. _$
发表于 2009-4-2 18:02:00 | 显示全部楼层

实数的误差,在LISP中,实数、或点的比较用equal

(setq  j^ (polar (list 0 0) (* 0.5 pi) 1))
(equal j^ '(0 1) 0.00001)--->T

 楼主| 发表于 2009-4-2 18:27:00 | 显示全部楼层
本帖最后由 作者 于 2009-4-2 19:37:24 编辑

谢谢版主..

我想可能是这样的..

这个代码

(polar (list 0 0) (* 0.5 pi) 1))

运算是 由内而外的故顺序为:  (* 0.5 pi)--> (polar p ag dist)

而(* 0.5 pi)=无限不循环小数=0.5pi 

这个数经误差处理获得一个数ag = 0.5pi±Δ  ≈ 0.5pi

而这个(polar p 0.5pi±Δ  dist) = (6.12323e-017 1.0) ≈ (0 1)

而版主所说的(equal j^ '(0 1) 0.00001),

我想那个0.00001是给的误差范围吧...

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

本版积分规则

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

GMT+8, 2025-2-25 12:31 , Processed in 0.141255 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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