请教lg的计算方法
时间:2011-08-02
来源:互联网
因为项目使用的系统不支持lg计算,也不能使用库函数math,各位大侠谁能提供一个算法,尽量说得详细点,本人菜鸟。
想在需要知道Lg(x)如何求出其值。
想在需要知道Lg(x)如何求出其值。
作者: guven 发布时间: 2011-08-02
不懂,帮顶!
作者: mingpei0703 发布时间: 2011-08-02
假设 1<x<10,计算过程是:
STEP1: 令 lg(x)=S;
STEP2: 则有 2*lg(x)=2*S, 即 lg(x^2)=2*S;
STEP3: 若 x^2<10,则转 STEP2,直到 X^2>=10;
STEP4: 现在,lg(XX)=m*S,且 XX>=10,令 XX=10*y,则上式可写成
1+lg(y)=m*s;
STEP5: 只要 m 不够大,继续对两边剩以 2 ,若 lg(XX)中的 XX 大于 10,就把它拆开,直到
n+log(z)=m*S 中的 m 跳够大,则 S 约等于 n/m
程序如下:
double Lg(double x)
{
double m=1.0;
double n=0.0;
while (m<1.0E+10)
{
m+=m;
x*=x;
if (x>=10)
{
n+=1.0;
x/=10.0;
}
}
return n/m;
}
若 x 不在[1,10]之间,楼主只要做个预处理就可以了,这里,代码从略.
STEP1: 令 lg(x)=S;
STEP2: 则有 2*lg(x)=2*S, 即 lg(x^2)=2*S;
STEP3: 若 x^2<10,则转 STEP2,直到 X^2>=10;
STEP4: 现在,lg(XX)=m*S,且 XX>=10,令 XX=10*y,则上式可写成
1+lg(y)=m*s;
STEP5: 只要 m 不够大,继续对两边剩以 2 ,若 lg(XX)中的 XX 大于 10,就把它拆开,直到
n+log(z)=m*S 中的 m 跳够大,则 S 约等于 n/m
程序如下:
double Lg(double x)
{
double m=1.0;
double n=0.0;
while (m<1.0E+10)
{
m+=m;
x*=x;
if (x>=10)
{
n+=1.0;
x/=10.0;
}
}
return n/m;
}
若 x 不在[1,10]之间,楼主只要做个预处理就可以了,这里,代码从略.
作者: icessl 发布时间: 2011-08-02
用各种展开。taylor展开 ,傅里叶展开。
已知 lg(1)=0,lg(a*b)=lg(a)+lg(b).
又知道lg(x)导数序列(一阶,二阶...)为 1/x,-1/x^2,2/x^3.... (-1)^(n-1)*(n-1)!/x^n
1,对任意x 属于 (0,2)。<0x<2 taylor展开如下
lg(x)=lg(1)+(1/1)*(x-1)/1!-(1/1^2)*(x-1)^2/2!+.....(-1)^(n-1)*(n-1)!*(x-1)^n/1^n/n!
注意到最后一项 可以化简为(x-1)^n/n 是趋于0的。所以精度可以自己控制。取决与你计算n到第几次。
2,对x>=2 。应为有公式 lg(a*b)=lg(a)+lg(b)。总是可以将x转化为小于2的几个乘机来计算
已知 lg(1)=0,lg(a*b)=lg(a)+lg(b).
又知道lg(x)导数序列(一阶,二阶...)为 1/x,-1/x^2,2/x^3.... (-1)^(n-1)*(n-1)!/x^n
1,对任意x 属于 (0,2)。<0x<2 taylor展开如下
lg(x)=lg(1)+(1/1)*(x-1)/1!-(1/1^2)*(x-1)^2/2!+.....(-1)^(n-1)*(n-1)!*(x-1)^n/1^n/n!
注意到最后一项 可以化简为(x-1)^n/n 是趋于0的。所以精度可以自己控制。取决与你计算n到第几次。
2,对x>=2 。应为有公式 lg(a*b)=lg(a)+lg(b)。总是可以将x转化为小于2的几个乘机来计算
作者: namewchwch 发布时间: 2011-08-02
求lna 就是求e^x-a=0的解
e^x的导数仍为e^x 由牛顿迭代法 x'=x-(e^x-a)/e^x=x-1+a/e^x
反正对数底不同的话,无非就是最后结果差个常数再乘进去就行了
e^x的导数仍为e^x 由牛顿迭代法 x'=x-(e^x-a)/e^x=x-1+a/e^x
反正对数底不同的话,无非就是最后结果差个常数再乘进去就行了
作者: cfvmario 发布时间: 2011-08-02
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28