泰勒展开式

ln(x+1) =x - x ^ 2 / 2 + x ^ 3 / 3 - x ^ 4 / 4 + …

(|x|<=1,x!=-1)

算法原理

ln(x+1)要求 0<x+1<=2
所以要将一般数作相应变换
ln(x)
分解 x=a*2^b
ln(x)=ln(a)+ln(2^b)=ln(a)+bln(2)
此时a满足 0<a<=2 可以使用级数计算

收敛较慢,可能要循环几百次

代码实现

 static final double ln2 =       0.6931471805599453;static final double MINVALUE =  0.0000000000000001;public static double lnTaylor(double x) { if(x<=0) {return Double.NaN;}int pow=0;while(x >= 1d) {x /= 2;pow++;}while(x <= 0.5d) {x *= 2;pow--;}if(Math.abs(x-1)<=MINVALUE) {return pow*ln2;}x=x-1;double y=1;int sign=1;double sum=0;for(int i=1;Math.abs(y)>MINVALUE;i++) {y=y*x;sum +=sign*y/i;sign=-sign;}return  pow*ln2+sum;}

快速收敛级数

|x|<=1,x!=-1, y = (x - 1) / (x + 1)

ln(x)= ln((1+y)/(1-y))

=2 y( 1 + y ^ 2 / 3 + y ^ 4 / 5 + y ^ 6 / 7 + …)

收敛较快,也就几十次。

代码实现

 public static double lnTaylor2(double x) { if(x<=0) {return Double.NaN;}x=(x-1)/(x+1);double x2=x*x;double y=1;double sum=1;for(int i=3;y>MINVALUE;i+=2) {y*=x2;sum+=y/i;}return  2*x*sum;}

测试

     double x=10000;System.out.println("value \t"+x);double x1 = Math.log(x);System.out.println("math\t"+x1);double x2 =lnTaylor(x);System.out.println("Taylor\t"+x2);System.out.println( "dif1 \t"+(x1-x2));double x3 =lnTaylor2(x);System.out.println("Taylor2\t"+x3);System.out.println( "dif2 \t"+(x1-x3));

输出

value 10000.0
math 9.210340371976184
Taylor 9.210340371976182
dif1 1.7763568394002505E-15
Taylor2 9.210340371974409
dif2 1.7745804825608502E-12

可见精度是相当高的,误差主要来自浮点运算。

使用对数换低公式求一般对数

loga(b)=ln(b)/ ln(a)
 public static double logab(double a,double b) {//使用快速收敛级数提高效率return lnTaylor2(b)/lnTaylor2(a);}

测试

     System.out.println("log13(17)");System.out.println("log \t"+Math.log(17)/Math.log(13));System.out.println("log \t"+logab(13,17));

输出

log13(17)
log 1.1045884145097404
log 1.1045884145097404

用级数进行对数计算,基于ln(x)求loga(b)相关推荐

  1. 用正割对数计算积分的方法

    用正割对数计算积分的方法 下面介绍一种利用正割对数,计算积分的方法. 相关资料下载网址: 链接:https://pan.baidu.com/s/1z3R9b-UmV3AcJKLPFNNT3A?pwd= ...

  2. Solidity 中的对数计算

    背景 在进行 solidity 开发时,某些场景可能需要进行对数的计算.对数计算虽然在通用编程领域已经有成熟的解决方案(几乎所有编程语言都有相关的内置库或者第三方库来实现).但是在 solidity ...

  3. 零维水温模型计算——基于matlab建立计算模型

    零维水温模型计算--基于matlab建立计算模型 零维水温模型 基本方程 计算参数准备 matlab模型的建立 四阶龙格-库塔法的matlab实现 水面的净流通量φ~s~的计算函数 湖水与岩土的换热φ ...

  4. 三角函数算式的c语言表达式,能计算加减乘除表达式,求添加计算平方、三角函数的功能,...

    能计算加减乘除表达式,求添加计算平方.三角函数的功能,在线等,急 各位C语言大神,求帮忙,现在代码能计算加减乘除表达式,但是不能计算平方和三角函数,求大神添加功能. 在线等~~~ // EX6_08. ...

  5. 数学实验8 用matlab软件求级数的和_函数的泰勒级数和傅氏级数,数学实验8用matlab软件求级数的和函数的泰勒级数和傅氏级数.pdf-资源下载蚂蚁文库...

    数学实验8 用matlab软件求级数的和函数的泰勒级数和傅氏级数.pdf 数学实验八用Matlab软件求级数的和.函数的泰勒级数和傅氏级数一.求级数的和在Matlab中,可用symsum函数求数列或级 ...

  6. php求一个数的阶乘,PHP基于简单递归函数求一个数阶乘的方法示例

    搜索热词 本文实例讲述了PHP基于简单递归函数求一个数阶乘的方法.分享给大家供大家参考,具体如下: 一.问题: 求一个数a的阶乘,那么,a!=a*(a-1)*(a-2)*(a-3)*--*2*1.比如 ...

  7. 【第4期-智能驾驶汽车系列术语概念解析】第2节:基于三点求外接圆的曲率计算方法

    目录 一.利用三次多项式曲线求曲率的缺陷 二.基于三点求外接圆的曲率计算方法 三.实例介绍 1.MATLAB代码 2. 结果展示 总结 一.利用三次多项式曲线求曲率的缺陷 在第4期第一节中,我们利用三 ...

  8. 现代计算机三大科学计算,基于三维重建过程中纹理映射问题的研究

    基于三维重建过程中纹理映射问题的研究 科学计算可视化.计算机动画和虚拟现实已经成为计算机图形学的三大热门话题,这三大话题的技术核心均为三维图形.学术界和产业界普遍认为,纹理映射是解决真实地显示现实世界 ...

  9. 基于matlab的图解粒度参数计算,基于MATLAB的图解粒度参数计算-热带地理.PDF

    基于MATLAB的图解粒度参数计算-热带地理 第 26卷 第 3期 热 带 地 理 Vol26,No3 2006年 8月 TROP ICAL GEO GRA PHY Aug. , 2006 基于 MA ...

最新文章

  1. 如何将C#nullable int转换为int
  2. 安装Nginx1.14.2过程及配置
  3. pid控制从入门到精通pdf_网络工程师从入门到精通通俗易懂系列 | 访问控制列表ACL原来还可以这样理解,果断收藏!...
  4. C++模拟键盘操作窗口入门
  5. Java JDK 10会有什么期望
  6. crc16码表的使用_查表法计算CRC16校验值
  7. 实现后台高级查询(基础版)
  8. 总觉得该分享点什么!零基础小白如何快速入门前端?
  9. Delphi 7 定义你自己的事件
  10. Eclipse中,将jar包导入为User Library
  11. 微服务架构实战(二):使用API Gateway
  12. paip.提升稳定性---c3p0数据库连接池不能取到连接An attempt by a client to checkout a Connection has timed out
  13. npm install 设置缓存
  14. Fibonacci数列 斐波那契数列
  15. 关于运行npm install报[..................] / idealTree:WEB-48403: sill idealTree buildDeps的问题
  16. 不要再叫自己“程序员”了!
  17. 全网最全面的python的讲解,讲的无可挑剔《记得收藏》
  18. sklearn Gaussian Processes(高斯过程)
  19. 客户/供应商主数据批导
  20. 到底什么是SDWAN服务?

热门文章

  1. C语言简明教程,C语言简明教程
  2. 日志易之配置日志内容黑名单
  3. 招募法师盗贼开箱游戏java,魔兽世界怀旧服玩家怒问盗贼可免费开箱子,要水却要礼貌或收金?...
  4. 美国早期电子商务成功案例今昔:网上卖鞋的成就
  5. 如何设计标签系统?如果构建用户画像
  6. Linux 虚拟内存和物理内存的理解(转)
  7. 初中信息技术计算机的发展,中小学信息技术教材的现状与发展趋势
  8. 文献总结——气象中的滞后相关应用举例
  9. 专业mac绘图软件:FireAlpaca for Mac(2.5.8中文)
  10. [转载]我爱我妻----让男人看一遍哭一遍的文章