plc编程常用算法

plc编程常用算法

ID:40457984

大小:145.50 KB

页数:13页

时间:2019-08-03

plc编程常用算法_第1页
plc编程常用算法_第2页
plc编程常用算法_第3页
plc编程常用算法_第4页
plc编程常用算法_第5页
资源描述:

《plc编程常用算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、编程算法分析作者:弈宇风尘E-mail:phj@hackbase.com第13页常用算法一.基本概念:1.算法:就是解决问题方法的精确描述。并不是所有问题都有算法,有些问题经研究可行,则相应有算法;而有些问题不能说明可行,则表示没有相应算法。算法具有以下性质:是一有穷动作的序列;动作序列仅有一个初始动作;序列中每个动作的后继动作是确定的;序列的终止表示问题得到解答或问题没有解答2.算法的分类:数值的和非数值的数值的算法是以数学方式表示的问题求数值解的方法,如:代数方程计算、矩阵计算、线性方程组求解、函数方程求解等;

2、非数值的算法是求非数值解的方法,如排序查找、模式匹配、排列模拟、表格处理、文字处理等。3.算法设计:主要是针对各类具体问题设计良好的算法及研究设计算法的规律和方法。4.常用的算法设计方法:数值算法:迭代法、递归法、插值法等;非数值算法:分治法、贪婪法、回溯法等。5.算法分析:是对设计出的每一个具体的算法,利用数学工具,讨论各种复杂度。算法的复杂度分时间复杂度和空间复杂度。二.常用数值计算算法1.迭代法迭代法适用于方程(或方程组)求解,是使用间接方法求方程近似根的一种常用算法。(参见清华版《PASCAL程序设计P89

3、练习4.23》设方程f(x)=0,该方法将方程表示为等价形式:x=g(x),或一般地将f(x)拆成两个函数f1、f2,即f(x)=f1(x)-f2(x)=0,因而有f1(x)=f2(x)。其中f1(x)是这样一个函数,对于任意数c,容易求出f1(x)=c的精确度很高的实根。迭代法求解算法如下:(1).首先选一个x的近似根x0,从x0出发,代入右面函数,并解方程f1(x)=f2(x0)得到下一个近似根x1;(2).将上次近似根x1代入右面函数,并解方程f1(x)=f2(x1),得到又一个近似根x2(3).重复(2)的

4、计算,得到一系列近似根x0,x1,x2,…,xi,xi+1,…,xn,…;时间:2021-9-619:24:59编程算法分析作者:弈宇风尘E-mail:phj@hackbase.com第13页若方程有根,这数列收敛于方程的根,若满足,则认为xn是方程的近似根。例1:迭代计算n!、Fibonacci(斐波那契)数列(详见清华版《PASCAL程序设计》P59-62例4.3,4.4)例2:计算直到最后一项的绝对值小于10-7时停止计算,x由键盘输入。(详见清华版《PASCAL程序设计》P72例4.11)练习:清华版《PA

5、SCAL程序设计习题与选解》P18习题4.23,4.381.递推法递推法实际上是需要抽象为一种递推关系求解,此方法通常表现为两种方式:方式一是从简单推到一般;方式二是将一个复杂问题逐步推到一个已知解的简单问题。这两种方式反映了两种不同的递推方向,前者往往用于计算级数,后者与“回归”配合成为一种特殊的算法――递归法。2.递归法在数学中几个熟知的递归定义:O/t1t2(1).(2).树结构:a)O是树(空树);b)若t1和t2是树,则是树。例3:递归计算n!;(详见清华版《PASCAL程序设计》P108例5.8)例4

6、:第二届初中组一、6第二届初中组一、7提示:利用y=((((ANX+AN-1)X+AN-2)X+AN-3)+……+A1)X+A0第七届初中组三、1练习:计算Fibonacci(斐波那契)数列3.插值法也称为内插法。在实际问题中出现的函数f(x),往往只知道它在某区间中若干点的函数值,这时作出适当的特定函数,使得在这些点上取已知值,并且在这区间内其它各点上就用这特定函数所取的值作为函数f(x)的近似值,这方法称为“插值法”时间:2021-9-619:24:59编程算法分析作者:弈宇风尘E-mail:phj@hackb

7、ase.com第13页。如果这特定函数是多项式,就称之为“插值多项式”或“内插多项式”。(常见用于高等代数中的计算)一.常用非数值计算算法1.穷举搜索法穷举所有可能情形,并从中找出符合要求的解。最直观的是联系循环的算法。例5:百钱买百鸡问题;第一届初中组3(也可用累加法)第七届初中组四、2输出1-100内的素数;验证哥德巴赫猜想(详见清华版《PASCAL程序设计》P82-86例4.16,4.17)例6:找出n个自然数(1,2,3,……,n)中r个数的组合当n=5,r=3时,约定前一个数应大于后一个数,有:54354

8、2541532531521432431421321可简单地用三重循环进行搜索,算法如下:fori:=5downto1doforj:=5downto1dofork:=5downto1doif((i<>j)and(i<>k)and(j<>k)and(i>j)and(j>k))thenwriteln(i,j,k);或者fori:=5downto3doforj:=i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。