关于开平方的c程序
关于开平方的c程序就是不让调用sqrt()这个函数,请问这个程序怎么写啊?我就是不知道一个数怎样用算术的方法来算它的平方根,像15*15=225;25*25=625.....它们到底有什么规律啊?
数学库也不大为什么不用呢? 你的RAM和ROM有那么小么,太小自己在片外扩充下,估计你用51的。
高数中有无穷级数展开,可以用无穷级数逼近一个函数的值。
二项展开式: (1+x)^m = 1 + m*x + [m*(m-1)/2!]*x^2 + ... + [m*(m-1)...*(m-n+1)/n!]*x^n + ...
(-1 < x < 1)
x,m取合适的值可以算任何数的任意次方,这种麦克劳林展开式取有限项后余项|R(x)| < e^|x| * |x|^(n+1)/(n+1)!
用这个余项上限可以做误差分析。
我百度了一下搜到这些算法:
或者可以用二分法:
设f(x)=x^2-a
那么sqrt(a)就是f(x)=0的根。
你可以先找两个正值m,n使f(m)<0,f(n)>0
根据函数的单调性,sqrt(a)就在区间(m,n)间。
然后计算(m+n)/2,计算f((m+n)/2),如果它大于零,那么sqrt(a)就在区间(m,(m+n)/2)之间。
小于零,就在((m+n)/2,n)之间,如果等于零,那么(m+n)/2当然就是sqrt(a)。这样重复几次,你可以把sqrt(a)存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于sqrt(a)。