python使用级数pi的近似值_JavaScript与Python计算pi的近似值运行时间对比
平时用零碎的时间看python的教程,难得有一块空闲时间,用来检验一下成果。
常见的使用编程语言计算π近似值的方法有蒙特卡罗法(由落在正方形内1/4扇形概率为πR2/4R2 = k/n推导 )、定积分法和泰勒级数法等,本人现采用泰勒级数法计算,原理为:
反正切泰勒级数
别紧张,我们不会直接拿这个公式计算,因为当x=1时,arctanx = π/4,上面的级数就变成了这个样子:
arctan1
以及这个样子:
最终形态
变成这样就很直观了,下面就开始着手计算吧,先上JS代码:
function unfoldPiTaylor(num){
var sum = 0,flag = true;
for(var i = 0; i < num; i++){
sum += flag?(1/(2*i+1)):(-1/(2*i+1))
flag = !flag;
}
return sum * 4;
}
console.log("π的近似值:" + unfoldPiTaylor(10000000))
接着是Python(Python3)
#! /usr/bin/env python3
def TaylorPi(k):
sum,odd = 0,True
for i in range(1,k):
sum += 1/(2*i-1) if odd==True else -1/(2*i-1)
odd = not odd
return sum*4
print("Taylor unfold value is :%f"%TaylorPi(10000000)) #print与python2不同
结果:
image.png
如果参数足够大,结果就越精确
接下来进入正题,计算二者跑函数的时间:
function unfoldPiTaylor(num){
var sum = 0,flag = true;
for(var i = 0; i < num; i++){
sum += flag?(1/(2*i+1)):(-1/(2*i+1))
flag = !flag;
}
return sum * 4;
}
function caculateRunTime(){
var timSum = 0,start = 0,term = 0;
for(var j = 0; j < 100; j++){
start = new Date().getTime()
unfoldPiTaylor(10000000);
term = new Date().getTime() - start
timSum += term
console.log("one term done , duration:" + term/1000 + "ms");
}
return "total time:" + timSum + "ms. averange:" + timSum/100 + "ms"
}
console.log(caculateRunTime())
JS运行效率(ms)
#!/usr/bin/env python3
import time #时间模块
# Caculate PI with Taylor series
def TaylorPi(k):
sum,odd = 0,True
for i in range(1,k):
sum += 1/(2*i-1) if odd==True else -1/(2*i-1)
odd = not odd
return sum*4
def caculateRunTime():
before = time.time() #生成开始时间,单位为秒
timeSum = 0
for i in range(100):
start = time.time()
TaylorPi(10000000)
term = time.time() - start #每次循环耗时
print("one term done, duration:",term)
timeSum += term #累加
return "total:%lf,averange:%lf"%(timeSum,timeSum/100)
print(caculateRunTime())
Python运行效率(s)
这下对于两者的运行速度有了直观的认识了
日后回忆:
根据这样的结果就直接评判一个脚本语言的优劣是有失偏颇的,真正的性能瓶颈并不在调用api时产生(关键的影响性能的代码写在静态语言里),python和node近年应用面飞速扩展,也得益于各自社区环境的完善,根据业务需求与场景,选择适合的架构而非纯粹追求脚本运行速度才是一个developer更加关心的问题。
python使用级数pi的近似值_JavaScript与Python计算pi的近似值运行时间对比相关推荐
- python爬取javascript变量数据_javascript - [新手]python爬虫爬取中证指数官网数据
问 题 想用python爬虫获取中证指数官网上的几个主要指数的每日估值更新,但是下载下来的页面内容却没有想要的数据.想要的数据前面有个JavaScript标签,是不是光靠python没办法获取这个数据 ...
- python使用级数pi的近似值_π近似莱布尼兹级数
我担心的是我在johnzelle的<Python编程:计算机科学导论>(第二版)中为练习编写的代码的有效性.在 上面写着:Write a program that approximates ...
- Raspberry Pi 4B 开机自动运行Python文件
组件: Raspberry Pi 4B 环境: Python 3.7.3 1.写自启动脚本 我先在Desktop下创建一个shell脚本 创建格式: sudo nano XXX.sh 我的脚本: su ...
- python学习之 利用蒙特卡洛方法计算PI值
使用环境为python IDLE3.5. #利用蒙特卡洛方法计算PI值 from random import random from math import sqrt from time import ...
- python求级数的值_如何在Numpy中计算Fourier级数?
这是一个老问题,但是由于我必须编写代码,所以我在这里发布了使用numpy.fft模块的解决方案,这可能比其他手工编制的解决方案更快. DFT是计算函数Fourier级数系数(定义为参数的解析表达式或某 ...
- python计算圆周率近似值_使用MicroPython计算任意位数圆周率
计算任意精度的圆周率是个有趣的主题,得益于python的强大计算能力,我们在MicroPython中也可以轻松的计算pi的数值. 先输入下面的代码: """ 文件:pi. ...
- Python办公之一:获取多组数据的每日平均值的近似值所对应的日期
Python办公之一:获取多组数据的每日平均值的近似值所对应的日期 一.需求 1.数据描述:1000个通道,每个通道每日不定时采集数据n份. 2.结果描述:每个通道每日取一组数据(日期,壁厚),要求壁 ...
- 蒙特卡洛 pi C语言,python R 实现蒙特卡洛算法计算pi值
算法说明 下面是摘抄内容,说明的非常详细,如果不懂就不要往下看了: 蒙特卡洛算法是通过概率来计算pi的值的.对于一个单位为1的正方形,以其某一个顶点为圆心,边为半径在正方形内画扇形(一个1/4的圆形的 ...
- python和javascript哪个好_JavaScript与Python:主要区别
Python与JavaScript之间的主要区别在于它们的用法.Python有许多用途,包括数据科学和Web应用程序的后端.JavaScript主要用于Web应用程序的前端,很少在浏览器外部使用. P ...
最新文章
- 火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
- UWP开发入门(十六)——常见的内存泄漏的原因
- 如何使用阿里云容器服务保障容器的内存资源质量
- 【数据结构与算法】之深入解析“省份数量”的求解思路与算法示例
- 火种 ctf_分析我的火种数据
- InnerClass内部类
- 腾讯专家献上技术干货,带你一览腾讯广告召回系统的演进
- evernote 的美中不足
- 注册电气工程师考试考取事宜与考试大纲
- VelocityTracker使用详解
- 骑士cms(74cms)个人版 整合UC
- 潮汕“木塞”(“木虱”)概率计算
- 更新xcode至12.3,编译报错Building for iOS, but the linked and embedded framework ‘xxx.framework’ was buil...
- 应届生找互联网工作及实习指北
- C语言>>8 0xFF; 0xFF;作用
- 【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image
- 新手第二课:atof()函数的头文件
- 数澜科技X浙江优创:推动平台应用双向融合,共建金融生态合作新标杆
- ios上如何能运行android程序,怎么在ios 系统上面运行安卓软件嘛
- ROS(机器人操作系统)基础:(一) Linux系统(Ubuntu)介绍及安装
热门文章
- linux线程调度与rtos,实时Linux和RTOS的基本特性及技术进行比较
- 强制好评,付费去广告,诈骗应用横行AppStore
- “一学就会”微服务的架构模式
- 百度网盘最大的竞争对手来了!阿里云盘正式公测
- 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
- 聊聊下一代监控:Prometheus
- 优秀程序员是怎样提高敲代码的效率?有这些工具就够了!
- 华为此时就把 5G 芯片用在手机上,垒起了多高的竞争壁垒?
- IBM 推出全球首台计算性能最强悍的 53 位量子计算机
- CSS 二十年发展简史