本文介绍一种快速计算exp()函数的算法,算法简单,精度高,运算速度快,可以在普通单片机上实现。
原理:
当取 n=256 时,就能得到非常好的近似效果。
算法实现:
1.n次方的算法:
例: x^16 = (((x^2)^2)^2)2
代码实现:
x *= x;
x *= x;
x *= x;
x *= x;
这就是 x^16 的结果。
2.计算exp(x)
取n=256=2^8
代码实现:
Double exp(double x)
{
x = 1.0 + x/256;
x *= x; x *= x; x *= x; x *= x;
x *= x; x *= x; x *= x; x *= x;
return x;
}
算法优点:这里避免了指数运算,大大提高了运算速度。如果直接运算,则需要256次乘法。该算法只需要8次乘法即可实现。
执行结果(红色为实际曲线,蓝色为近似曲线,n越大越接近):