2011-04-27 4 views
4

Matlab 사용자가 R로 전환하면서 나는 삼각 함수를도에 적용하는 문제를 해결했습니다. Matlab에는 라디안 및도 (예 : cos 및 cosd)에 대한 trig 함수가 있습니다. R 따라서 (아래 참조)R : Strange trig function behavior

cosd<-function(degrees) { 
    radians<-cos(degrees*pi/180) 
    return(radians) 
} 

불행하게도이 기능이 제대로 모든 시간을 작동하지 않는 내 자신을 만들기 위해 저를 필요로하는 만 라디안을위한 기능을 포함하는 것 같다. 몇 가지 결과가 아래에 나와 있습니다.

> cosd(90) 
[1] 6.123234e-17 
> cosd(180) 
[1] -1 
> cosd(270) 
[1] -1.836970e-16 
> cosd(360) 
[1] 1 

이 문제의 원인과 해결 방법을 알고 싶습니다. 감사!

답변

1

의 제 1 장을

1-(1/3)-(1/3)-(1/3) 

가하는 같은 이유를 참조하지 0과 동일 그것은 부동 소수점 숫자와 함께 할 수있는 뭔가가. 좀 더 정교해질 것이라고 확신합니다.

5

나에게 잘 작동하는 것처럼 보입니다. 파이의 값은 정확하지 않을 수 있으므로 매우 가까운 추정치를 얻고 있습니다. 당신이 그것에 대해 생각한다면, 6.123234e-17과 -1.836970e-16은 0에 매우 가깝습니다. 이것은 대답이되어야합니다.

종이에 90 * pi/180 = pi/2가 있지만 컴퓨터에서는 부동 소수점 숫자를 사용합니다. 나는 R/matlab이 사용하는 것이 무엇인지 모르겠다. 그러나 나는 32 비트 또는 64 비트 부동 소수점을 추측 할 것이다. 그리고 제한된 수의 비트에 많은 정보를 저장할 수 있으므로 모든 가능한 소수를 저장할 수 없습니다. 90 또는 270을 부여하도록

당신은 당신의 기능을 수정할 수 0

1

또한 0

0에 가까운 숫자를 보여주는 또 다른 방법에 대한 zapsmall 기능에 관심이있을 수 있습니다