그래서 다음의 문제를 제시하고있다 :삼각 정확도
"파라볼라 때 Y = X2/K, 세 점 A (A, A2/K), B (b, B2/K) 및 C (c, c2/k)가 선택된다 .F (K, X)는 삼중 항 ABC의 적어도 하나의 각도 45도 1 ≤ K ≤ K 및 -X ≤ < B <의 C ≤ X의
예, F (1, 10) = (41) 및 F (10, 100) = 12492. 찾기로 인 F (106, 109). " A와 B 쎄타 = COS^-1 (| A | * | | B) (A 점 B) /() : 목적에
내가 내적의 기하학적 정의를 악용을 해결 유클리드 벡터, | A | A의 크기를 나타내고, 세타는 그들 사이의 각도입니다.
필자의 스크립트를 여러 번 읽었으며 FoKX = 41 대신 FoKX = 22가 나오는 유일한 이유는 삼각법 정확도 또는 라디안에서도 단위로의 변환에 오류가 있다는 것입니다. . 이것이 사실인지 또는이 문제를 설명 할 수있는 어딘가에서 실수를 범한 경우 알려주십시오. 항상 도움을 주셔서 감사합니다!
K<-1
X<-10
FoKX<-0
for(l in 1:K){
for(i in (-X):(X-2)){
for(j in (i+1):(X-1)){
for(k in (j+1):X){
vecAB<-c(j-i,(j^2-i^2)/l)
vecAC<-c(k-i,(k^2-i^2)/l)
vecBA<--vecAB
vecBC<-c(k-j,(k^2-j^2)/l)
vecCA<--vecAC
vecCB<--vecBC
magAB<-sqrt(sum(vecAB^2))
magAC<-sqrt(sum(vecAC^2))
magBA<-magAB
magBC<-sqrt(sum(vecBC^2))
magCA<-magAC
magCB<-magBC
ABdotAC<-sum(vecAB*vecAC)
BAdotBC<-sum(vecBA*vecBC)
CAdotCB<-sum(vecCA*vecCB)
angA<-acos(ABdotAC/(magAB*magAC))
angB<-acos(BAdotBC/(magBA*magBC))
angC<-acos(CAdotCB/(magCA*magCB))
if(angA==pi/4||angB==pi/4||angC==pi/4){
FoKX<-FoKX+1
}
}
}
}
}
부동 소수점 문제 일 수 있습니다. http://stackoverflow.com/questions/9508518/why-are-these-numbers-not-equal – Aaron
을 참조하십시오. 이 링크를 가져 주셔서 감사합니다. – fowlslegs
그리고 F (10^6,10^9)를 계산하는 데 너무 오래 걸리는 무차별 대입 알고리즘을 작성했습니다. 나는 그 carots를 놓치고 있었다! 드로잉 보드로 돌아갑니다. – fowlslegs