MATLAB 积分算法
来源:互联网 发布:温州软件外派 编辑:程序博客网 时间:2024/04/27 18:18
在SIMULINK 的仿真过程中选择合适的算法是很重要的,仿真算法是求常微分方程、传递函数、状态方程解的数值计算方法,这些方法主要有欧拉法( Euler) 、阿达姆斯法(Adams) 、龙格·库塔法(Rung-Kutta) ,这些算法都主要建立在泰勒级数的基础上。欧拉法是最早出现的一种数值计算方法,它是数值计算的基础,它用矩形面积来近似积分计算,欧拉法比较简单,但精度不高,现在已经较少使用。阿达姆斯法是欧拉法的改进,它用梯形面积近似积分计算,所以也称梯形法,梯形法计算每步都需要经过多次迭代,计算盘较大,采用预报.校正后只要迭代一次,计算盘减少,但是计算时要用其他算法计算开始的几步。龙格,库塔法是间接使用泰勒级数展开式的方法,它在积分区间内多预报几个点的斜率,然后进行加权平均,用作计算下一点的依据,从而构造了精度更高的数值积分计算方法。如果取两个点的斜率就是二阶龙格·库塔法,取四个点的斜率就是四阶龙格.库塔法。
SIMULINK 汇集了各种求解常微分方程数值解的方法,这些方法分为两大类,可变步长类算法和固定步长类算法。
7.1可变步长类算法
可变步长(Variable- step) 类算法是在解算模型(方程)时可以自动调整步长,并通过减小步长来提高计算的精度。在SIMULINK 的算法中可变步长类算法有如下几种:
1. Ode45 (Dormand-Prince)
基于显式Rung-Kutla (4 , 5) 和Dormand- Prince 组合的算法,它是一种一步解法,即只要知道前一时间点的解y (tn-1 ) ,就可以立即计算当前时间点的方程解y (tn) 。对大多数仿真模型来说,首先使用od e45 来解算模型是最佳的选择,所以在SIMULINK 的算法选择中将ode4 5 设为默认的算法。
2. ode23 (Bogacki-Shampine)
基于显式Rung-Kutta (2 , 3) 、Bogacki 和Shampine 相结合的算法,它也是一种一步算法。在容许误差和计算略带刚性的问题方面,该算法比ode45 要好。
3. Ode113 ( Adams)
这是可变阶数的Adams-Bash forth-Moulton PECE 算法,在误差要求很严时,odel13 算法较ode45 更适合。odel13 是一种多步算法,也就是需要知道前几个时间点的值,才能计算出当前时间点的值。
4. Ode15s (Stiff/NDF)
一种可变阶数的Numerical Differentiation Formulas (NDFs) 算法,它相对Backward Differentiation Formulas 算法(简称BDFs 算法,也称Gear 算法)较好。它是一种多步算法,当遇到带刚性( Stiff) 问题时或者使用ode45 算法不行时,可以试试这种算法。
5. Ode23s (Stiff/Mod. Rosenbrock)
这是一种改进的二阶Rosenbrock 算法。在容许误差较大时, ode23s 比ode15s有效,所以在解算一类带刚性的问题时用ode15s 处理不行的话,可以用ode23s算法。
6. Ode23t (Mod. Stiff/Trapezoidal)
一种采用自由内插方法的梯形算法。如果模型有一定刚性,又要求解没有数值衰减时,可以使用这种算法。
7. Ode23tb (stiff/TR-BDF2)
采用TR-BD F2算法,即在龙格.库塔法的第一阶段用梯形法,第二阶段用二阶的Backward Differentiation Formulas 算法。从结构上讲,两个阶段的估计都使用同一矩阵。在容差比较大时, ode23tb 和ode23t 都比ode15s 要好。
8. Discrete (No Continuous States)
这是处理离散系统(非连续系统)的算法。
7.2固定步长类算法
固定步长类算法,顾名思义,是在解算模型(方程)的过程中步长是固定不变的,在SIMULINK 的算法中固定步长类算法有如下几种:
1. Ode5 (Dormand-Prince)
采用Dormand -Prince算法,也就是固定步长的ode45 算法。
2. Ode4 (Rung-Kutta)
四阶的龙格·库塔法。
3. Ode3 (Bogacki-Shampine)
采用Bogacki-Shampine 算法。
4. Ode2 (Heun)
一种改进的欧拉算法。
5. ode1 (Euler) 欧拉算法
6. Discrete 'No Continuous States)
不含积分的固定步长解法,它适用于没有连续状态仅有离散状态模型的计算。
- MATLAB 积分算法
- Matlab积分
- 【Matlab】积分
- MATLAB积分方法
- Matlab数值积分
- matlab计算积分
- MATLAB求解积分
- matlab四重积分
- 【Matlab】 多重积分
- MATLAB积分方法
- Matlab--积分微分
- matlab求取积分
- matlab求积分
- matlab 积分函数int
- Matlab积分相关资料
- MATLAB中的积分运算
- MATLAB 积分求解
- matlab极值与积分
- 数据结构之平衡二叉树AVL
- 黑马程序员-HTLM知识点总结
- ZOJ 3573 Under Attack (线段树版)
- [日记]2013年11月11日
- Research: Robust Analysis of Visual Data
- MATLAB 积分算法
- 关于论文《Cementing High Availability in OpenFlow with RuleBricks》的翻译与理解
- 20非常有用的Java程序片段
- C++中的4种类型转换方式
- Spring 3.0 注解注入详解
- 黄淮学院CSDN高校俱乐部第一次c语言培训
- 关于RDF的技术支持和应用部分示例
- 【菜鸟入门】stm32的第一个程序--LED
- codeforces Round 211 Div 2部分题解(持续更新中.......)