社区
数据结构与算法
帖子详情
请教: log, ln, 开根号,的算法
yifenggd
2003-12-10 03:59:20
请教: log, ln, 开根号,的算法, 急需! 谢谢
...全文
3213
21
打赏
收藏
请教: log, ln, 开根号,的算法
请教: log, ln, 开根号,的算法, 急需! 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
21 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
liangbch
2004-03-15
打赏
举报
回复
求常数的对数,参见http://numbers.computation.free.fr/Constants/constants.html
liangbch
2004-03-15
打赏
举报
回复
1.通过特殊的方法事先计算出一些小质数的对数,如集合a=
{2,3,5,7,11,13}
2.找出一组分数,形成数组A,使这些分数依次递增并且大致呈等比数列分布,并且这些分数的分子和分母的所有质因数均来自集合a,可直接求值,且任意两个数的比小于d1,d1略大于1:
如 1,1.1, 1.2,1,1.3,1.4,1.5,1.6,1.8,2,2.1,2.2,2.4,2.6,3.0,3.2...9.6,9.8,10
3。如果求x的对数,可首先将其化为 x1*10^f1的形式,则lg(x)=lg(x1)+f1.
4. 在数组A中,找一个数a[i],使a[i]<x1,a[i+1]>x1,另f2=A[i],x1=x2*f2,则lg(x)=lg(x1)+f1= f1+ lg(f2)+ lg(x2),这里x2 一定小于d1,换言之,x2是一个略大于1的数,可以利用泰勒公式求值,且速度很快。
5。如果想得到更高的精度,在利用泰勒公式求x2时,需要计算的项仍然很多,这时可以再建立一个数组B[1..n],使B[n]略大于d1,对于每一个i,B[i+1]/B[i]<d2,d2是一个比d1 更接近1的数,这样 x2= f3 * x3 ,f3为数组B中的某一个元素,lg(x)=f1+lg(f2)+lg(f3)+lg(x3),由于1<x3<d2<d1,故在利用泰勒公式求lg(x3)时,计算的项数将更少。
6。按此思路,为了减少计算量,可以继续做一个数组C,依次类推。但是数组不可以不断增加,一方面增加了存储空间,另一方面,在构建数组A[1..n]时,A[1]>1,A[n]小于d,d越小,满足条件(数组各个元素可以用分数表示,分数分子分母的所有质因数均为小质数,且分子分母不不能超过计算机中整数的表示范围)的数组元素越少。
7。在查表时,可以使用2分查找算法,如果想进一步提高速度,可以建立一个查找表,相当于索引,由一个数 确定索引的位置可以使用公式法,由索引值在数组中查找时,可使用顺序或者2分查找算法。
利用这个算法可以将某一个数的对数计算到很高精度,且速度很快,这是我在编写超级计算器时,经过长时间的研究而得到的一个算法,这是首次公开,如有人利用我的算法,希望注明出处。
计算一些整数的对数的算法,许多地方均有介绍,请感兴趣者查找。
ybei
2004-03-11
打赏
举报
回复
泰勒展开
szAlanLiao
2004-02-21
打赏
举报
回复
c++提供的log10()函数运算太慢了。我想了一个办法:
lg(x)=lg(a.bcd*10^n)=lg(a.bcd)+lg(10^n)=lg(a.bcd)+n;
然后做了一张[1.000~9.999]的lg(x)表。
这样比ln(x)=2(t+t^3/3+t^5/5+...)这种方法就当会快,
不过要浪费70k左右的空间。
有没有更好的??
solomon1
2003-12-24
打赏
举报
回复
我觉得可以用级数展开,应该行吧,ok?
liangbch
2003-12-24
打赏
举报
回复
在我的《软件超级计算器》(http://www.csdn.net/cnshare/soft/3/3229.shtm)实现了三角/反三角,指数/对数(ln,log10)的算法,可以将任意一个数的函数计算到14-300位,该程序完成于2000.10月。现在我有了更好的算法,但是也很复杂,等我有时间,给你 提供一些计算的方法和思路。
liangbch
2003-12-24
打赏
举报
回复
在计算(ln(x)),时,当 x和1的差很大时,迭代非常慢,直接使用泰勒公式不可取,需要做一些预处理,才可以使用泰勒公式,例如:
ln(x)=ln(x0 * x1)=ln(x0)+ln(x1),x0:可以通过某种方法求的,x1非常接近于1,这样就可以求得ln(x),此题的关键如何选取x0,使得x0的对数很容易求得,而且x0非常接近于x.
这里提供一个链接(求一些常数的对数,平方根等)http://numbers.computation.free.fr/Constants/constants.html
gnefuil
2003-12-23
打赏
举报
回复
都可以泰勒展开的,根据需要的精度,展开到某一项,然后带入具体的x计算就可以了
saint001
2003-12-23
打赏
举报
回复
420*x+630*x^2+260*x^3+25*x^4
ln(1+x)=---------------------------------
420+840*x+540*x^2+120*x^3+6*x^4
|x|在0附近时精确,精度非常高,比如求log(2)
ChoboZelluX
2003-12-23
打赏
举报
回复
求平方根的算法
http://www.csdn.net/Develop/Read_Article.asp?Id=18830
zalyer
2003-12-14
打赏
举报
回复
学习一下。
ZhangYv
2003-12-11
打赏
举报
回复
mathe...大牛现形!
kbsoft
2003-12-11
打赏
举报
回复
mathe大大N久不见了,想念中...
mathe
2003-12-11
打赏
举报
回复
开根号用牛顿迭代法最方便
x(k+1)=(x(k)+a/x(k))/2
log同ln的区别就是差一个ln(10),
对于ln(x)
如果x非常大或者非常小,可以先通过乘以或除以e的若干次方来解决。
如果是在计算机里,还有个技巧,通过其二进制 表示,我们可以知道
2^k<=x<2^(k+1),
我们只要先计算ln(x/2^k/sqrt(2))最后加上(k+1/2)*ln(2)就可以了
所以我们只要对1/2<=x<3/2计算ln(x)
最快的方法是计算
x=(1+t)/(1-t)
即
t=(x-1)/(x+1)
所以|t|<1/3.
然后
ln(x)=2(t+t^3/3+t^5/5+...)
pheavecn
2003-12-11
打赏
举报
回复
我知道单片机中汇编开方的算法。
用的是一位一位试的方法。
amdcwf
2003-12-11
打赏
举报
回复
看看,高数第二册里的多项式展开那一章,相信是很有帮助的
pheavecn
2003-12-11
打赏
举报
回复
TO:mathe
看来您是数值计算的高手。
单片机没有乘除法,运算速度也慢,ram小。
计算器里是用模仿手算的方法。
我多写单片机的程序,以前有个单是写计算器,我知识缺乏,没敢接。
所以现在对这些算法特留意。
HUNTON
2003-12-10
打赏
举报
回复
很多介绍牛顿迭代的书都把开平方的作为牛顿迭代法的例子来讲解
saint001
2003-12-10
打赏
举报
回复
错了一点
x(k+1)=x(k)-1+a/e^x(k)
saint001
2003-12-10
打赏
举报
回复
求解f(x)=0的牛顿迭代法
x(k+1)=x(k)-f(x(k))/f'(x(k))
特别的,对于f(x)=x*x-a,即开方
x(k+1)=(x(k)+a/x(k))/2
对于f(x)=e^x-a,对数
x(k+1)=x(k)-1+a/e^x
加载更多回复(1)
SpringBoot前后端分离 - 预约挂号系统
项目详细功能参考项目演示内容即可项目优势:1、项目从零开始到完结 附带视频,源码以及相关辅助资料,适合学习使用,项目也可拿来即用。2、几乎全手写代码,功能流程详细 跟着可以独立完成,附带详细代码相关常见bug 和 调试解决方案,让大家学会跟踪快速解决问题。3、系统后端使用LayUI技术,对页面不精通的小伙伴也可以快速完成精美页面的设计及应用,支持统一后台管理,也可拿来做其他项目通用后台4、针对layui 相关技术点薄弱的学员提供相关技术点学习,让快速上手完成项目研发5、选材来自生活,项目真实感强,可用学习使用和就业面试使用,适合作为面试中提高实际项目经验...6、该项目前后端分离,满足前沿技术点..项目技术栈:- 数据库:MySQL8.0- 后端技术:SpringBoot,MyBatisPlus,JWT 等- 日志技术:
Log
4j- 数据库连接池:druid- 前端技术:LayUI, axios,Echarts,Ztree 等- Web容器:Apache Tomcat 9- 项目管理工具:Maven3.6- 思维导图设计工具:XMIND 8- 开发工具: IDEA2020, WebStorm2020- 数据库设计软件:Power Designer16.5特别提示:1、涉及相关技术点学习,更多侧重大学生或无项目经验以及项目经验较少的学员入门到项目完结项目实战2、项目中功能处理大多提供多种解决方式,如跨域访问,更多让大家了解解决方式的同时学会技术点应用3、加入bug的调试以及代码跟踪处理,更好的让学员更多学会如何解决问题
时间复杂度:根号n一般来说大于
log
(n)
对这函数求导后,比较分母大小,可以得到结论。两个函数的图像如下,只在。当n>16时,就必然。
O(根号n/
ln
(根号n))时间复杂度内求n的所有因子
如果n范围小于1e8的话还可以
log
时间复杂度求质因子 的
算法
将求因数优化到
log
级别。范围内的质数除n,求出n的分解质因数形式,然后爆搜求出n的所有因子,2e9范围内因子最多的数有1600个因子,爆搜的时间复杂度很小。)复杂度内求n的所有因子,在2e9数量级比O(个,所以是这个时间复杂度。n范围内的质数大约有。
14-Halcon机器视觉实例入门:数学运算
图像数学运算 1 对数运算 在Halcon中,
log
_image算子提供了图像的对数运算,其原型如下:
log
_image(Image :
Log
Image : Base : ),其中参数Image为输入图像,
Log
Image为输出图像,Base为对数运算的底数。如果图像的灰度值超出函数
算法
的有效值域,例如,<=0,则相关的灰度值在计算结果中将设置为0。程序演示如下: * 图像对数运算 *...
c语言求
ln
1加到
ln
n的平方根,
ln
函数的运
算法
则
ln
函数的运
算法
则:
ln
(MN)=
ln
M+
ln
N,
ln
(M/N)=
ln
M-
ln
N,
ln
(M^n)=n
ln
M,
ln
1=0,
ln
e=1,注意,拆开后,M,N需要大于0没有
ln
(M+N)=
ln
M+
ln
N,和
ln
(M-N)=
ln
M-
ln
N,
ln
x是e^x的反函数。运
算法
则
ln
(MN)=
ln
M+
ln
N
ln
(M/N)=
ln
M-
ln
N
ln
(M^n)=n
ln
M
ln
1=0
ln
e=1注意,拆开后,M,N需要大于0没有...
数据结构与算法
33,007
社区成员
35,326
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章