1说明 1。1欧拉数:就是自然常数,e。 1。2e是指数(exponential)的首字母,也是欧拉名字的首字母。 1。3三大数学常数:自然常数e、圆周率和虚数单位i。 1。4第一次把e看成常数的是雅各布伯努利,他开始尝试计算lim(11n)n的值;1727年欧拉首次用小写字母e表示这常数。 欧拉恒等式:真正的宇宙第一公式 欧拉(LeonhardEuler,1707年4月15日1783年9月18日),瑞士数学家和物理学家 2python实现自然常数e 2。1图1 图片1:静态 2。2图2 图片2:蒙特卡洛法动态散点分布图 3python的e求近似值求阶乘法 3。1代码1:计算e的值(精度为106,可调节,最大50,即小数点后50位)sum,tmp1,1foriinrange(1,100):100,为取值最小17,代码2有讲解tmpisum1tmpprint(e的近似值(精度为106)为。6fsum)print(e的近似值(精度为109)为。9fsum)print(e的近似值(精度为1029)为。29fsum)print(e的近似值(精度为1069)为。69fsum) 3。2代码1结果:e的近似值(精度为106)为2。718282e的近似值(精度为109)为2。718281828e的近似值(精度为1029)为2。71828182845904553488480814849e的近似值(精度为1069)为2。718281828459045534884808148490265011787414550781250000000000000000000 3。3代码2:nint(input())sum0defjc(a):求阶乘num1foriinrange(a1):ifi!0:numireturnnumforiinrange(n1):sum1jc(i)print({:。50f}。format(sum)) 3。4结果n为输入非负整数n(1000)17为最小n,大于17的n值基本不变2。718281828459045534884808148490265011787414550781251617的数值改变2。71828182845904287034954904811456799507141113281250 4图片1的代码importmatplotlib。pyplotasplt级数111!12!1n!来近似计算x〔〕y〔〕计算e的值(精度为1050)edata,tmp1,1foriinrange(1,50):x。append(i)tmpiy。append(edata)edata1tmpplt。plot(x,y)plt。title(e自然常数(欧拉数)(小数点后50位):{:。50f}。format(edata))plt。show() 5图片2的说明 5。1源代码来自https:www。jianshu。comp107d97423e6b2019314张子豪同济大学感谢原作者源代码有报错,修改bug,并对代码进行注释、修改、整理 5。2源代码bugNohandleswithlabelsfoundtoputinlegend。homexgjDesktoppythone2。py:35:MatplotlibDeprecationWarning:Addinganaxesusingthesameargumentsasapreviousaxescurrentlyreusestheearlierinstance。Inafutureversion,anewinstancewillalwaysbecreatedandreturned。Meanwhile,thiswarningcanbesuppressed,andthefuturebehaviorensured,bypassingauniquelabeltoeachaxesinstance。plt。subplot(121)。。。。。。(省略) 5。3解决bug思路参考文章https:www。it1352。com1605941。html 6图片2代码 6。1第1步:导入模块importrandomimportmatplotlib。pyplotaspltimportnumpyasnp 6。2第2步:初始化参数设置plt背景颜色定义,一定放在前面plt。style。use(darkbackground)DARTS300可自定义,源代码10241024,太大了counts0落在曲线下方的点数e0e的计算值xs〔0,0〕ys〔0,0〕初始化定义画布,一行2个子图axfig,(ax1,ax2)plt。subplots(1,2) 6。3第3步:子图1ax1开始画左边的图:撒点估计曲线下方的面积xnp。arange(0。5,2。5,0。001)ax1。setylim(0,1。25)y轴坐标范围ax1。setxlabel(x)x轴标签ax1。setylabel(y)y轴标签ax1。plot(x,1x)绘制反比例函数曲线ax1。legend(〔loc1〕)在右上角增加图例ax2。legend(〔y1x〕)图例的内容ax1。plot(〔1,1,2,2〕,〔0,1,1,0〕,r,linewidth0。2)绘制撒点范围框ax1。settitle(蒙特卡洛法动态散点分布图)图的标题动态更新 6。4第4步:联动子图1和子图241子图1的散点图foriinrange(DARTS):xrandom。uniform(1,2)yrandom。uniform(0,1)ify1x:点落在曲线下方counts1ax1。plot(x,y,g。)else:点落在曲线上方ax1。plot(x,y,r。)ifcounts0:epow(2,icounts)42子图2设置开始画右边的图:e的计算值随投掷次数的关系xs〔0〕xs〔1〕上一个e值与下一个e值,通过xs与ys列表中的两个元素进行两点连线xs〔1〕iys〔0〕ys〔1〕ys〔1〕eax2。setylim(0,4。5)y轴坐标范围ax2。setxlabel(Numberoftry)x轴标签ax2。setylabel(Estimationofe)y轴标签ax2。setyticks(np。arange(0,4。5,0。5))y轴刻度线ax2。settitle(e:{:。10f}count:{}。format(e,i))图的标题动态更新绘制2。71828参考线ax2。axhline(np。e,linewidth0。05,colorr)绘制e的计算值随撒点次数变化的曲线ax2。plot(xs,ys,y,linewidth0。3)子图1和子图2交互(ax1与ax2交互)plt。ion()保持图像处于交互更新状态plt。pause(0。2)控制撒点速度 7小结 7。1环境:matplotlib3。2python3。8 7。2注意matplotlib中文设置: 请参考我的文章,以免报错。 《强!3种方法实现pythonmatplotlib显示中文》 分析仔细,值得收藏