平时用零碎的时间看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的近似值运行时间对比相关推荐

  1. python爬取javascript变量数据_javascript - [新手]python爬虫爬取中证指数官网数据

    问 题 想用python爬虫获取中证指数官网上的几个主要指数的每日估值更新,但是下载下来的页面内容却没有想要的数据.想要的数据前面有个JavaScript标签,是不是光靠python没办法获取这个数据 ...

  2. python使用级数pi的近似值_π近似莱布尼兹级数

    我担心的是我在johnzelle的<Python编程:计算机科学导论>(第二版)中为练习编写的代码的有效性.在 上面写着:Write a program that approximates ...

  3. Raspberry Pi 4B 开机自动运行Python文件

    组件: Raspberry Pi 4B 环境: Python 3.7.3 1.写自启动脚本 我先在Desktop下创建一个shell脚本 创建格式: sudo nano XXX.sh 我的脚本: su ...

  4. python学习之 利用蒙特卡洛方法计算PI值

    使用环境为python IDLE3.5. #利用蒙特卡洛方法计算PI值 from random import random from math import sqrt from time import ...

  5. python求级数的值_如何在Numpy中计算Fourier级数?

    这是一个老问题,但是由于我必须编写代码,所以我在这里发布了使用numpy.fft模块的解决方案,这可能比其他手工编制的解决方案更快. DFT是计算函数Fourier级数系数(定义为参数的解析表达式或某 ...

  6. python计算圆周率近似值_使用MicroPython计算任意位数圆周率

    计算任意精度的圆周率是个有趣的主题,得益于python的强大计算能力,我们在MicroPython中也可以轻松的计算pi的数值. 先输入下面的代码: """ 文件:pi. ...

  7. Python办公之一:获取多组数据的每日平均值的近似值所对应的日期

    Python办公之一:获取多组数据的每日平均值的近似值所对应的日期 一.需求 1.数据描述:1000个通道,每个通道每日不定时采集数据n份. 2.结果描述:每个通道每日取一组数据(日期,壁厚),要求壁 ...

  8. 蒙特卡洛 pi C语言,python R 实现蒙特卡洛算法计算pi值

    算法说明 下面是摘抄内容,说明的非常详细,如果不懂就不要往下看了: 蒙特卡洛算法是通过概率来计算pi的值的.对于一个单位为1的正方形,以其某一个顶点为圆心,边为半径在正方形内画扇形(一个1/4的圆形的 ...

  9. python和javascript哪个好_JavaScript与Python:主要区别

    Python与JavaScript之间的主要区别在于它们的用法.Python有许多用途,包括数据科学和Web应用程序的后端.JavaScript主要用于Web应用程序的前端,很少在浏览器外部使用. P ...

最新文章

  1. 火爆GitHub的《机器学习100天》,有人把它翻译成了中文版
  2. UWP开发入门(十六)——常见的内存泄漏的原因
  3. 如何使用阿里云容器服务保障容器的内存资源质量
  4. 【数据结构与算法】之深入解析“省份数量”的求解思路与算法示例
  5. 火种 ctf_分析我的火种数据
  6. InnerClass内部类
  7. 腾讯专家献上技术干货,带你一览腾讯广告召回系统的演进
  8. evernote 的美中不足
  9. 注册电气工程师考试考取事宜与考试大纲
  10. VelocityTracker使用详解
  11. 骑士cms(74cms)个人版 整合UC
  12. 潮汕“木塞”(“木虱”)概率计算
  13. 更新xcode至12.3,编译报错Building for iOS, but the linked and embedded framework ‘xxx.framework’ was buil...
  14. 应届生找互联网工作及实习指北
  15. C语言>>8 0xFF; 0xFF;作用
  16. 【游戏引擎Easy2D】一篇打通引擎进阶类型,Keycode+MouseCode+Image
  17. 新手第二课:atof()函数的头文件
  18. 数澜科技X浙江优创:推动平台应用双向融合,共建金融生态合作新标杆
  19. ios上如何能运行android程序,怎么在ios 系统上面运行安卓软件嘛
  20. ROS(机器人操作系统)基础:(一) Linux系统(Ubuntu)介绍及安装

热门文章

  1. linux线程调度与rtos,实时Linux和RTOS的基本特性及技术进行比较
  2. 强制好评,付费去广告,诈骗应用横行AppStore
  3. “一学就会”微服务的架构模式
  4. 百度网盘最大的竞争对手来了!阿里云盘正式公测
  5. 华为应用市场AppGallery Connect研习社·直播:百万开发者打造优质应用的奥秘
  6. 聊聊下一代监控:Prometheus
  7. 优秀程序员是怎样提高敲代码的效率?有这些工具就够了!
  8. 华为此时就把 5G 芯片用在手机上,垒起了多高的竞争壁垒?
  9. IBM 推出全球首台计算性能最强悍的 53 位量子计算机
  10. CSS 二十年发展简史