一般的单片机开方都有什么方法哪
如题楼下的看错了,我说开方运算 1、花钱请人开发;
2、买现成方案;
3、从ourdev找开源资料照抄;
4、自己动手。 牛顿迭代
牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的解。
假定有一个函数y=f(x),方程f(x)=0在 x = r 处有一个根,对于此根,我们先估计
个初始值 Xo(可以是猜测的)。我们现在来得到一个更好的估计值X1。为此趚=Xo处作该曲线的切线,并将其延长与 x 轴相交。切线与x轴的交点通常很接近 r ,我们用它作为下一个估计值X1,求出X1后,用X1代替Xo。重复上述过程,在x=X1处作曲线的另一条切线,并将其延长至与x轴相交,用切线的x轴截距作为下一个近似值X2……这样继续下去,所得出的这个x轴截距的序列通常迅速接近根r
现在再让我们从代数角度看上述过程,我们知道,在初始值Xo处,切线的斜率是f'(x),切线方程为
y - f(xo) = f'(xo)(x - xo)
在此切线与x轴相交处,有y=0 ,x=x1,因而有
0 - f(xo) = f'(xo)(x1 - xo)
只要f'(xo)不为0,可解出x1,得
f(xo)
x1 = x0 - ---------
f'(xo)
重复该过程,可得下一近似值为
f(x1)
x2 = x1 ---------
f'(x1)
总结n = 0,1,2,……的情形得出下述结果
_______________________________________________
|牛顿法:
|
| 只要f'(xn) ≠ 0,则有
| f(Xn)
| X(n+1) = Xn - --------
| f'(Xn)
|_____________________________________________|
注意:牛顿法也有不成功的时候,若f(x)无根,则,序列不收敛。另外,一些函
数图像可能形成随即序列,这就需要其他的辅助条件。
附注:f'(x)表示函数f(x)的导函数,f'(xo)则表示函数f(x)在x = xo处的导数 http://www.fjtu.com.cn/fjnu/courseware/0329/course/_source/web/lesson/char2/j4.htm
这里更详细 呃,明明看到“单片机开发”啊 查表,用电脑做一个table查表便是。最好是整数。 谢谢大家 我也在寻找呀! 搜索卡马克 搜索卡马克
:)
google "doom fast inverse square root"
and let me post it here:
float Q_rsqrt( float number )
{
long i;
float x2, y;
const float threehalfs = 1.5F;
x2 = number * 0.5F;
y= number;
i= * ( long * ) &y; // evil floating point bit level hacking
i= 0x5f3759df - ( i >> 1 ); // what the fuck?
y= * ( float * ) &i;
y= y * ( threehalfs - ( x2 * y * y ) ); // 1st iteration
// y= y * ( threehalfs - ( x2 * y * y ) ); // 2nd iteration, this can be removed
return y;
}This is probably the most fascinating piece of code anyone has written over the last 50 years. Bar none.
and we still don't know who exactly wrote it, and how s/he came up with the magic number.
enjoy.
这个必须mark,记得以前也看过,是一个大神创造的那个magic number。 数学课逃课的人伤不起啊 整形还是浮点数? 论坛里面有整形开方算法,挺好 使用标准库函数 这个需要记下 以后用的到的,归根结底不是单片机开方,而是人开方 xjj123456789 发表于 2014-1-24 09:09
论坛里面有整形开方算法,挺好
能给个链接吗?现在找不到了 好像math.h头文件里面有现成的函数吧
页:
[1]