- 1、本文档共96页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 连续系统及数字仿真
数值积分:是数值分析的基本问题,是微分方程初值问题的一种近似解法,其基本思想是将一阶常微分方程(或方程组)转化为差分方程(即微分方程的离散形式,便于编程实现),从而求其数值解; 系统仿真:在给定初始条件可用数值积分法求解定常连续系统在一定输入作用下的变化过程。 为[t0, t]内 f 下方的阴影面积 数值积分法基本概念 各阶龙格—库塔法的精度 理论上可以构造任意阶数的龙格—库塔法 阶数越高,精度越高,计算量越大 精度的阶数与计算函数值 f 的次数之间并非等量增加的关系 对于大量的实际问题,四阶方法已可满足精度求 变步长方法 误差式通常为 各阶龙格—库塔法的稳定域 将检验方程代入泰勒级数展开式可得稳定条件 稳定条件与计算步长和系统特征根都有关系,特征根越大,计算步长越小 计算步长的选择 步长过大会增加截断误差,甚至出现不稳定现象;步长过小会增加计算步数,从而增大舍入误差; 步长变化对误差的影响与系统动态响应特性有关,响应越快对步长变化越敏感。 已知常微分方程组 前面介绍的数值积分法进行求解时,仿真步长应该由系统的最小时间常数(相当于是最大特征值实部的倒数)决定,而仿真时间由系统的最大时间常数(相当于最小特征值实部的倒数)决定; 由定义可知,病态系统的时间常数( 1/ )差别很大; 那么对于病态系统,如果采用前面介绍的数值积分法进行求解,计算步长只能取得很小,系统的过渡过程又很长,将导致仿真计算量大、舍入误差累积大、数值解失真等; 目前已提出的刚性方程数值积分法有吉尔(Gear)法、特雷尔(Trernor)法、半隐式龙格—库塔法等,其中吉尔法被公认为是十分有效的方法。 吉尔法的Stiff稳定 一个方法如果在区域R1(Re(h?)?D)中是绝对稳定的,而在区域R2(D Re(h?) ?,|Im(h?)|?)中是精确的,那么称这种方法是stiff稳定的。 定义Z向量 吉尔单步多值法L向量值 目前已提出的刚性方程数值积分法有吉尔(Gear)法、特雷尔(Trernor)法、半隐式龙格—库塔法等,其中吉尔法被公认为是十分有效的方法。 M文件的调试 M文件的调试 M文件的调试 结束 函数调用可以嵌套,一个函数可以调用别的函数,甚至调用它自己 (递归调用)。 函数文件 现代仿真技术与应用 matlab与SIMULINK基础 例:有5个人坐在一起,问第五个人多大,说比第4个人大2岁,第四个人说比第三个人大2岁,第三个人说比第二个人大2岁,第二个人说比第一个人大2岁,第一个人说是12岁。问第5个人多大? 编写 M文件时,错误(Bug)在所难免。错误有两种:语法(Syntax)错误和运行(Run-time)错误。 语法错误是指变量名、函数名的误写,标点符号的缺、漏等。对于这类错误,通常能在运行时发现,终止执行,并给出相应的错误原因以及所在行号。运行错误是算法本身引起的,发生在运行过程中。 相对语法错误而言,运行错误较难处理 。尤其是M函数文件,它一旦运行停止,其中间变量被删除一空,错误很难查找。 有两种调试方法:直接调试法和工具调试法。 现代仿真技术与应用 matlab与SIMULINK基础 直接调试法:可以用下面方法发现某些运行错误。 在M文件中,将某些语句后面的分号去掉, 迫使M文件输出一些中间计算结果,以便发现可能的错误。 在适当的位置,添加显示某些关键变量值的语句(包括使用 disp 在内)。 利用 echo 指令,使运行时在屏幕上逐行显示文件内容。echo on 能显示M脚本文件;echo FunNsme on 能显示名为FunNsme 的M函数文件在原M脚本或函数文件的适当位置; 增添指令 keyboard 。 keyboard 语句可以设置程序的断点 。 通过将原M函数文件的函数申明行注释掉,可使一个中间变量难于观察的M函数文件变为一个所有变量都保留在基本工作空间中的M脚本文件。 现代仿真技术与应用 matlab与SIMULINK基础 GUI 界面调试法: MATLAB 5.x 版提供了一个基于GUI界面的调试。使用它,可以对函数进行调试。 Debug菜单的使用: Continue:恢复程序运行至结束或另一个断点 。 Single Step:单步执行函数。 Step In:深入下层局部工作区 。 Quit Debugging:退出调试状态。 Set/Clear Breakpoint:设置/清除光标处的断点 。 Clear All Breakpoints:清除程序中的所有断点 。 Stop if Error:运行至出错或结束。 Stop if Warning:运行至警告消息或结束。 Stop
文档评论(0)