加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

如何用乘除法近似计算10的指数和以10为底的对数

(2015-12-07 21:15:48)

 

           如何用乘除法近似计算10的指数和以10为底的对数

欢迎转载,须注明作者信息---京西青龙

       近似计算公式无所谓好坏,不同的应用场合有不同的公式更使用。用10^x表示10x次方、log x表示x的以10为底的对数;用"/"表示除号或分数线、用“·”或"*"表示乘号;以下提到的误差都是指误差的绝对值。

   第一个近似公式:      

10^x=(0,9+x)/(0.9-x)= (9+10x)/(9-10x)               ---公式1

   用公式1计算时,x越接近0相对误差越小:x的计算范围为[-log 2,+log 2][-0.30103,+0.30103]时,若中间结果保留5位有效数字且最终结果保留4位有效数字,则计算结果的最大相对误差<1%;计算过程中所要求的相对误差越小,中间结果和最终结果要保留的有效数字越多。

   第二个近似公式:        

log x=0.864(x-1)/(2+0.864(x-1))=( 0.864x-0.864)/( 0.864x+1.136) ---公式2

   用公式2计算的最大相对误差<1%,x的计算范围是[1, 2],要求中间结果保留5位有效数字且最终结果保留4位有效数字。

       如果计算[-log2,+log 2]范围之外的变量y的指数,y=n*log2 + x=0.30103*n + x,10^y=(2^n)*(2^x)。其中n为整数,x(-log2,+log 2)范围内,这样,即可计算10的任意指数。

       如果计算[0, 2]范围之外的变量y10为底的对数,y=(2^n)*(2^x) , 其中n为整数,x(1,2)范围内则logy=n*log2+logx 其中n为整数,这样,即可计算任意范围内的以10为底的对数。例如  y=42=32*1.3125=(2^5)*1.3125 ,则log 42=5*log2+log1.3125=5*0.30103+0.864(1.3125-1)/(2+0.864(1.3125-1))=1.624,而用计算器计算的结果是1.623

       另外,当y[4,16]范围内,可直接用另一个公式log y=18y/(10y+80)计算,若中间结果保留5位有效数字且最终结果保留4位有效数字时,计算的最大相对误差<1%

最终结果保留2位有效数字时,由于舍入新增加的最大相对误差不超过5%;

最终结果保留3位有效数字时,由于舍入新增加的最大相对误差不超过5‰;

最终结果保留4位有效数字时,由于舍入新增加的最大相对误差不超过0.5‰

最终结果保留5位有效数字时,由于舍入新增加的最大相对误差不超过0.05‰; ······。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有