0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样用Python制作数值积分程序

454398 来源:网络整理 作者:网络整理 2019-11-13 08:38 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

步骤1:了解算法第1部分:定积分及其使用

怎样用Python制作数值积分程序

我假设您对基本演算的背景了解一点积分。积分很重要,因为它们使您可以将值数组乘以 infinitesimal 长度求和;这在金融,数论,物理,化学以及许多其他领域中很有用。但是,该程序仅允许您计算有限间隔内曲线下方的面积,换句话说,它不会评估反导数-要使用更强大的算法,那。如果您需要在针对其他对象指定的较大程序中求值定积分,或者要检查答案是否需要手工完成,则此算法很有用。

基本定积分表示函数定义的曲线下的面积,例如F(X)。对于确定的积分,我们求两点之间的面积(分别标记为a和b)。在图片中,绿松石区域是我所指的区域,并且确定该区域的公式也显示在该区域中。图片中显示的功能是任意的。

步骤2:了解算法第2部分:数值逼近

计算机需要大量的指令来计算该面积在可用于任何功能的任意函数下,因此您可能熟悉的分析方法没有用,因为它们太特殊了。一种计算机可以实际处理的近似计算积分的方法是,用感兴趣的区域填充用户定义的宽度和高度可变的矩形,然后对所有矩形区域求和,从而完成计算。矩形的刚性将使某些总面积保持不变,因此为什么将其视为近似值;但是,您可以在边界(a和b)之间填充的矩形越多,由于未触摸的区域变得稀疏,所以近似值越准确。由于计算机将执行此任务,因此可以将所需区域中的矩形数量设置为非常大的数量,从而使逼近非常精确。在支持图片中,假设指定区域中的每个矩形都具有相等的宽度。我尽了最大努力使它们在Microsoft Paint中具有相等的宽度,但没有做得最好。

步骤3:了解算法第3部分:中点规则

此规则指定如何在矩形中制作和使用矩形近似值。 “ N个”矩形中的每个矩形必须具有相等的宽度Δx,但每个第n个矩形不能完全相同:变化因子是高度,它随在某个点求值的函数而变化。中点规则之所以得名,是因为您将每个矩形的高度评估为f(x_n),其中“ x_n”是每个矩形的相应中心点,分别位于矩形的左侧或右侧。使用中点就像实现平均值,比起使用右或左时,将使近似值更准确。此步骤的辅助图片总结了如何在数学上定义中点规则。

第4步:创建程序第1部分:下载Python编译器/编辑器

现在,您了解了需要实现的算法,即让计算机为您执行计算的问题。告诉计算机该怎么做的第一步是获取执行此操作的工具。该算法可以用任何语言编码。为简单起见,该程序将使用Python语言进行编码。要命令您的计算机执行Python操作,您将需要一个编辑器,该编辑器以该语言编写指令,然后将其编译为计算机可以理解的机器语言,从而可以执行您要执行的任务。在当今时代,通常将编辑器和编译器集成在一起,但是并不总是如此。您可以使用任何您喜欢的编辑器/编译器,但我将向您展示如何获取我个人最喜欢的Python:Canopy。如果您已经具有编辑器/编译器,则可以跳过这些步骤。

转到https://www.enthought.com/product/canopy/

单击下载机盖

单击与您的操作系统相对应的下载按钮

下载将自动开始。

启动后,请按照滴注说明进行操作执行文件

运行程序

从程序主菜单中单击“编辑器”

在屏幕中央单击“创建新文件”

从这一点开始,您应该看到一个空白的白色窗口,其光标类似于基本的文字处理文档。现在您可以开始编码用于求解定积分的数值积分算法了。后续步骤将提供您要复制的代码片段,并说明该代码片段对整个程序的作用。

步骤5:创建程序第2部分:导入函数和定义变量

将代码复制到图片中。

对于您可能会发现自己进行编码的任何程序,都会有变量。变量是给将要操作并且可以更改的值的名称。在大多数编程语言(如果不是全部)中,您必须先初始化变量,然后程序才能对其进行更改。在此程序中,我将变量命名为“ N”,“ a”和“ b”。这些值分别表示迭代数(矩形的AKA数),下边界和上边界。您可以随意命名这些名称,但要匹配“理解算法第3部分:中点规则”中给出的公式,最好使其保持不变。请注意,它们不仅设置为特定值。这是因为将它们作为输入,以便在运行程序时,程序的用户可以定义值。输入命令后,引号中的文字会在您运行程序时显示,告诉您要键入哪种类型的值。您还将注意到,在输入名称之前使用了“ int”和“ float”。这些术语告诉计算机此值将是什么类型的变量。 “ int”是整数,“ float”是浮点值(即十进制)。应该清楚为什么要这样指定它们。

在“#”之后出现的任何文本都是注释,它使程序员可以以人性化的方式遵循代码;我已经在您的代码中做了一些注释,您将复制这些注释,但是可以随意添加任何对您有帮助的注释。该程序将不会读取任何带有“#”作为命令的内容。

读取“ from math import *”的代码部分告诉程序导入一系列可以使用的数学函数无需自己编写程序。 “ *”仅表示“全部”。将这部分代码读为:从数学库中导入所有函数。这使您可以使用数学函数,例如正弦,余弦,对数,exp等。这些函数可以数学方式集成在代码中。

第6步:创建程序第3部分:创建集成函数

将代码复制到前一个下方的图片中码。

警告:本部分内容繁琐,我想清除一些可能引起混淆的内容。在谈论编程时,“功能”一词会弹出很多。当您谈论数学时,这个词也会弹出很多。因此,从这一点开始,当我在编程意义上谈论一个函数时,我将写“ Python函数”,而当我谈论数学函数时,我将说“数学函数”。在某些时候,我们将使用Python函数作为所讨论数学函数的表示形式。

下一段代码是程序的核心。在这里,定义了一个Python函数,该函数使用中点规则执行数值积分算法。 “ def Integrate(N,a,b)”的读法是:定义一个名为“ Integrate”的函数,该函数接受变量“ N”,“ a”和“ b”,并返回曲线下方的面积(数学函数)这也在“集成” Python函数中定义。您可以在进行编码时以任何方式调用此Python函数,但是将其称为集成是有意义的,因为它确实集成了数学函数。

在这一点上,值得一提的是Python隔离代码块。代码块是执行特定任务的整个部分。不同的编程语言将具有指定的方式来区分这些“块”。对于Python,一个块通过缩进来区分:每个执行任务的部分都有自己的缩进,并且其他缩进块中也可以有缩进块。这代表了任务中的任务,并从根本上告诉了代码执行的顺序。对于已定义的Python函数“集成”,该函数中的所有内容都缩进一个块,从而区分将在该函数中执行的任务。这个Python函数中的缩进部分也执行自己的任务。内容如下:列出命令(任务),在命令后面加冒号,并在其下方缩进该命令的内容。

在定义“集成” Python函数之后,您将立即定义另一个称为f(x)的Python函数。这表示将要积分的数学函数。对于要集成的每个不同的数学函数,您都必须转到此程序行以对其进行更改(与运行程序时定义的变量不同)。每个Python函数都会有一个返回值,这就是当您将其赋值时该函数返回的结果。在这种情况下,抛出的值是“ x”,而这个“ x”项将采用您抛出的值的值,它是一个临时值。

接下来,是一个for循环充当本教程“理解算法”部分的公式中定义的求和。此求和需要更多几个变量,其中一个将作为整个“ Integrate” Python函数的返回值。在for循环之前,我已将这些变量指定为“ value”和“ value2”。 for循环的任务是遍历指定变量的值范围,该变量可以在for-loop命令中方便地定义;在这种情况下,该变量为“ n”。发生迭代的范围是1到N + 1。您应该注意到,上述公式中定义的总和范围仅从1到N。我们用这种方式进行定义,因为Python语言会从0开始对每个迭代值进行计数,因此我们必须从本质上转移这些值的范围以适应我们的期望范围。然后,for循环允许将所有矩形的高度加在一起,并将该值存储到我称为“值”的变量中。这在显示为:value + = f(a +((n-(1/2))*((b-a)/N)))的代码段中可以看到。

从那里开始,下一段代码使用名为“ value2”的变量,然后将其分配为每个矩形的所有高度的总和乘以每个矩形的标准化宽度。是我们要在程序中显示的最终答案,因此是“集成” Python函数的返回值。

第7步:创建程序第4部分:显示答案

将代码复制到先前代码下方的图片中。

现在,可以通过“集成” Python函数获得答案了,我们希望能够显示它。这只是将用户输入的值(“ N”,“ a”和“ b”)放入“集成” Python函数并将其打印在屏幕上的问题。该命令显示在第21行,它实际上是完成该步骤所需的全部操作。第19和20行上的代码仅用于“修饰”整个程序的输出。 “ print(” 。..。..。..。..。..。..。..。..。..。..。..。..。“)”将程序的输入部分与输出部分分开,然后“ print (“这是您的答案:”),仅表示将在该行文本之后打印答案。

步骤8:运行程序第1部分:按原样运行程序

如果您不使用Canopy,则您甚至可能根本不需要执行此步骤,并且运行该程序可能需要不同的过程。在Canopy中,您必须先保存它,然后才能运行该程序。 Python程序的文件类型是.py文件-它会自动保存为。选择要保存文件的位置,然后就可以运行该程序了。

运行程序:

在显示文件名的工具栏上方,点击看起来像“播放按钮”的绿色按钮(请参阅图片) )。

然后该程序将在称为Canopy数据分析环境的编辑器的底部屏幕中运行。假设您复制了我编写的提示,则应该在Canopy数据分析环境的底部看到提示:“输入要累加的次数(更多=更准确):。”。 (请参阅图片)

输入一个值,表示要执行多少次迭代,即10000(要推入您所在区域的矩形数),然后按Enter键。

将出现更多的提示,这些提示应该是您在步骤5中编码到程序中的熟悉的输入提示。

应该对积分求值,并且应该显示结果。

如果您如上图所示对程序进行编码,则您刚刚积分了f(x) = x ^ 2在一定范围内。 x ^ 2的积分很容易手动计算,因此您应该检查并确保程序对手动确定的正确分析值给出了非常接近的答案。当我使用N = 10000,a = 0和b = 10的值运行程序时,得到的答案是333.33333249999964。正确的分析答案是333.333。这是非常准确和快速的。实际上,您已经在x轴上挤压了10,000个介于0和10之间的矩形,并使用它们来近似计算曲线x ^ 2下的面积!

步骤9:运行程序第2部分:集成其他数学函数

在上一步中,如果您一直在关注忠实地,您对f(x)= x ^ 2进行了积分。这不是该程序可以集成的唯一数学函数。在第5步中,您已经将Python函数的数学库数组导入程序中。这使您可以使用可以集成的更复杂的数学函数。让我们试一试。当然,您可以使用任何想要的函数,但是我将通过集成一个特定的数学函数来进一步证明该代码的准确性,该数学函数在一定范围内集成时会产生一个众所周知的值。该函数为f(x)= Sin [x]。此数学函数显示在第一张随附的图片中,从0到2π进行绘制,并且感兴趣的区域以绿松石阴影显示。在此间隔中,正面积与负面积相等,因此,如果将总面积相加,则应该为零。让我们看看这是否真的发生:

将数学函数f(x)= Sin [x]放入程序中:

再次运行程序之前,在注释下“返回后#type您的函数,”键入:sin(x)当前位于x ** 2的位置。 (参考图片)。

再次点击绿色的播放按钮运行程序。

输入10000作为N值(您希望求和多少次)。

输入“ 0”作为下边界。

将6.2832输入上边界(大约2π)。

看看您能得到什么价值。

当我这样做时,最终得到的价值是1.079e-10:这等于.0000000001079,这实际上是接近于零,因此它看起来确实是准确的,并且表明该算法足以处理负区域。

步骤10:运行程序第3部分:扩展程序

至此,您已经完成:您已经在其中编写了一个有效的确定积分算法可以平稳运行并给出非常准确答案的Python。但是,可以改进此程序。我不是程序员,并且对Python的经验很少。实际上,我不得不重新学习如何使用Python来完成本教程,但这应该使您相信Python是一种易于学习的语言。我的观点是,您可以通过提高程序效率来扩展该程序,也许可以实现一些GUI,并使其更加用户友好。

我对扩展程序的想法:

实现一个图形用户界面,使您无需使用Canopy交互式数据分析环境即可运行程序

对其进行设置,以使无需集成要集成的数学函数程序,但可以在程序运行后输入(我最初是想这样做,但无法弄清楚)。

定义一个“集成” Python函数,以便将f(x)函数视为在其中定义了f(x)函数的地方。

这些是只是一些需要改进的例子,但我保证还有很多其他可以改进的地方。因此,我将这一步骤作为该程序存在缺陷的一个示例,并作为任何想进一步改进该程序的人的练习。
责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 程序
    +关注

    关注

    117

    文章

    3836

    浏览量

    84767
  • python
    +关注

    关注

    57

    文章

    4858

    浏览量

    89588
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是参比电流?数值大小对电能表有什么影响?

    计量检定时的一个参数值,用作误差检测、精度校准的一个数值
    的头像 发表于 12-05 10:15 279次阅读
    什么是参比电流?<b class='flag-5'>数值</b>大小对电能表有什么影响?

    汇编程序段的定义介绍

    的段基址寄存器为DS; INT 21H表示调用由操作系统提供的21H号服务程序。服务的种类由AH中的功能号决定,本例中4CH表示返回操作系统的操作;AL中的代码称为返回代码,返回代码00H表示正常返回
    发表于 11-21 08:19

    LABVIEW 2023 Q1调用python后一直报错1671

    \\Yang\\AppData\\Local\\National Instruments\\NIPythonInterface进入该路径发现是空文件夹,没有the log files。程序的是范例程序
    发表于 11-12 09:51

    Python调用API教程

    两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 一、Requests库发送HTTP请求 使用Python调用API的第一步是发送HTTP请求,通常
    的头像 发表于 11-03 09:15 329次阅读

    Python 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战

    一、技术选型:为什么选 Python 而不是 Java? 结论: “调研阶段 Python,上线后如果 QPS 爆表再考虑 Java 重构。” 二、整体架构速览(3 分钟看懂) 三、开发前准备(5
    的头像 发表于 10-21 16:59 387次阅读
    <b class='flag-5'>用</b> <b class='flag-5'>Python</b> 给 Amazon 做“全身 CT”——可量产、可扩展的商品详情爬虫实战

    东映携手奥拓刷新日本影视制作数字化标杆

    近日,由奥拓电子全程深度参与打造的“东映虚拟影棚”已正式发布启用。这座凝聚前沿科技的虚拟影棚,不仅以640㎡的规模成为日本之最,更凭借顶尖技术配置,刷新了日本影视制作的数字化标杆。作为日本首个由电影
    的头像 发表于 06-04 15:21 874次阅读

    零基础入门:如何在树莓派上编写和运行Python程序

    在这篇文章中,我将为你简要介绍Python程序是什么、Python程序可以用来做什么,以及如何在RaspberryPi上编写和运行一个简单的Pyth
    的头像 发表于 03-25 09:27 1528次阅读
    零基础入门:如何在树莓派上编写和运行<b class='flag-5'>Python</b><b class='flag-5'>程序</b>?

    是否可以使用OpenVINO™部署管理器在部署机器上运行Python应用程序

    使用 OpenVINO™部署管理器创建运行时软件包。 将运行时包转移到部署机器中。 无法确定是否可以在部署机器上运行 Python 应用程序,而无需安装OpenVINO™ Toolkit 和 Python
    发表于 03-05 08:16

    积分积分

    怎么赚取积分好下载呀。
    发表于 03-03 11:24

    DLP6500能否Python编程进行开发,是否有API接口?

    本人第一次接触DLP的开发板,想知道DLP6500这款板子能否Python编程进行开发,是否有API接口?
    发表于 02-28 06:58

    有没有什么方案能实现直接matlab或python调用D4100_usb.dll?

    是32位程序而我的电脑是64位的。 由于实验中主要用matlab编程,使用C++程序很不方便,如果能直接matlab或python调用D4100_usb.dll就会好很多。 因此,我
    发表于 02-27 06:59

    使用ADS1281的SPI采集数据,各个引脚应该怎么连接?

    我想使用ADS1281的SPI采集数据,各个引脚应该怎么连接?那些是必须用I/O口,那些可以直接上拉或下啦,如果想预留PIN模式,怎样用最少的I/O口接线,还有同步输入引脚的作用是什么?应该怎么接线?谢谢
    发表于 02-10 06:52

    Python Connector for InterBase连接解决方案

    适用于 InterBase 的 Python 连接器 Python Connector for InterBase 是一种可靠的连接解决方案,用于从 Python 应用程序访问 Int
    的头像 发表于 01-22 14:34 713次阅读

    ID读卡器Python程序开发

    液显ID读卡器UDP协议开发Python程序。代码如下:   # pip install netifacesimport subprocessimport structimport
    的头像 发表于 01-10 16:05 771次阅读

    Debye-Wolf积分计算器的用法

    摘要 众所周知,Debye-Wolf积分可用于以半解析的方式计算焦平面附近的矢量场。Debye-Wolf积分通常用作分析高数值孔径显微镜成像情况的基本工具。 基于理想化模型,因此不需要精确的镜头规格
    发表于 12-26 08:59