秦不可卿 发表于 2010-9-13 10:47

关于余弦角度不精确的问题

我的程序中得到的角度值很小,d-5/-6,用内部余弦函数求得的结果是1,而不是准确值,该怎样处理能得到最精确的值呢?
我最终的目的是要求一个旋转矩阵r(2,2)
r(1,1)=cos(a);r(1,2)=sin(1,2)
r(2,1)=-r(1,2)r(2,2)=r(1,1)

我的处理办法是r(1,1)=r(1,1)+/-r(1,2),使得r(1,1)**2+r(1,2)**2近似等于1,但是好像循环有累积误差,会发散,不知道该怎样处理能更精确一些。
大虾们有遇到过类似的问题吗?

dongyuanzhixing 发表于 2010-10-11 14:48

谁知道赶紧帮帮忙啊,不知道的顶起来!

迷路的小孩 发表于 2010-10-12 16:57

用双精度的dcos、dsin

mashimaroliuxue 发表于 2010-10-15 22:52

回复 秦不可卿 的帖子

好像应该使用-5.0/-6.0吧,要不会按整数处理~
program main
real(kind=8):: r
real(kind=8)::a=-5.0/-6.0
r=cos(a)
write(*,*)a
end
这样就没有问题了~
页: [1]
查看完整版本: 关于余弦角度不精确的问题