Syn*_*ech 5 algorithm math equation function
为各种事物实现数学函数很简单.int mul(int,int);,int pow(int,int);甚至double div(float,float);很容易做,可以用循环或递归实现.(这些是用于手动或在头部执行这些功能的相同方法.)要相乘,只需重复添加数字即可.划分,重复减去它.要获得力量,反复倍增.等等.
然而,我一直想知道的一个数学函数是根.例如,您如何编写函数来计算数字的平方(或立方体等)根(即double root(float num, float root);)?我试着环顾四周,找不到这样做的算法或方法.
当我尝试手动计算根时,我通常使用猜测方法(从一个近似数字开始,添加一个分数,乘以,看它离它有多远,加一个小分数,乘以,再次检查,然后重复直到满意).我想这可行,但肯定有更好更快的方法(无论计算机能做多快多于手动).
显然LUT是不相关的,因为它必须足够通用才能占用任何操作数(除非你用一组有限的数据编写游戏).在维基百科的文章中提到的猜测方法,并列出了一些古代的人(从长期计算机被发明之前)以及一些纯数学和微积分,甚至方法(包括一些具有"无限"作为一个组件).唯一似乎与电子产品有关的方法是使用技巧或逻辑.(这只是针对平根,更不用说立方根等了.)
有没有简单的根计算方法?计算器如何做到这一点?电脑怎么做?(不,简单地做double pow(a,0.5);就行不通,因为那会double pow(float,float)怎样实现?)
我只是错误地将根函数分组为更简单的函数吗?它们比它们看起来更复杂吗?