arcsin(x)=sqrt((315-55*x^2-sqrt(99225-97650*x^2-2435*x^4))*(78*x^2+900))/(26*x^2+300), где sqrt()- корень квадратный, а ^-знак степени, данная формула в интервале 0<x<1 , даёт ошибку не более 1%,
arccos(x)=sqrt(84+6*x-6*sqrt(106+118*x+x^2))/3, данная формула в интервале 0<x<1 даёт ошибку менее 0,1%
arctg(x)=sqrt(6)*sqrt((150+163*x^2)*(315+260*x^2-sqrt(99225+100800*x^2-860*x^4)))/(326*x^2+300), даёт на интервале 0<x<5 , ошибку менее 1%,а на интервале 0<x<2.5 ошибку менее 0,1%
Understanding Digital
Signal Processing
Richard G. Lyons
p. 539
X = Re + j Im
Q - аргумент комплексного числа Х в радианах, используя апроксимацию в радианах
arctg ( Im/Re) = Q = (Im/Re) / [1+0.28125(Im/Re)^2]
Q лежит в пределах от -45 до 45 градусов, -1 < Im/Re < 1 ( max ошибка 0,26 градуса)
вычисление sqrt алгоритм основаный на итерационной формуле Герона.
Xn+1 = (A/Xn + Xn)*1/2
arccos(x)=sqrt(84+6*x-6*sqrt(106+118*x+x^2))/3, данная формула в интервале 0<x<1 даёт ошибку менее 0,1%
arctg(x)=sqrt(6)*sqrt((150+163*x^2)*(315+260*x^2-sqrt(99225+100800*x^2-860*x^4)))/(326*x^2+300), даёт на интервале 0<x<5 , ошибку менее 1%,а на интервале 0<x<2.5 ошибку менее 0,1%
Understanding Digital
Signal Processing
Richard G. Lyons
p. 539
X = Re + j Im
Q - аргумент комплексного числа Х в радианах, используя апроксимацию в радианах
arctg ( Im/Re) = Q = (Im/Re) / [1+0.28125(Im/Re)^2]
Q лежит в пределах от -45 до 45 градусов, -1 < Im/Re < 1 ( max ошибка 0,26 градуса)
вычисление sqrt алгоритм основаный на итерационной формуле Герона.
Xn+1 = (A/Xn + Xn)*1/2
unsigned
int
root1(unsigned
int
a)
{
unsigned
int
x;
x = (a/0x3f + 0x3f)>>1;
x = (a/x + x)>>1;
x = (a/x + x)>>1;
return
(x);
}
еще один алгоритм
unsigned
int
isqrt(unsigned
int
x)
{
unsigned
int
m, y, b;
m = 0x4000;
y = 0;
while
(m != 0){
b = y | m;
y = y >> 1;
if
(x >= b) {
x = x - b;
y = y | m;
}
m = m >> 2;
}
return
y;
}
Комментариев нет:
Отправить комментарий