大林算法实验报告(20200623034811)
实验报告算法分析

实验报告算法分析实验报告:算法分析引言在计算机科学领域中,算法是解决问题的一种方法或步骤的描述。
通过对算法的分析,我们可以评估其效率和性能,从而选择最优的算法来解决特定的问题。
本实验报告旨在介绍算法分析的基本概念和方法,并通过实例来说明其应用。
一、算法分析的背景算法分析是计算机科学中的重要研究领域,它关注如何评估算法的效率和性能。
在实际应用中,我们经常面临着需要在有限的时间内解决大规模问题的挑战。
因此,选择一个高效的算法是至关重要的。
算法分析的目标是通过定量分析算法的时间复杂度和空间复杂度,为选择最佳算法提供依据。
二、算法分析的方法1. 时间复杂度分析时间复杂度是衡量算法执行时间的一种指标。
通常使用大O表示法来表示时间复杂度。
通过计算算法执行所需的基本操作次数,可以得到算法的时间复杂度。
常见的时间复杂度有O(1)、O(log n)、O(n)、O(n log n)和O(n^2)等。
时间复杂度越低,算法执行所需的时间越短。
2. 空间复杂度分析空间复杂度是衡量算法内存使用的一种指标。
通过计算算法执行所需的额外空间大小,可以得到算法的空间复杂度。
常见的空间复杂度有O(1)、O(n)和O(n^2)等。
空间复杂度越低,算法所需的内存空间越小。
三、算法分析的应用算法分析在计算机科学的各个领域都有广泛的应用。
以下是几个常见的应用示例:1. 排序算法排序算法是计算机科学中的经典问题之一。
通过对不同排序算法的时间复杂度进行分析,可以选择最适合特定需求的排序算法。
例如,快速排序算法的平均时间复杂度为O(n log n),在大规模数据排序中表现出色。
2. 图算法图算法是解决图结构相关问题的一种方法。
通过对图算法的时间复杂度和空间复杂度进行分析,可以选择最适合解决特定图问题的算法。
例如,广度优先搜索算法的时间复杂度为O(V+E),其中V和E分别表示图的顶点数和边数。
3. 动态规划算法动态规划算法是解决具有重叠子问题性质的问题的一种方法。
算法设计与分析实验报告

实验报告题目实验一递归与分治策略一、实验目的1.加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握;2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。
二、实验内容设计一个递归和分治算法,找出数组的最大元素,找出x在数组A中出现的次数。
三、实验要求(1)用分治法求解…问题;(2)再选择自己熟悉的其它方法求解本问题;(3)上机实现所设计的所有算法;四、实验过程设计(算法设计过程)1.设计一个递归算法,找出数组的最大元素。
2.设计一个分治算法,找出x在数组A中出现的次数。
3.写一个主函数,调用上述算法。
五、实验结果分析(分析时空复杂性,设计测试用例及测试结果)时间复杂性:最好情况下,O(n)最坏情况下:O(nlog(n)空间复杂性分析:O(n)六、实验体会通过写递归与分治策略实验,更加清楚的知道它的运行机理,分治法解题的一般步骤:(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的解。
做实验重在动手动脑,还是要多写写实验,才是硬道理。
七、附录:(源代码)#include"stdio.h"#define ElemType intint count(ElemType a[],int i,int j,ElemType x){int k=0,mid; //k用来计数,记录数组中x出现的次数if(i==j){if(a[i]==x) k++;return k;}else{mid=(i+j)/2;k+=count(a,i,mid,x);k+=count(a,mid+1,j,x);}return k;}ElemType Maxitem(ElemType a[],int n){ElemType max=a[n-1],j;if(n==1){max=a[n-1];return max;}else{j=Maxitem(a,n-1);if(j>max) max=j;return max;}}void main(void){ElemType a[]={1,5,2,7,3,7,4,8,9,5,4,544,2,4,123};ElemType b;ElemType x;int n;b=Maxitem(a,15);printf("数组的最大元素为%d\n",b);printf("输入想要计数的数组元素:\n");scanf("%d",&x);n=count(a,0,14,x);printf("%d在数组中出现的次数为%d次\n",x,n);}实验二动态规划——求解最优问题一、实验目的1.加深学生对动态规划算法设计方法的基本思想、基本步骤、基本方法的理解与掌握;2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。
算法实验报告

算法分析与设计实验报告算法实现题3-4(数学三角形问题):第一部分 实验内容(1)熟悉动态规范算法的思想。
(2)熟悉分析问题的最优子结构性质。
(3)掌握动态规划算法解决问题的一般思路第二部分 问题及算法1.求解问题的算法描述(1)问题描述: 给定n行数字组成的数字三角形,计算从三角形的自顶到底的一条路径,使该路径经过的数字的总和最大。
(2)算法描述:求第一层到最底层的“最大路径长度”,只需要求出第二层数字中到最底层的“最大路径长度”加上第一层的数字即可。
依靠此思想将问题分解成n-1个子问题,从倒数第二层开始计算每层到最底层的“最大路径长度”。
将数学三角形存在二维矩阵A[n][n]中,对于非底层的每个数向下走时只有两个选择,每次选择较大的数相加,自底至上的计算,将每个数到达底层的“最大路径长度”储存在数组A中,最终A[0][0]存储的就是第一层到最底层的“最大路径长度”。
(3)算法伪代码://求第一层到最底层的“最大路径长度”int triangle(int a[SIZE][SIZE],int n){– 2 to 0)for (row = nfor (col = 0 to row)if (A[row + 1][col] > A[row + 1][col + 1])A[row][col] += A[row + 1][col];elseA[row][col] += A[row + 1][col+1];return A[0][0];}2. 算法实现的关键技巧(1)分解原问题为规模更小的子问题,并且分析问题是否具有最优子结构性质。
求第一层到最底层的“最大路径长度”,可以看作求第一层的数加上第二层数字中到最底层的“最大路径长度”。
第二层某数到最底层的“最大路径长度”等于该数加上第三层中该数可以到达的数字到最底层的“最大路径长度”……这样分解下去,就可以将问题分为多个子问题。
大问题的最优解包括子问题的最优解,满足最优子结构性质。
算法设计与分析的实验报告

实验一递归与分治策略一、实验目的1.加深学生对分治法算法设计方法的基本思想、基本步骤、基本方法的理解与掌握;2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。
二、实验内容1、①设a[0:n-1]是已排好序的数组。
请写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。
当搜索元素在数组中时,i和j相同,均为x在数组中的位置。
②写出三分搜索法的程序。
三、实验要求(1)用分治法求解上面两个问题;(2)再选择自己熟悉的其它方法求解本问题;(3)上机实现所设计的所有算法;四、实验过程设计(算法设计过程)1、已知a[0:n-1]是一个已排好序的数组,可以采用折半查找(二分查找)算法。
如果搜索元素在数组中,则直接返回下表即可;否则比较搜索元素x与通过二分查找所得最终元素的大小,注意边界条件,从而计算出小于x的最大元素的位置i和大于x的最小元素位置j。
2、将n个元素分成大致相同的三部分,取在数组a的左三分之一部分中继续搜索x。
如果x>a[2(n-1)/3],则只需在数组a的右三分之一部分中继续搜索x。
上述两种情况不成立时,则在数组中间的三分之一部分中继续搜索x。
五、实验结果分析二分搜索法:三分搜索法:时间复杂性:二分搜索每次把搜索区域砍掉一半,很明显时间复杂度为O(log n)。
(n代表集合中元素的个数)三分搜索法:O(3log3n)空间复杂度:O(1)。
六、实验体会本次试验解决了二分查找和三分查找的问题,加深了对分治法的理解,收获很大,同时我也理解到学习算法是一个渐进的过程,算法可能一开始不是很好理解,但是只要多看几遍,只看是不够的还要动手分析一下,这样才能学好算法。
七、附录:(源代码)二分搜索法:#include<iostream.h>#include<stdio.h>int binarySearch(int a[],int x,int n){int left=0;int right=n-1;int i,j;while(left<=right){int middle=(left+right)/2;if(x==a[middle]){i=j=middle;return 1;}if(x>a[middle])left=middle+1;else right=middle-1;}i=right;j=left;return 0;}int main(){ int a[10]={0,1,2,3,4,5,6,7,8,9};int n=10;int x=9;if(binarySearch(a,x,n))cout<<"找到"<<endl;elsecout<<"找不到"<<endl;return 0;}实验二动态规划——求解最优问题一、实验目的1.加深学生对动态规划算法设计方法的基本思想、基本步骤、基本方法的理解与掌握;2.提高学生利用课堂所学知识解决实际问题的能力;3.提高学生综合应用所学知识解决实际问题的能力。
算法分析实验三报告

《算法设计与分析》实验报告目录一、实验内容描述和功能分析.二、算法过程设计.三、程序调试及结果(附截图).四、源代码(附源代码).一、实验内容描述和功能分析.1.矩阵连乘问题内容描述:给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2 ,…,n-1。
如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。
功能分析:输入包含多组测试数据。
第一行为一个整数C,表示有C 组测试数据,接下来有2*C行数据,每组测试数据占2行,每组测试数据第一行是1个整数n,表示有n个矩阵连乘,接下来一行有n+1个数,表示是n个矩阵的行及第n个矩阵的列,它们之间用空格隔开。
输出应该有C行,即每组测试数据的输出占一行,它是计算出的矩阵最少连乘积次数。
例如:输入:1输出:7500310 100 5 502.Pebble Merging内容描述:在一个圆形操场的四周摆放着n 堆石子。
现要将石子有次序地合并成一堆。
规定每次只能选相邻的2 堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。
试设计一个算法,计算出将n堆石子合并成一堆的最小得分和最大得分。
编程任务:对于给定n堆石子,编程计算合并成一堆的最小得分和最大得分。
功能分析:输入由多组测试数据组成。
每组测试数据输入的第1 行是正整数n,1≤n≤100,表示有n堆石子。
第二行有n个数,分别表示每堆石子的个数。
对应每组输入,输出的第1 行中的数是最小得分;第2 行中的数是最大得分。
例如:输入:4 输出:434 45 9 54二、算法过程设计.1.矩阵连乘问题矩阵连乘问题是通过设置数组,利用数组的横竖坐标来进行矩阵对应行与列的计算。
2.Pebble Merging这个问题也是跟数组相关,通过寻找数组中的最大和最小值来进行计算。
三、程序调试及结果(附截图).1.矩阵连乘问题2.Pebble Merging四、源代码(附源代码).1.矩阵连乘问题#include <stdio.h>int main(){ int a[ 50 ] , b[ 50 ][ 50 ] , c[ 50 ][50 ] , z , n;int i , r , j , k , t;scanf("%d",&z);while (z --){ scanf("%d",&n);for (i = 0 ; i <= n ; ++ i) scanf("%d",& a[ i ]);for (i = 1 ; i <= n ; ++ i) b[ i ][ i ] = 0;for (r = 2 ; r <= n ; ++ r)for (i = 1 ; i <= n - r + 1 ; ++ i){ j = i + r - 1;b[ i ][ j ] = b[i + 1][ j ] + a[i - 1] * a[ i ] * a[ j ];c[ i ][ j ] = i;for (k = i + 1 ; k < j ; ++ k){ t = b[ i ][ k ] + b[k + 1][ j ] + a[i - 1] * a[ k ] * a[ j ];if (t < b[ i ][ j ])b[ i ][ j ] = t , c[ i ][ j ] = k;}}printf ("%d\n" , b[ 1 ][ n ]);}return 0;}2.Pebble Merging#include <stdio.h>int main(){ int dpmin[ 200 ][ 200 ] , min[ 200 ][ 200 ] , mins;int dpmax[ 200 ][ 200 ] , max[ 200 ][ 200 ] , maxs;int a[ 200 ] , i , n , j , k , temp , l;while (scanf ("%d" , & n) != EOF){ for (i = 1 ; i <= n ; ++ i) scanf ("%d" , & a[ i ]);for (i = 1 ; i < n ; ++ i) a[i + n] = a[ i ];for (i = 1 ; i < 2 * n ; ++ i){ min[ i ][ i ] = max[ i ][ i ] = 0;dpmax[ i ][ i ] = dpmin[ i ][ i ] = a[ i ];dpmax[ i ][i + 1] = dpmin[ i ][i + 1] = a[ i ] + a[i + 1];min[ i ][i + 1] = max[ i ][i + 1] = a[ i ] + a[i + 1];}for (i = 1 ; i < n - 1; ++ i)for (l = 1 , j = 2 + i ; j < 2 * n ; ++ j , ++ l){ for (k = l + 1 ; k <= j ; ++ k){ if (k == l + 1){ dpmin[ l ][ j ] = dpmin[ l ][k - 1] + dpmin[ k ][ j ] + min[ l ][k - 1] + min[ k ][ j ];if ( l == k - 1 && k != j)min[ l ][ j ] = a[ l ] + min[ k ][ j ];elseif (l != k - 1 && k == j)min[ l ][ j ] = min[ l ][k - 1] + a[ k ];elsemin[ l ][ j ] = min[ l ][k - 1] + min[ k ][ j ]; dpmax[ l ][ j ] = dpmax[ l ][k - 1] + dpmax[ k ][ j ] + max[ l ][k - 1] + max[ k ][ j ];if ( l == k - 1 && k != j)max[ l ][ j ] = a[ l ] + max[ k ][ j ];elseif (l != k - 1 && k == j)max[ l ][ j ] = max[ l ][k - 1] + a[ k ];elsemax[ l ][ j ] = max[ l ][k - 1] + max[ k ][ j ];continue ;}temp = dpmin[ l ][k - 1] + dpmin[ k ][ j ] + min[ l ][k - 1] + min[ k ][ j ];if (temp < dpmin[ l ][ j ]){ dpmin[ l ][ j ] = temp;if ( l == k - 1 && k != j)min[ l ][ j ] = a[ l ] + min[ k ][ j ];elseif (l != k - 1 && k == j)min[ l ][ j ] = min[ l ][k - 1] + a[ k ];elsemin[ l ][ j ] = min[ l ][k - 1] + min[ k ][ j ];}temp = dpmax[ l ][k - 1] + dpmax[ k ][ j ] + max[ l ][k - 1] + max[ k ][ j ];if (temp > dpmax[ l ][ j ]){ dpmax[ l ][ j ] = temp;if ( l == k - 1 && k != j)max[ l ][ j ] = a[ l ] + max[ k ][ j ];elseif (l != k - 1 && k == j)max[ l ][ j ] = max[ l ][k - 1] + a[ k ];elsemax[ l ][ j ] = max[ l ][k - 1] + max[ k ][ j ];} } }mins = dpmin[ 1 ][ n ]; maxs = dpmax[ 1 ][ n ];for (i = 2 ; i <= n ; ++ i){ if (mins > dpmin[ i ][i + n - 1])mins = dpmin[ i ][i + n - 1];if (maxs < dpmax[ i ][i + n - 1])maxs = dpmax[ i ][i + n - 1];}printf ("%d\n%d\n" , mins , maxs);}return 23;}。
达林算法实验报告

一、实验目的1. 理解达林算法的基本原理和设计过程。
2. 掌握如何利用达林算法解决具有纯滞后特性的控制系统问题。
3. 分析达林算法在不同纯滞后时间下的控制效果,并验证理论分析的正确性。
二、实验原理在工业生产中,许多过程对象含有纯滞后特性,这会对自动控制系统的稳定性、动态性能和适应性产生不利影响。
当纯滞后时间与对象的惯性时间常数之比超过0.5时,常规的PID控制往往难以获得良好的控制性能。
达林算法(大林算法)是一种针对具有纯滞后特性的控制系统提出的特殊控制方法,可以有效解决这一问题。
达林算法的基本思想是:在控制器的设计中,采用一个相当于连续一阶惯性环节的传递函数来代替最少拍多项式,如果对象有纯滞后,则传递函数应包含有同样的纯滞后环节。
通过调整达林算法中的参数,可以实现对具有纯滞后特性的控制系统的有效控制。
三、实验仪器1. MATLAB 6.5软件一套2. 个人PC机一台四、实验步骤1. 建模与仿真(1)根据实验要求,构建具有纯滞后特性的被控对象模型。
(2)在MATLAB中编写代码,实现达林算法的控制器设计。
(3)设置不同的纯滞后时间,进行仿真实验。
2. 参数调整与优化(1)根据仿真结果,分析达林算法在不同纯滞后时间下的控制效果。
(2)调整达林算法中的参数,优化控制效果。
(3)记录参数调整过程及结果。
3. 结果分析与讨论(1)对比分析不同纯滞后时间下,达林算法的控制效果。
(2)分析参数调整对控制效果的影响。
(3)总结达林算法在解决具有纯滞后特性的控制系统问题中的应用。
五、实验结果与分析1. 仿真结果通过仿真实验,得到了不同纯滞后时间下,达林算法的控制效果。
结果表明,随着纯滞后时间的增加,系统的稳定性逐渐降低,动态性能变差,超调和持续振荡现象加剧。
2. 参数调整在实验过程中,对达林算法中的参数进行了调整。
通过调整参数,可以改善控制效果,降低超调,缩短调节时间,提高系统的稳定性。
3. 结果讨论实验结果表明,达林算法在解决具有纯滞后特性的控制系统问题中具有较好的应用效果。
计控实验3 大林算法

T
2、用MATLAB和Simulink仿真并检查输出结果是否符 合控制系统设计要求。
二、实验内容 2 S e 1、已知被控对象的传递函数 G ( s) s( s 1) ,若采样期 T=1s,用大林算法设计数字控制器D(Z),并用MATLAB 检验系统的性能。
HG(Z)
r(t) T R(Z) E(Z) × ○ D(Z) T H0(S) G(S)
实验三:大林算法
一、实验目的:
1、对应纯滞后的被控对象,应采用大林算法。 (1)大林算法的设计准则:对于一阶或二阶滞后系 统,设计数字控制器D(z),使整个闭环系统的滞后与 被控对象的滞后相同,消除滞后环节对系统稳定性的 s Ke 影响。 G( s ) 1 T 1s 一阶滞后系统可表示为: e s Gc (s) 1 THS 闭环系统的传递函数:
(二)Simulink的模块库
通用模块
连续模块 非连续模块 离散模块 接收模块
输入信号源
数学运算 端口与子系统
1.输入信号源模 块库(Sources)
主要有: Constant(常数) Step(阶跃信号) Ramp(线性信号) Sine Wave(正弦信号) Signal Generator(信 号发生器) From File(文件获取) From Workspace(矩阵 读数据) Clock(仿真时钟) In(输入模块)
1、启动MATLAB
下载软件或用光盘进行MATLAB的安装。
点击 图标 ,启动MATLAB,出现操作窗口:
操作界面分为以下几部分: (1)菜单 (2)工具栏 (3)工作空间窗口
(4)命令窗口 (5)历史命令窗口口
命令 窗口
历史 命令 窗口 开始按钮
大林算法实验报告

实验4 大林算法工业设计和调试实验目的:1.认识和理解大林控制算法控制大时延系统的机理和效果。
2掌握实际控制系统的大林控制算法的设计、实现和调试方法及技术。
实验内容:1.测试系统开环阶跃响应求得被控对象的近似传递函数。
2.对被控对象近似传递函数进行等效离散化。
3.基于被控对象等效离散化模型设计大林控制算法,编写出实现程序,将其嵌入到实验软件中。
4.将设计的大林算法投入运行,并经过调试获得预期控制性能。
5.记下大林控制算法的控制效果。
实验原理及说明:大林算法是针对工业生产过程中含有纯滞后的被控对象所研究的控制算法,即在调节时间允许的情况下,要求系统没有超调量或只有在允许范围中的很小的超调量。
大林算法的设计目标是设计一个数字调节器,使整个闭环系统所期望的传递函数相当于一个延迟环节和一个惯性环节的串联,并期望整个闭环系统的纯滞后时间和被控对象的滞后时间相同,并且,纯滞后时间与采样周期是整数倍关系。
实验中采样周期为1秒,k=0.15,t=22秒,t1=55秒。
.大林算法中涉及的被调对象的参数:对象是一阶惯性滞后环节,<1>对象的放大倍数Kp:Kp=△PV/△OP 阶跃比,这是开环的静态参数,与PID的放大倍数K不是一回事;<2>对象的时间常数T:干扰阶跃引起PV变化,从变化起到稳定值约2/3处的时间值,不包括滞后时间;<3>滞后时间T2:干扰阶跃开始到PV开始变化这一段滞后时间,包括:纯滞后时间及容量过渡滞后时间;2. 整个系统的闭环传递函数相当于是一阶惯性环节, 这是大林算法的期望环节:<1> 输入R(t)是回路的设定值SP;输出Y(t)是回路的PV值;<2> 此一阶惯性环节的放大倍数为1,即稳定时PV=SP; 最终偏差接近零;<3>此期望环节的纯滞后时间应等于被调节对象的纯滞后时间;<4>此期望环节的闭环时间常数:这是待定的期望参数,为不引起回路的小幅振荡,这个时间值应选用大于等于被调对象的时间常数,3. 这些参数如果不精确,将引起大林算法的不稳定性,导致调节质量变坏;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大林算法实验报告
一、实验目的
1、 掌握大林控制算法的基本概念和实现方法;
2、 进一步熟悉MATLAB 的使用方法;
3、 掌握在MATLAB 下大林算法控制器的调试方法;
4、 观察振铃现象,并且尝试消除振铃现象
二、实验原理
1■大林算法的原理及推导
大林算法是IBM 公司的大林(Dahlin)在1968年提出了一种针对工业生产过程中含有纯 滞后对象的控制算法。
其目标就是使整个闭环系统的传递函数
相当于一个带有纯滞后的一 阶惯性环节。
该算法具有良好的控制效果。
大林控制算法的设计目标是使整个闭环系统所期望的传递函数
0 (s)
相当于一个延迟环节和一个惯性环节相串联,即 : 整个闭环系统的纯滞后时间和被控对象 G0(s)的纯滞后时间T 相同。
闭环系统的时间常数为 T T ,纯滞后时间T 与采样周期T 有整数倍关系,
T =NT 。
其控制器形式的推导的思路是用近似方法得到系统的闭环脉冲传递函数,然后再由被 控系统的脉冲传递函数,反推系统控制器的脉冲传递函数。
由大林控制算法的设计目标,可知整个闭环系统的脉冲传递函数应
当是零阶保持器与理想的 0 (s)串联之后的Z 变换,即0 (z)如下:
R(z) _ s Ts 1 1- e T z 对于被控对象为带有纯滞后的一阶惯性环节即: s NTs Ke G o (s)- 1 Tp Ke 1 「s 其与零阶保持器相串联的的脉冲传递函数为:
(s)二 1 Ts 1
G (z)=z3 心
.s 1 + T 1S 」
K Z — NT T/T 1 1 _ e ;
1 ■ e z
于是相应的控制器形式为: (仁「厲)(仁/仁一1
) K (I e
TTl )1 - ―1 -(1 e TT )^N_1
2■振铃现象及其消除 按大林算法设计的控制器可能会出现一种振铃现象,即数字控制器 的输出以二分之一的采样频率大幅度衰减振荡,会造成执行机构的磨损。
在有交互作用的多参数控制系统中,振铃现象还有可能影响到系统的稳 定性。
衡量振铃现象的强烈程度的量是振铃幅度 RA (Ringing Amplitude)。
它的定义是:控制器在单位阶跃输入作用下,第零次输出幅度与第一次 输出幅度之差值。
当被控对象为纯滞后的一阶惯性环节时,数字控制器
D(z)为: D 注 ⑴e TT
)(i -宀\ D(Z) T T 1 T T -1 T T N -1 K(1- e J 1- e "z - (1- e f)z ]
由此可以得到振铃幅度为: T/T T/T 1 T/T 1 -T/T
RA= ( e ) -( e 1
p e - e 于是,如果选择 T T >T1,则RA W 0,无振铃现象;如果选择 T T < T1, 则有振铃现象。
由此可见,当系统的时间常数
T T 大于或者等于被控对象的
时间常数T1时,即可消除振铃现象。
三、实验内容
已知某过程对象的传递函数为:
期望的闭环系统时间常数
T 0 = 0.25s ,采样周期 T =0.5s 。
要求:
(1) 适用大林算法设计数字控制器;
(2) 判断有无振铃现象,若有则修改控制器消除之,仿真并分析系统在单位阶跃响应下 的输出结果;
(3) 利用PID 控制器控制该对象,使得系统在单位阶跃信号下的响应满足超调量不超过 20%,衰减比为4:1,调节时间不超过 4s ;
⑷分析以上两种方法的优缺点。
四、实验过程
G (s )二 3e -0.5s
0.6s 1
(1)大林算法设计数字控制器已知:
T o = 0.25s
将其带入:
T =0.5s K=3 T1=0.6 N=1
D(z) =
(1-「几)(17勿才1) K(1eT)_1e TT zJ(1e TT
)zZ
可以得到D( z)的相关表达式。
并用MATLAB莫拟如下: 得到图像如下
(2)无振铃现象
(3)PID算法设计如下:
得取PID 值分别为:
P=0.3
1=0.1 D=0.086
得图像: 到控制所需的条件。
第二种方法设计简单,但是实验过程较复杂,需多次尝试。
J I I L
0123456789 10。