QQ截图20130914191427.png (2.97 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:15 上传
统称为系统的离散系数矩阵。
在转换过程中引入了一个重要参数T,即采样间隔,也就是采样时间,不管是powergui还是其他离散模型,只要涉及到离散,都必然会涉及到sample time,如下图
QQ截图20130914191439.png (34.78 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:15 上传
那么sample time 一般取多大呢,一直满足采样定理即可,即信号的采样频率大于信号本身最大频率的2倍即可。
4. simulator连续模型的仿真算法(simulatesolver,也可译成仿真解算器)和步长的概念。
QQ截图20130914191629.png (28.07 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:16 上传
连续系统的计算机仿真算法是数值积分法,即计算机用数值积分来解微分方程,从而得到其近似解。具体方法如下
①欧拉法和改进的欧拉法: 现有微分方程如下:
QQ截图20130914191456.png (7.06 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:15 上传 上式右端的积分,计算机是无法求出的,其几何意义为曲线f(t,y)在区间(ti ,ti+1)上的面积。当(ti ,ti+1)充分小时,可用矩形面积来近似代替:
QQ截图20130914191712.png (3.1 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:17 上传 其中h即为积分步长。
Note:在simulator仿真计算时,h实际为仿真时间间隔。 因此可得下式:
QQ截图20130914191718.png (2.86 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:17 上传
因此只要知道当前状态和步长,便可得到下一状态。其几何意义如下:
QQ截图20130914175806.png (2.41 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:58 上传
分析其误差特性: 由泰勒展式可得:
QQ截图20130914175830.png (1.91 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:58 上传
可知其截断误差
QQ截图20130914175906.png (1003 Bytes, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:59 上传
是和步长h2成正比的,因此计算机在计算时,若要使近似积分精度更高,就要减小步长,但会增加截断误差。
②改进的欧拉法(预测—校正法)
对积分公式(3.1.2)式利用梯形面积公式计算其右端积分,得到
QQ截图20130914175957.png (1.4 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 18:00 上传
将上式写成递推差分格式为:
QQ截图20130914180026.png (992 Bytes, 下载次数: 6) 下载附件 保存到相册 2013-9-14 18:01 上传
从上式可以看出,在计算 yn+1中,需要知道fn+1,而fn+1=f(tn+1,fn+1)又依赖于yn+1本身。因此要首先利用欧拉法计算每一个预估的ypn+1,以此值代入原方程式计算fpn+1,最后利用下式求修正后的ypn+1。所以改进的欧拉法可描述为
image098.jpg (5.1 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:39 上传
③龙格—库塔法(rung-kuta) 欧拉法是将
image099.jpg (14.94 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:39 上传
经泰勒级数展开并截去h2以后各项得到的一阶一步法,所以精度较低。如果将展开式多取几项以后截断,就得到精度较高的高阶数值解,但直接使用泰勒级数展开式要计算函数的高阶导数较难。龙格—库塔法是采用间接利用泰勒级数展开式的思路,即用在n个点上的函数值f的线性组合来 代替f的导数,然后按泰勒级数展开式确定其中的系数,以提高算法的阶数。这样既能避免计算函数的导数,同时又 保证了计算精度。由于龙格—库塔法具有许多优点,故在许多仿真程序包中,它是一个最基本的算法之 一。
④线性多步法
以上所述的数值解法均为单步法。在计算中只要知道
QQ截图20130914180638.png (3.05 KB, 下载次数: 6) 下载附件 保存到相册
2013-9-14 18:07 上传 。也就是说,根据初始条件可以递推计算出相继各时刻的y值,所以这种方法都可以自启动。 下面要介绍的是另一类算法,即多步法。 用这类算法求解时,可能需要
image101.jpg (13.92 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:39 上传
各时刻的值。显然多步法计算公式不能自启动,并且在计算过程中占用的内存较大,但可以提高计算精度和速度。例如:亚当斯—贝希霍斯显式多步法 ⑤刚性(stiff)系统解法 所谓刚性系统,就是用来描叙这类系统的微分方程的解,往往是由多个时间常数共同作用的,其中某些小时间常数对解的影响往往是微乎其微但的确不可或缺的。例如下式是一个简单刚性系统微分方程的解:
QQ截图20130914180727.png (629 Bytes, 下载次数: 6) 下载附件 保存到相册 2013-9-14 18:07 上传
image105.jpg (10.19 KB, 下载次数: 6) 下载附件 保存到相册 2013-9-14 17:39 上传
当时间较大时特征解-1000几乎对方程不起任何作用,但开始时有不能忽略e-1000t的影响,因此若前面介绍的计算机数值解法,为了保证解的稳定性在选取步长h时,必须保证1000h较小,也就是说步长h必须十分的小,这必然会增大计算次数,增大计算时间,而又因为在t一定大时,e-1000t 几乎不起作用,因此这种增大次数又不会对计算精度有多大改善,就是说常规解法计算刚性系统是在做无用功。
到目前为止,已提出不少解刚性方程的数值方法,基本上分为:显式公式, 隐式公式和预测校正型。
显示公式常用雷纳尔法
隐式方程都是稳定的,故都适合于解描述刚性系统的方程组,如隐式的龙格—库塔法。但这种方法每计算一步都需要进行迭代,故计算量大,在工程上使用有一定困难。因此在解刚性方程时,常采用Rosenbrock提出的半隐式龙格—库塔法。 预测—校正型中常用的解刚性方程的方法是Gear算法
5. simulator离散模型的仿真算法和步长的概念。 离散模型的数学建模一般采用差分方程的方式,在matlab中其仿真算法是采用discrete算
法,就是根据simulation step 定时对离散模块进行更新(就是定时计算差分方程的意思)
QQ截图20130914191827.png (21.05 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:18 上传
至于其步长的概念和连续模型中h的概念差不多,但是它的大小选择和sample time 有着密切关系,下面会给予说明。
6.simulink中仿真参数(simulation/configurationparameters) 有了上面知识的铺垫,可以介绍simulink仿真参数的设置
QQ截图20130914191901.png (75.84 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:19 上传
上图中solver(仿真解算器)就是上面介绍的各种算法用计算机语言编程的实现。 continuous solver就是数值积分法,discrete solver就是离散解法。 步长有variable step(变步长)和fixed step(固定步长之分)。continuous solver中的步长就是h,就是积分时间间隔,对于discrete solver的步长是和要仿真的模型中的sample time有密切关系的,是不可以随便取的。
QQ截图20130914191911.png (56.93 KB, 下载次数: 1) 下载附件 保存到相册 2013-9-14 19:19 上传 ①variable step(变步长)