Python math库 ln(x)运算的实现及原理
这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数。
实现原理就是泰勒展开,最简单是在x=1处进行泰勒展开:
但该函数离1越远越难收敛,同时大于2时无法收敛,所以需要进行换元,然后重新展开:
但是该换元在接近0时或者接近无穷大时收敛困难,处在1到10范围内收敛快且精度高,所以对大于10或小于1的值进行分解如下:
ln(55000)=ln(5.5)+4ln10
ln(0.0015)=ln(1.5)-4ln10
ln10为算好的值,可直接由ln_h1(10)得到
Epsilon 为精度控制
输出的i可以检测收敛次数。
Epsilon = 10e-16 ln10 = 2.30258509299404568401 def ln_h(x): ''' ln函数泰勒换元展开 :param x: 0<x :return:ln(x) ''' def ln_h1(x): s2 = 0.0 delta = x = (x - 1.0) / (x + 1.0) i = 0 while fab_h(delta * 2) / (i * 2 + 1) > Epsilon: s2 += delta / (i * 2 + 1) delta *= x * x i += 1 print(i) return 2 * s2 coef = 0 if x > 10: while x / 10 > 1: coef += 1 x /= 10 return ln_h1(x) + coef*ln10 elif x < 1: while x * 10 < 10: coef += 1 x *= 10 return ln_h1(x) - coef*ln10 else: return ln_h1(x)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Python入门教程1. 基本运算【四则运算、变量、math模块等】 原创
在熟悉了Python的基本安装与环境配置之后,我们来看看Python的基本运算操作. 1. 基本运算 >>>6 # 这里的'#'是注释符号,不参与运算 6 >>>666666666666666 #整数类型,原样输出 666666666666666 >>>3.14 #浮点数类型 3.14 >>>id(6) #id()函数用于查看内存地址 1409471616 >>>help(id) #help()函数可用于查看函数文档
-
Python math库 ln(x)运算的实现及原理
这个是很有用的一个运算,除了本身可以求自然对数,还是求指数函数需要用到的基础函数. 实现原理就是泰勒展开,最简单是在x=1处进行泰勒展开: 但该函数离1越远越难收敛,同时大于2时无法收敛,所以需要进行换元,然后重新展开: 但是该换元在接近0时或者接近无穷大时收敛困难,处在1到10范围内收敛快且精度高,所以对大于10或小于1的值进行分解如下: ln(55000)=ln(5.5)+4ln10 ln(0.0015)=ln(1.5)-4ln10 ln10为算好的值,可直接由ln_h1(10)得到 Eps
-
python数字类型math库原理解析
首先我们应当了解什么是math库: math库是python提供的内置数学类函数库,math库不支持复数类型,仅支持整数和浮点数运算.math库一共提供了4个数字常数和44个函数.44个函数共分为4类,包括16个数值表示函数,8个幂对数函数,16个三角对数函数和4个高等特殊函数. # 有一点需要注意:math库中的函数不能直接使用,需要先使用保留字import引用该库.如下: (1) import math (2)from math import <函数名> math.<b>(..
-
Python标准库之随机数 (math包、random包)介绍
我们已经在Python运算中看到Python最基本的数学运算功能.此外,math包补充了更多的函数.当然,如果想要更加高级的数学功能,可以考虑选择标准库之外的numpy和scipy项目,它们不但支持数组和矩阵运算,还有丰富的数学和物理方程可供使用. 此外,random包可以用来生成随机数.随机数不仅可以用于数学用途,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性. math包 math包主要处理数学相关的运算.math包定义了两个常数: 复制代码 代码如下: math.e # 自
-
Python标准库之Math,Random模块使用详解
目录 数学模块 ceil -- 上取整 floor -- 下取整 四舍五入 pow -- 幂运算 sqrt -- 开平方运算 fabs -- 绝对值 modf -- 拆分整数小数 copysign -- 正负拷贝 fsum -- 序列和 pi -- 圆周率常数 factorial -- 因数 随机模块 random -- 获取 0~~1 之间的小数 randrange -- 获取指定范围内的整数 randint -- 获取指定范围整数 uniform -- 获取指定范围内随机小数(左闭右开) c
-
使用Python的SymPy库解决数学运算问题的方法
摘要:在学习与科研中,经常会遇到一些数学运算问题,使用计算机完成运算具有速度快和准确性高的优势.Python的Numpy包具有强大的科学运算功能,且具有其他许多主流科学计算语言不具备的免费.开源.轻量级和灵活的特点.本文使用Python语言的NumPy库,解决数学运算问题中的线性方程组问题.积分问题.微分问题及矩阵化简问题,结果准确快捷,具有一定的借鉴意义. 1.Sympy库简介 SymPy一个用于符号型数学计算(symbolic mathematics)的Python库.它旨在成为一个功能齐全
-
Python如何实现大型数组运算(使用NumPy)
问题 你需要在大数据集(比如数组或网格)上面执行计算. 解决方案 涉及到数组的重量级运算操作,可以使用NumPy库.NumPy的一个主要特征是它会给Python提供一个数组对象,相比标准的Python列表而已更适合用来做数学运算.下面是一个简单的小例子,向你展示标准列表对象和NumPy数组对象之间的差别: >>> # Python lists >>> x = [1, 2, 3, 4] >>> y = [5, 6, 7, 8] >>>
-
python math模块的基本使用教程
what's the math 模块 Python math 模块提供了许多对浮点数的数学运算函数.需要注意的是,这些函数一般是对平台 C 库中同名函数的简单封装, 所以一般情况下, 不同平台下计算的结果可能稍微地有所不同, 有时候甚至有很大出入. 主要功能有: 幂数:幂次方.平方根 对数:2.10.e相关的对数操作 圆相关:π.弧度与角度的转换 三角函数:正三角函数.反三角函数 其他常用:小数的整数部分.向上取整.向下取整.两个数的最大公约数.取余数... 幂数 幂与平方根 # pow(x,
-
C站最全Python标准库总结,你想要的都在这里
python标准库思维导图: 1.操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作目录 'C:\\Python34' >>> os.chdir('/server/accesslogs') # 修改当前的工作目录 >>> os.system('mkdir today') # 执行系统命令 mkdir 0 建议使用 "import os&qu
-
C++通过内嵌解释器调用Python及间接调用Python三方库
目录 1.移植Python解释器 2.VS配置(VS2017为例,此教程与VS版本无关) 3.C++调用程序样例 4.被调Python程序样例 本文章目的是脱离安装Python环境的前提下,由C++程序调用Python程序及Python相关三方库 1.移植Python解释器 Python环境的目录结构 路径详解 需要用的如下图 1.红色部分是生成路径下解释器运行时依赖 将红色部分拷贝到C++编译主ExE路径下即可 2.蓝色部分是VS配置编译时依赖 路径或文件名 作用 DLLs Python内部运
-
python机器学习库常用汇总
汇总整理一套Python网页爬虫,文本处理,科学计算,机器学习和数据挖掘的兵器谱. 1. Python网页爬虫工具集 一个真实的项目,一定是从获取数据开始的.无论文本处理,机器学习和数据挖掘,都需要数据,除了通过一些渠道购买或者下载的专业数据外,常常需要大家自己动手爬数据,这个时候,爬虫就显得格外重要了,幸好,Python提供了一批很不错的网页爬虫工具框架,既能爬取数据,也能获取和清洗数据,也就从这里开始了: 1.1 Scrapy 鼎鼎大名的Scrapy,相信不少同学都有耳闻,课程图谱中的很多课
随机推荐
- VS2013设置护眼背景颜色
- Basic求10000以内的完美数
- 基于Vue实现图书管理功能
- node.js利用mongoose获取mongodb数据的格式化问题详解
- asp.net TIDFtp用法介绍
- php快递单号查询接口使用示例
- Python中pygame的mouse鼠标事件用法实例
- node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
- linux 查找大目录和大文件的方法(推荐)
- JS控制日期显示的小例子
- 查看某时间段到现在的系统日志的sed命令
- 实例讲解Lua中pair和ipair的区别
- Oracle 创建主键自增表示例代码
- Maven安装及MyEclipse中使用Maven
- JQuery实现鼠标滑过显示导航下拉列表
- 什么是Linux
- Android微信抢红包功能的实现原理浅析
- Android 混淆代码详解及实例
- php读取本地json文件的实例
- 使用koa2创建web项目的方法步骤