langwubaisha这个微信这个号号叫什么

查看: 6268|回复: 7
请教matlab里用ode函数的积分步长选取问题
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
才可以下载或查看,没有帐号?
使用ode函数
求解微分方程组
怎么自由选择积分步长阿
[T,X]=ode45('rigid',[0 100],x0,options)
rigid是一个微分方程组
现在我可以运行,但是无法自由选择积分步长
options.AbsTol
options.RelTol
options.InitialStep
options.MaxStep
这四个可以吗?
找了好多材料也没弄出来
谁帮帮我把
本帖被以下淘专辑推荐:
& |主题: 365, 订阅: 0
ode45是变步长rk法,它的步长是根据容许误差自动确定的,不需要设定,只要在options中设置求解精度就可以了。
变步长的runge-kutta法,先从节点xn出发,以h为步长求得近似值,记做y_n+1_(h),由于公式局部阶段误差为o(h^5)则有:y(x_n+1)-y_n+1_(h)≈ch^5
再将步长折半,跨两步到x_n+1求得近似值y_n+1_(h/2),每跨一步截断误差为o((h/2)^5),所以有y(x_n+1)-y_n+1_(h)≈2c(h/2)^5
这样步长折半误差可以减少到1/16,对于最后我们所设定的精度ε,如果折半两次计算结果的偏差Δ&ε,则再折半,直到Δ&ε为止
反之,如果如果折半两次计算结果的偏差Δ&ε,则加倍步长,直到Δ&ε为止,这时再将步长折半一次,得到所要的结果.
这样做的目的无非是得到合理的步长值使得计算速度在给定精度下最为合理,因此我们在ode45中事前并不能知道步长确切等于多少。
举个例子,如果定步长只能够使精度达到1e-12的量级,而同样的问题,用ode45变步长方法则能够得到1e-18的精度量级,所以总体上讲虽然计算量增加,但是是合算的.
MATLAB配备的常规微分方程求解器函数采用了各种方法。ODE23是基于龙格-库塔(Runge-Kutta)(2,3)积分方法,ODE45是基于龙格-库塔(4,5)积分方法。ODE113是变阶Adams-Bashforth-Mouulton PESE求解器。各种求解器和他们采用的方法详细列表请参阅MATLAB在线文档。
MATLAB通过采取迈一步,估计在这步的误差,检查其值是大于还是小于容差,然后相应地调整步长。这些积分方法是不利于采用定步长的。采用定步长算法,在当你的信号频率大于求解器的频率的时候,你就可能丢失掉一些点,因而是危险的。采用变步长算法可以确保在低频的时候采用大的步长,而在高频的时候采用小的步长。MATLAB中的ODE求解器优化了变步长算法,采用变步长的时候能够运行更快,而且显而易见的是得到的结果是更加精确的。现在在MATLAB Central站点,一些定时步长的函数可以直接利用。这些求解器有:
ODE1 一阶Euler 方法
ODE2 二阶Euler方法
ODE3 三阶龙格-库塔法
ODE4 四阶龙格-库塔法
ODE5 五阶龙格-库塔法
这些求解器可以采用如下的与否使用:
y = ODE4( odefun,tspan,y0 );
积分在tspan所规定是时间间隔值到的时候一步一步进行处理。时间值必须是按升序或者降序的方式排列。注意步长(tspan的连续元素间的距离)并不要求必须是均匀的。如果步长是均匀的,你或许可以采用 LINSPACE创建。例如:
tspan = linspace(t0, tf, nsteps); %t0 = 0; tf = 10, nsteps=100;
matlab里的ode45若是explicit rk法,就很难解刚性方程
好像有个叫gear的求解程序,主要用来求解刚性方程的。
可以找找,以前俺也找过一次没找到。
所以得确认matlab里的ode45用的是否为implicit 算法。
ode45是变步长rk法,它的步长是根据容许误差自动确定的,但也可以自己设定的。
原帖由 siyanger 于
08:09 发表
ode45是变步长rk法,它的步长是根据容许误差自动确定的,但也可以自己设定的。
能告知如何设定吗?
可以参考ode45源程序:edit ode45.&&也可以找一本“Matlab数值计算”的书看看,
一般都会有关于自定义步长的RK45程序.
Powered by基于MATLAB的数字仿真实验-博泰典藏网
典藏文档 篇篇精品
基于MATLAB的数字仿真实验
导读:基于MATLAB的数字仿真实验,实验一控制系统的模型转换、微分方程数值解,一.实验目的:,二.实验方法及预习内容:,3.利用Matlab工具箱中的多项式拟合和插值命令――polyfit、inter,三.实验内容:,3.已知元件的实验数据如下,四.实验总体要求:,1.每次实验提前一周布置,应做好实验前的预习和准备,2.实验后应及时提交仿真程序(M文件)、实验结果和图示、实验分析与总结,3.认真撰
基于MATLAB的数字仿真实验
实验一 控制系统的模型转换、微分方程数值解
一.实验目的:
掌握控制系统的微分方程、状态方程、传递函数、零极点增益、部分分式描述及转换;掌握欧拉法、四阶龙格库塔法的程序编制方法;掌握常用数据拟合与插值方法。
二.实验方法及预习内容:
1.利用Matlab工具箱中常用的五种模型转换命令进行模型描述和转换; 2.对微分方程描述的控制系统,利用欧拉法、二阶龙格-库塔法、四阶龙格-库塔法分别编写M文件,进行数值计算和作图;
3.利用Matlab工具箱中的多项式拟合和插值命令――polyfit、interpl对实验数据进行拟合与插值。
三.实验内容:
1.用Matlab语言求下列系统的状态方程、传递函数、零极点增益、和部分分式形式的模型参数,并分别写出其相应的数学模型表达式:
s3+7s2+24s+24
s+10s+35s+50s+24
2.用欧拉法、二阶(四阶)龙格-库塔法分别求下面系统的输出响应y(t)在0≤t≤1上,h=0.1时的数值。
y'=-y,y(0)
要求保留4位小数,并将结果与真解y(t)=e-t比较。
3.已知元件的实验数据如下,拟合这一数据,并尝试给出其特性方程。
四.实验总体要求:
1.每次实验提前一周布置,应做好实验前的预习和准备; 2.实验后应及时提交仿真程序(M文件)、实验结果和图示、实验分析与总结; 3.认真撰写实验报告。
五.本次实验要求:
1.熟悉五种连续系统控制模型的Matlab转换,并得出相应的数学模型表达式; 2.熟悉微分方程数值解法(欧拉法、四阶龙格-库塔法),常用数据拟合方法。
实验二 基于SIMULINK的控制系统时域分析
一.实验目的:
掌握使用SIMULINK、控制工具箱求解系统的输入和输出响应的仿真方法。
二.实验方法及预习内容:
利用SIMULINK工具进行控制系统模型分析、系统设计与仿真的相关原理。
三.实验内容:
1.分别使用解微分方程方法、控制工具箱、Simulink求解具有如下闭环传递函数的系统的阶跃响应。
s4+8s3+36s2+40s+10
2. 某小功率随动系统动态结构如图所示,已知:T1=0.01, T2=0.05,
K0=1,K1=300,K2=1,Kc=0.08。若系统输入分别为θsr(t)=1(t),θsr=t,
θsr=[1(t)-1(1.5)],试用Simulink分析系统的输出θsc(t)分别如何?
四.实验要求:
1.熟悉Simulink法进行控制系统时域分析的基本步骤,并与微分方程法、控制工具箱法进行比较;
2.熟悉Simulink法在输入不同信号(单位阶跃、单位斜坡、两阶跃叠加)下的控制系统输出响应实验方法、图形显示。
实验三 控制系统综合设计――面向系统结构图的综合仿真
一.实验目的:
从控制系统常见的结构形式拓扑描述入手,掌握面向连续控制系统结构图的计算机仿真方法及其程序实现。
二.实验原理及预习内容:
1.原理:任何复杂连接结构的线性控制系统都是由一些简单的线性环节组合而成,按照它们之间相互连接的拓扑关系列出连接矩阵,可以得到能清晰地描述复杂连接系统的仿真模型。
2.预习内容:利用连接矩阵进行复杂控制系统建模的方法和原理。
三.实验步骤:
1.对具有复杂连接闭环结构形式的系统,可用一阶环节作为典型环节,再运用拓扑描述中联接矩阵的表达方法得出此类系统结构的仿真模型;
2.再通过数值积分法求取各环节的动态响应。
注意:所确定的典型环节中,参数Bi 0,以保证系统仿真求解的基本条件。
四.实验内容:
习题4-2.设典型闭环结构控制系统如下图所示,当阶跃输入幅值R=20时,用面向系统结构图的数字仿真法sp4-1.m求取系统的输出响应。
五.实验要求:
1.列出复杂连接闭环系统的仿真程序框图;
2.列出MATLAB程序实现的主要程序,包括输入数据、形成闭环各系统阵、数值积分求解、以及输出结果。
实验四 经典控制理论CAD――控制系统的频域特性分析
一.实验目的:
用计算机辅助分析的方法,掌握频率分析法的三种方法,即Bode图、Nyquist曲线、根轨迹图
二.实验原理及预习内容:
1.Bode图:利用已知系统的传递函数H(s),求出系统的频率响应H(jw);系统的Bode图就是H(jw)的幅值与相位对ω进行绘图,即幅频和相频特性曲线。
2.Nyquist曲线:是根据开环频率特性在复平面上绘制幅相轨迹,根据开环的Nyquist曲线,可判断闭环系统的稳定性。
3.根轨迹图:是分析和设计线性定常控制系统的图解方法。根轨迹是指,当开环系统某一参数从零变到无穷大时,闭环系统特征方程的根在s平面上的轨迹。利用根轨迹法可分析控制系统的稳定性和动态性能。
三.实验内容:
1.某反馈控制系统的开环传递函数为
ss+4s+4s+20试绘制其根轨迹,并分析其闭环系统的稳定性。(习题5-2)
2.已知某系统传递函数为
80(s+1) W(s)=
1s21(s+1)[()+2?0.3?s+1]
试绘制其伯德图。(习题5-3)
3.有二阶系统H(s)=2,绘制系统的Nyquist曲线,并分析其单位
负反馈构成的闭环系统的稳定性。
四.实验要求:
1.编制MATLAB程序,画出实验要求的Bode图、Nyquist图和根轨迹图; 2.通过图形分析控制系统的稳定性和动态特性。
实验五 控制系统综合设计――复杂系统设计与仿真
一.实验目的:
综合运用MATLAB中SIMULINK仿真工具进行复杂控制系统的综合设计与优化设计,综合检查学生的文献查阅、系统建模、程序设计与仿真的能力。
二.实验原理及预习内容:
1.控制系统优化设计:
所谓优化设计就是在所有可能的设计方案中寻找具有最优目标(或结果)的设计方法。控制系统的优化设计包括两方面的内容:一方面是控制系统参数的最优化问题,即在系统构成确定的情况下选择适当的参数,以使系统的某些性能达到最佳;另一方面是系统控制器结构的最优化问题,即在系统控制对象确定的情况下选择适当的控制规律,以使系统的某种性能达到最佳。
在工程上称为“寻优问题”。优化设计原理是“单纯形法”。MATLAB中语句格式为:X fmins('函数名',初值)。
2.双倒立摆系统的建模与模型验证:
借助MATLAB中的SIMULINK工具箱,利用PID控制、或线性二次型最优控制原理,进行双摆系统的机理建模、程序设计及结果分析,实现小车位置的伺服控制及稳定性分析,以考核学生综合运用所学知识独立分析问题和解决问题的能力。
三.实验内容:
1.PID控制系统参数优化设计:
某过程控制系统如下图所示,试设计PID调节器参数,使该系统动态性能达到最佳。(习题5-6)
包含总结汇报、外语学习、出国留学、教学研究、经管营销、资格考试、计划方案、工程科技以及基于MATLAB的数字仿真实验等内容。本文共3页
相关内容搜索问:红袖诗钟之三:点评指正!此系联群之友日成立开展以来,我所完成的作业。时间续接汇报之...答:佳出好对吾偏爱,辛苦各位诗友了,多谢你们给我学!收藏了,好好学,!
问:matlab微分方程,龙格库塔,离散;答:有离散输入x[n]的微分方程,龙格库塔能解吗?如:y'=y-y^2+x[n](这样写不知道对不对)怎么用龙格库塔算法求解这个方程?求码问题补充:这是我编的:-rk4.m-function Y=rk4(x,y,h)Y(1)=y;...
问:用R-K方法求解微分方程的初值问题:(取h=.2)dy/dx=-y+x+1,...答:这是一个非齐次线性方程.先求对应的齐次线性方程的通解(dy/dx)*x=y&dy/y=dx/xy=Cx用常数变易法,把C换成u,令 y=uxy'=u+u'x带入...
问:大神帮看看怎么用matlab编程解这个偏微分方程组,龙格库塔方法...答:话说冰雪聪明的呀,你这个方程有一个就够了吧。Px(x,y)对x积分,入已知条件求解。另一个可以同求,得到的结果应该一样的。解偏微分方程可以参考这个pdepe和...
问:数学分类有熟悉数学方面的朋友讲解下,数学的大致分类。约详细越好。呵呵就当是科普。答:数学分类参考◆数学史*数学史*外国数学史:巴比伦数学,埃及古数学,希腊古数学,印度古数学,玛雅数学,阿拉伯数学,欧洲中 数学,十、十...
问:运用龙格库塔法解微分方程组答:这是x(t)的通解,y(t)的由于太长我就不贴出来了。其中productlog(x)=y,x=y e^y inversefunction是反函数。追问有没有具体程序啊,我的zhangzrw...
问:谁有庆扬数值分析第五版本人急用,谢谢各位了答:数值分析教学大纲(理论教学56学时,上机实3学时)一、课程基本课程中文名称:数值分析课程英文名称:Numerical Analysis课程类别:专业基础课...
问:matlab龙格库塔解微分方程组,只要求求解思路答:参考pdepe函数的用法尽量简化参数
问:谁能解释一下离散微分算法能实现更好答:一、数值解的一般概念常微分方程初值问题的数值解是指通过一定的近似方法得出准确解在一列离散点上的近似值。数值解的特征是步进式,即在点的近似值是由...
问:用MTALAB编程实现四阶龙格库塔解二元二阶微分方程组答:include&stdlib.h&#include&stdio.h&/*n表示几等分,n+1表示他输出的个数*/int RungeKutta(double y,double a,double b,int n,double*x,double*y,int style,...
问:化工考试都考些什么啊顺便问一下,学无机非金属的大专生,这个考化工是本专业不?答:化工考试大纲如果是基础考试是的专业部分,可以购买化工执业资格考试辅导用书>下册.大纲里都有.专业考试可买化工执业...
问:运用C语言,龙格库塔求解微分方程组 void Runge_Kutta4(double(*f1)(double t,double u1,double u2),double(*f2)...答:一下微分方程组,我加分 function df=ode45_fun(t,xyzuvw)%注意小写的v和大写的V%常数(请修正)R_=1;rho_=1;beta=1;G=6.6.
问:什么是微分方程的龙格库塔数值方法答:龙格-库塔(Runge-Kutta)方法是一种在工程上应用广泛的高精度单步算法。由于此算法精度高,采取措施对误差进行抑制,所以其实现原理也较复杂。该算法是构建在数学...
问:用matlab编程实现四阶龙格库塔解二元二阶微分方程组答:求解二阶微分方程,初始条件还需要给出y1'()和y2'()。这里暂时按照处理。function zd533514 a=.1;b=.1;Y=[b-1;;b;];解方程[t,Y]=ode45(#ode,[1],Y...
08-2409-1206-2308-21
02-1602-2302-2404-03
◇本站云标签}

我要回帖

更多关于 微信公众号登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信