| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8518 人关注过本帖
标题:数学问题,ln怎么编呢?
只看楼主 加入收藏
紫炎菊畔
Rank: 2
等 级:论坛游民
帖 子:12
专家分:22
注 册:2012-9-14
结帖率:100%
收藏
已结贴  问题点数:7 回复次数:10 
数学问题,ln怎么编呢?
各位,c中,log,ln,lg这些求对数的符号、公式怎么实现呢?
搜索更多相关主题的帖子: 数学 
2012-09-23 19:21
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:1 
可以使用无穷级数的方法,展开为幂函数,然后按照一定的精度实现;

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2012-09-24 07:00
yjk0307
Rank: 2
等 级:论坛游民
帖 子:3
专家分:16
注 册:2012-9-19
收藏
得分:0 
调用函数库#include <math.h>的话,lg表示ln,log10表示lg,没有ln
2012-09-24 08:29
yjk0307
Rank: 2
等 级:论坛游民
帖 子:3
专家分:16
注 册:2012-9-19
收藏
得分:1 
o,log表示ln,少了一位
2012-09-24 08:43
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:1 
目前的计算机里面 这样的东西其实都是CPU的协处理器算的 有专门的指令算这些对数啦 三角函数 一类的 所以不知道怎么算也可以 因为CPU算好了
2012-09-24 09:33
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用zklhp在2012-9-24 09:33:16的发言:

目前的计算机里面 这样的东西其实都是CPU的协处理器算的 有专门的指令算这些对数啦 三角函数 一类的 所以不知道怎么算也可以 因为CPU算好了

cpu 的求法是先用 以2为底的幂 约化参数,使之归到一个离1很近的区间。然后应用一个相对复杂的二阶展式计算(比泰勒展式收敛速度快)。
由于约化了区间,可以使用先验精度估计,计算固定次数获得结果从而避免循环。

理论是:ln(x) = ln(2^k * x') = kln2 + ln x'。其中 k 是一个整数,使得 2^k * x' == x,且 0 < x' < 2。(选用整数是因为 2 的整数次幂可以高速算得。)这样由于 ln2 是个常数。就可以把计算任意自然对数,化成计算一个小区间内的自然对数。

计算其它底数的对数,使用换底公式,统一换化到计算自然对数就可以了。
硬件的这个算法,也可以使用编程语言实现。不过肯定还是没有硬件逻辑快,估计能差个几百倍吧。


[ 本帖最后由 pangding 于 2012-9-24 10:14 编辑 ]
2012-09-24 10:12
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
楼主如果只是为了练习,用二楼的方法就不错。循环控制精度,使用泰勒展式就可以了。
2012-09-24 10:14
紫炎菊畔
Rank: 2
等 级:论坛游民
帖 子:12
专家分:22
注 册:2012-9-14
收藏
得分:0 
谢咯,试下。不过还是用简单的表达式吧,毕竟ln(n)要参与其他计算的
2012-09-24 13:06
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:1 
以下是引用紫炎菊畔在2012-9-24 13:06:28的发言:

谢咯,试下。不过还是用简单的表达式吧,毕竟ln(n)要参与其他计算的

简单复杂和参与其它计算没有关系吧,毕竟都是一个函数调用。
2012-09-24 15:22
ithaibo
Rank: 2
等 级:论坛游民
帖 子:52
专家分:50
注 册:2012-3-30
收藏
得分:1 
C语言中对数,幂函数,以及三角函数都有库函数的,写在了<math.h>文件中。但是如果想深入的了解如何编写这样的函数,可以参考《Linux下最全的C源代码》。
2012-09-24 16:27
快速回复:数学问题,ln怎么编呢?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019813 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved