如何用乘除法近似计算10的指数和以10为底的对数
欢迎转载,须注明作者信息---京西青龙
近似计算公式无所谓好坏,不同的应用场合有不同的公式更使用。用10^x表示10的x次方、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]范围之外的变量y的以10为底的对数,令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‰; ······。
加载中,请稍候......