정확도가 x == 0
및 x == 90
또는 x == pi/2
인 사인의 근사값을 찾고 있는데 그 외에는 5 % 이내입니다.사인의 간단한 근사
나는 룩업 테이블을위한 공간이 없다.
정확도가 x == 0
및 x == 90
또는 x == pi/2
인 사인의 근사값을 찾고 있는데 그 외에는 5 % 이내입니다.사인의 간단한 근사
나는 룩업 테이블을위한 공간이 없다.
당신은 Bhaskara I's sine approximation formula를 사용할 수있을 것 :
float x;
float sinx = 4 * x * (180 - x)/(40500 - x * (180 - x));
오류는 2 % 내에서 유지됩니다.
매우 빠르고 (손으로) 최적화 할 수 있습니다.
그렇지 않으면 5 % 이내 *라고 말합니다. – Kh40tiK
@ Kh40tiK 내가 잘못 읽었습니다 (목적 :-) 여기에 더 좋은 대답이 있습니다. –
내가 이것을 할 수있는 유일한 방법은 Taylor/Maclaurin Expansions
을 사용하는 것입니다.
이들은 함수에 대한 근사적인 근사를 나타내는 다항식을 형성합니다.
일반적으로 Taylor 시리즈를 통해 근사치를 계산하려는 함수의 값을 선택합니다.
예를 들면 x = 0
라디안 sin(x) = x - x^3/3! + x^5/5!
입니다. 시리즈는 무한하며 더 많은 용어를 포함 시키면 얻을 수있는 진정한 가치에 더 가까워집니다.
"편리한"장소 (30, 60, 45, 90도)에서 이러한 테일러 확장 중 몇 가지를 만들어야 할 수도 있습니다. 그리고 각도가 가장 가까운 함수를 사용하십시오.
"그런 다음 각도가 가장 가까운 기능을 사용하십시오." - 그래서 ... 조회 테이블처럼? ;-) –
그럼 이런 식으로 저장할 필요가 없습니다. 그냥 4 개의 함수를 정의하고 어떤 함수를 호출할지 결정하기 위해'if'를 정의하십시오. – James
sin
의 미분은 cos
이며 1이 아니며 5 %가 1/20이므로 20 * pi/2 = 32
점을 가진 찾아보기 표가 요구 사항을 충족시킵니다. RAM을 32 바이트까지도 저장할 수 없습니까?
총 64 또는 1KB RAM이 있습니다. – fadedbee
그 중 얼마가 무료입니까? –
@ 의미 - 귀하의 답변은 멋지지만 귀하의 의견은 * my * 답변에 대한 토론에 기여하지 않으며 자기 홍보의 목적에만 기여합니다. –
빠른 선형 맞춤으로 발견되었습니다.
1.00003 x - 0.000312267 x^2 - 0.165537 x^3 - 0.00203937 x^4 + 0.010286 x^5 - 0.000961693 x^6
이 최대 오차는 3 %입니다.
표준 sin 함수의 문제점은 무엇입니까? –
Taylor 시리즈 –
을 사용하여 근사치를 구현할 수 있습니다. 코딩 서비스가 없으며 라이브러리 권장 사항은 여기에서 언급되지 않습니다. – Olaf