实验二利用MATLAB求取线性系统的状态空间模型的解
现代控制理论第一次上机实验报告 实验二 利用MATLAB 求取线性系统的状态空间模型的解
实验目的:
1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;
2、通过编程、上机调试,掌握系统运动的分析方法。
实验原理:
一、系统时域响应的求解方法
给定系统的状态空间模型:
()()()()()()
x t Ax t Bu t y t Cx t Du t =+=+ (2.1) 设系统的初始时刻00t =,初始状态为(0)x ,则系统状态方程的解为
0()0
()(0)()(0)()t At At
A t At A t x t e x e e Bu d e x e Bu d ττττττ--=+=+⎰⎰ (2.2)
输出为
()0()(0)()()t
At A t y t Ce x C e Bu d Du t τττ-=++⎰ (2.3) 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。
输出()y t 由三部分组成。
第一部分是当外部输入等于零时,由初始状态0()x t 引起的,故为系统的零输入响应;第二部分是当初始状态0()x t 为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。
实验步骤
1、构建系统的状态空间模型,采用MA TLAB 的m-文件编程;
2、求取系统的状态和输出响应;
3、在MA TLAB 界面下调试程序,并检查是否运行正确。
实验要求
1、在运行以上程序的基础上,应用MA TLAB 验证一个振动现象可以由以下系统产生:
01()10x t x ⎡⎤=⎢⎥-⎣⎦
证明该系统的解是
cos sin ()(0)sin cos t t x t x t t ⎡⎤=⎢⎥-⎣⎦
假设初始条件0(0)
1x ⎡⎤=⎢⎥⎣⎦
,用Matlab 观察该系统解的形状。
m-程序如下:
A=[0 1;-1 0];
B=[0;0]; D=B;
C=[1 0;0 1];
sys=ss(A,B,C,D);
x0=[0;1];
t=[0:0.01:20];
[y,T,x]=lsim(sys,u,t,x0)
subplot(2,1,1),plot(T,x(:,1))
xlabel('Time(sec)'),ylabel('X_1')
subplot(2,1,2),plot(T,x(:,2))
xlabel('Time(sec)'),ylabel('X_2')
仿真结果如下:
仿真分析:
由仿真图可知,X1和X2周期相同约为6.2,相位差90度,故X1=sint;X2=cost,得证。
实验心得
通过本次实验,更清楚的了解了书上例2-1解题过程。
实验二利用MATLAB求取线性系统的状态空间模型的解
现代控制理论第一次上机实验报告 实验二 利用MATLAB 求取线性系统的状态空间模型的解实验目的:1、根据状态空间模型分析系统由初始状态和外部激励所引起的响应;2、通过编程、上机调试,掌握系统运动的分析方法。
实验原理:一、系统时域响应的求解方法给定系统的状态空间模型:()()()()()()x t Ax t Bu t y t Cx t Du t =+=+ (2.1) 设系统的初始时刻00t =,初始状态为(0)x ,则系统状态方程的解为0()0()(0)()(0)()t At AtA t At A t x t e x e e Bu d e x e Bu d ττττττ--=+=+⎰⎰ (2.2)输出为()0()(0)()()tAt A t y t Ce x C e Bu d Du t τττ-=++⎰ (2.3) 包括两部分,第一部分是由系统自由运动引起的,是初始状态对系统运动的影响;第二部分是由控制输入引起的,反映了输入对系统状态的影响。
输出()y t 由三部分组成。
第一部分是当外部输入等于零时,由初始状态0()x t 引起的,故为系统的零输入响应;第二部分是当初始状态0()x t 为零时,由外部输入引起的,故为系统的外部输入响应;第三部分是系统输入的直接传输部分。
实验步骤1、构建系统的状态空间模型,采用MA TLAB 的m-文件编程;2、求取系统的状态和输出响应;3、在MA TLAB 界面下调试程序,并检查是否运行正确。
实验要求1、在运行以上程序的基础上,应用MA TLAB 验证一个振动现象可以由以下系统产生:01()10x t x ⎡⎤=⎢⎥-⎣⎦证明该系统的解是cos sin ()(0)sin cos t t x t x t t ⎡⎤=⎢⎥-⎣⎦假设初始条件0(0)1x ⎡⎤=⎢⎥⎣⎦,用Matlab 观察该系统解的形状。
m-程序如下:A=[0 1;-1 0];B=[0;0]; D=B;C=[1 0;0 1];sys=ss(A,B,C,D);x0=[0;1];t=[0:0.01:20];[y,T,x]=lsim(sys,u,t,x0)subplot(2,1,1),plot(T,x(:,1))xlabel('Time(sec)'),ylabel('X_1')subplot(2,1,2),plot(T,x(:,2))xlabel('Time(sec)'),ylabel('X_2')仿真结果如下:仿真分析:由仿真图可知,X1和X2周期相同约为6.2,相位差90度,故X1=sint;X2=cost,得证。
K3.08-利用MATLAB求解系统状态方程
k=0:1:40;
%求全响应
v0=[-10;-4];
%初始状态
X=[1*ones(size(k))]';
%输入阶跃函数
[y,v]=dlsim(A,B,C,D,X,v0);
% 调用函数求解响应
stem(k,y);xlabel('k');ylabel('y');title('全响应');
y
全响应 6
4
2
2
1
2
0
x1(t)
x2
(t
)
10
0
f
(t)
y(t) 1
0
x1 x2
(t) (t)
系统输入为:f (t) t (t)
初始状态:
x1(0)
x2
(0)
5 0
求系统的零输入响应和零状态响应。
2
利用MATLAB求解系统状态方程
解:
%求零输入响应
A=[-2 -2;1 0]; B=[10;0];C=[1 0];D=[0];
1 0
f
(k
)
y(k) 1
1
x1 x2
(k ) (k )
系统输入为:f(k)=ε(k)
初始状态为:
x 1 (0) x2 (0)
10 4
求系统的全响应。
4
解:
利用MATLAB求解系统状态方程
A=[0 1;-1 1.9021];B=[1;0];C=[-1 1];D=[0]; %各系数矩阵
0
-2
-4
-6
-8
0
5 10 15 20 25 30 35 40
k
5
matlab状态空间表达式的解
标题:MATLAB状态空间表达式的解析一、概述MATLAB是一种非常常用的数学软件,用于分析、设计和模拟动态系统。
在控制系统理论中,状态空间表达式是描述线性系统动态行为的重要方法。
本文旨在介绍如何使用MATLAB对状态空间表达式进行解析和分析。
二、状态空间表达式简介状态空间表达式是一种描述线性时不变系统的数学模型。
通常由状态方程和输出方程组成。
状态方程描述了系统的演化规律,而输出方程则描述了系统状态和输出之间的关系。
三、MATLAB中的状态空间表示在MATLAB中,状态空间表示可以使用ss函数进行表达。
该函数的输入参数包括系统的状态方程系数矩阵A、输入矩阵B、输出矩阵C 和前馈矩阵D。
四、求解状态空间表达式1. 稳态响应分析在MATLAB中,可以使用sys = ss(A,B,C,D)定义一个状态空间模型,然后使用step(sys)绘制系统的阶跃响应曲线。
通过阶跃响应曲线可以分析系统的稳态性能。
2. 传递函数表示使用tf(sys)可以将状态空间表示转换为传递函数表示,这样可以更方便地分析系统的特性。
3. 稳定性分析使用eig(A)可以计算状态方程系数矩阵A的特征值,从而判断系统的稳定性。
如果系统的所有特征值都是负实数,那么系统是稳定的。
4. 频域特性分析使用bode(sys)可以绘制系统的频率响应曲线,这样可以分析系统在不同频率下的特性。
五、应用实例以电机控制系统为例,假设系统的状态空间表达式为:A = [-2 -1; 3 -4]B = [1; 0]C = [0 1]D = [0]可以使用以下代码在MATLAB中求解该系统:sys = ss(A,B,C,D)step(sys)tf_sys = tf(sys)eig(A)bode(sys)六、结语本文介绍了MATLAB中状态空间表达式的解析方法,并以电机控制系统为例进行了说明。
希望本文能够帮助读者更好地理解和应用状态空间表达式在MATLAB中的求解方法。
利用MATLAB对状态空间模型进行分析
利用MATLAB对状态空间模型进行分析(一)状态空间模型的引入
状态空间模型是一种概率统计模型,它利用了状态变量和观测变量来描述系统的特性,可以用来模拟复杂的或不可观测的动态过程。
状态空间模型的核心思想是,将动态系统的状态变量和观测变量分别建模,并用一组数学方程表示整个系统。
这样,状态空间模型可以更好地揭示动态系统的特性,从而更好地进行控制和优化。
(二)状态空间模型的形式
状态空间模型由两部分组成:状态转移方程和观测方程。
状态转移方程用于描述系统的状态变量的动态变化,而观测方程则用于表示系统的观测变量的变化趋势。
状态转移方程可以表示为:
x_t = A_tx_{t-1} + B_tu_t + ν_t
其中,x_t表示状态变量的确定值,A_t表示状态转移矩阵,B_t表示输入矩阵,u_t表示输入信号,ν_t表示噪声。
观测方程可以表示为:
y_t = C_tx_t + D_tu_t + ε_t
其中,y_t表示观测变量的确定值,C_t表示观测矩阵,D_t表示输出矩阵,u_t表示输入信号,ε_t表示噪声。
(三)MATLAB绘制状态空间模型
1.为了完成状态空间模型的绘制,首先需要利用MATLAB来定义状态转移方程与观测方程的矩阵参数。
利用 MATLAB 求解系统的状态方程
实验报告实验名称利用 MATLAB 求解系统的状态方程系统的能控性、能观测性分析系专业班学号授课老师预定时间2014-5-28 实验时间实验台号14一、目的要求掌握状态转移矩阵的概念。
学会用 MATLAB求解状态转移矩阵。
掌握求解系统状态方程的方法,学会绘制状态响应曲线;掌握线性系统状态方程解的结构。
学会用 MATLAB 求解线性定常系统的状态响应和输出响应,并绘制相应曲线。
掌握能控性和能观测性的概念。
学会用 MATLAB 判断能控性和能观测性。
掌握系统的结构分解。
学会用 MATLAB 进行结构分解。
掌握最小实现的概念。
学会用 MATLAB 求最小实现。
二、原理简述线性定常连续系统的状态转移矩阵为。
函数 step( ) 可直接求取线性连续系统的单位阶跃响应。
函数 impulse( ) 可直接求取线性系统的单位脉冲响应。
函数 lsim( ) 可直接求取线性系统在任意输入信号作用下的响应。
函数 initial( ) 可求解系统的零输入响应。
n 阶线性定常连续或离散系统状态完全能控的充分必要条件是:能控性矩阵的秩为 n。
线性定常连续或离散系统输出能控的充分必要条件是:矩阵的秩为m。
n 阶线性定常连续或离散系统状态完全能观测的充分必要条件是:能观测性矩阵的秩为 n。
三、仪器设备PC 计算机,MATLAB 软件四、容步骤题2.1A=[0 1;-2 -3];B=[3;0];C=[1 1];D=0;G=ss(A,B,C,D);t=0.5;p=expm(A*t)u1=0;x10=[1;-1];[y1o,t,x1o]=initial(G,x10,t)t2=0:0.5:10;x20=[0;0];u2=ones(size(t2));[y2,t2,x2]=lsim(G,u2,t2);plot(t2,x2,':',t2,y2,'-')t3=0:0.5:10;u3=1+exp(-t3).*cos(3*t3);x30=[0;0];题2.1题2.2G = 0.9709 0.0448 -1.1212 0.7915H = 0.00120.0448。
Matlab问题状态方程的解-文档资料
2021/4/21
6
eAt的数值计算(2/4)
Matlab问题3-1 试在Matlab中计算例3-1中矩阵A在t=0.3时的 矩阵指数eAt的值。
0 1
A
2
3
➢ Matlab程序m3-1如下。
A=[0 1; -2 -3]; t=0.3; eAt=expm(A*t)
➢ Matlab程序m3-1执行结果如下。
A
0
213Fra bibliotek其中t定义为符号变量,输入矩阵A为一般Matlab的数值矩阵,
表达式A*t即为Matlab的符号矩阵。
例3-1的计算结果
➢ Matlab程序m3-2执行结果如下。
eAt
2et 2et
e2t 2e2t
et e2t et 2e2t
eAt = [ 2*exp(-t)-exp(-2*t), -exp(-2*t)+exp(-t)]
2021/4/21
9
eAt的符号计算(1/8)
2. eAt的符号计算
在Matlab中,对给定矩阵A,可通过符号计算工具箱的函数 expm()计算变量t的矩阵指数函数eAt的表达式。 ➢ 在使用Matlab的符号计算工具箱计算时,需要定义符号变 量,输入符号表达式与符号矩阵。 ➢ 下面介绍使用符号计算工具箱需要的基本操作。
eAt = 0.9328 0.1920 -0.3840 0.3568
2021/4/21
7
eAt的数值计算(3/4)
在Matlab中还有3个计算矩阵指数eAt的函数,分别是 expmdemo1(),expmdemo2()和expmdemo3()。 ➢ expmdemo1()就是expm(),采用帕德逼近法计算矩阵指数; ✓ 而expmdemo2()采用3.2.1节中介绍的利用泰勒级数展 开法来计算,精度较低; ✓ expmdemo3()采用3.2.2节中介绍的利用特征值和特征 向量来计算对角线矩阵,进而通过对角线矩阵的矩阵 指数计算原矩阵的矩阵指数。
基于MATLAB控制系统仿真实验报告
tf 4
y0
0 1
6、求出 G1(s)
2 (s2 2s 1) 与 G2 (s)
1 (2s3
3s2
1)
的单位阶跃响应,并分别
求出状态空间模型。
解:(1) G1(s) 2 (s2 2s 1) 的状态空间模型求解如下:
function shiyan2 b1=[2];
D(z)
0.62(1 0.136z 1)(1 0.183z (1 0.045z 1)(1 0.53z 1)
1 )
分别用仿真算法得到系统在单位阶跃输入作用下的响应,系统在单位速度输
入是的输出响应。
解:(1)首先将 W1(s)转换为 W1(z),采样周期 T=0.2s,程序清单如下: function shiyan42 num=[10];den=[0.005 0.15 1 0]; ts=0.2;[nc,dc]=c2dm(num,den,ts)
INTRO(注意:intro 为一个用 MATLAB 语言编写的幻灯片程序,主要演示
常用的 MATLAB 语句运行结果。)
然后,根据现实出来的幻灯片右面按钮进行操作,可按 START——NEXT—
—NEXT 按钮一步步运行,观察。
3、自编程序并完成上机编辑,调试,运行,存盘:
(1)用 MATLAB 命令完成矩阵的各种运算,例如:
5、利用 ode23 或 ode45 求解线性时不变系统微分方程 y(t) Ay(t) ,并绘制出 y(t)
曲线,式中
A
0.5
1
1 0.5
t t0 t 如下: function xdot=fun21(t,x) A=[-0.5 1;-1 -0.5]; xdot=A*x; function fzsy22 t0=0;tf=4;tol=1e-6; x0=[0;1];trace=1; [t,x]=ode23('fun21',t0,tf,x0,tol,trace); plot(t,x) 得到的实验结果如下图所示:
matlab解状态方程
Matlab解状态方程详解
一、引言
状态方程是描述系统动态行为的重要工具,广泛应用于控制工程、电子工程、机械工程等领域。
在Matlab中,可以使用各种方法来解状态方程,包括直接法、迭代法和优化法等。
本文将详细介绍Matlab解状态方程的几种常用方法,并给出相应的示例代码。
二、直接法
直接法是解状态方程最简单的方法之一。
对于简单的一阶或二阶线性时不变系统,可以通过简单的代数运算得到状态变量的解。
对于更复杂的多阶非线性系统,可能需要使用数值方法进行求解。
在Matlab中,可以使用以下代码实现直接法:
三、迭代法
迭代法是一种通过不断迭代来逼近状态变量解的方法。
常用的迭代法包括欧拉法、龙格-库塔法和雅可比迭代法等。
在Matlab中,可以使用以下代码实现欧拉法:
四、优化法
优化法是一种通过最小化某个代价函数来求解状态方程的方法。
常用的优化法包括梯度下降法、牛顿法和拟牛顿法等。
在Matlab中,可以使用以下代码实现梯度下降法:。
用MATLAB分析状态状态空间模型
a =
x1 x2 x3
x1 -6 -1.375 -0.09375
x2 8 0 0
x3 0 8 0
b =
u1
x1 0.25
x2 0
x3 0
c =
x1 x2 x3
y1 0 0 0.375
d =
u1
y1 0
(3)将给定传递函数转换为对角标准型或约当标准型。再将得到的对角标准型或约当
标准型用函数tf( )转换为传递函数,并与原传递函数进行比较。
(3)A=[0 1 0 0;0 -1 1 0;0 0 -1 1;0 0 0 -3];B=[0 0 0 2]';C=[2 0 0 0];D=0;
sys=ss(A,B,C,D);[V,J]=jordan(A);sys1=ss2ss(sys,inv(V))
x2 0 -1 10
x3 0 0 -1 1
x4 0 0 0 -3
b =
u1
x1 0
x2 0
x3 0
x4 2
c =
x1 x2 x3 x4
y1 2 0 0 0
d =
u1
y1 0
Gtf=tf(Gss)
Transfer function:
4
-------------------------
s^4 + 5 s^3 + 7 s^2 + 3 s
(2)用ss2ss函数进行相似变换将其转换为对角标准型。
>> A=[-6 -1.375 -0.09375;8 0 0;0 8 0];B=[0.25 0 0]';C=[0 0 0.375];D=0;
matlab第4章
行向量元素为按降幂排列的多项式系数。
1.多项式乘法函数 conv ( )
格式:C= conv (A, B) %求多项式A和B的乘积
A、B是两个多项式的系数向量,按降幂排列。 conv( ) 把两个多项式相乘合并成一个多项式。
2
p1 2s 3;
2
p2 s 2 4
3 2
A (2s 3)(s 4) 2s 3s 8s 12
x:操作点处的状态向量
u:操作点处的输入向量
x,u缺省值为0。
20
( s 1)(s 2 2s 6) 2 【例4.4】 求传递函数 G(s) 2 s (s 3)(s 3 2s 2 3s 4)
的分子和分母多项式,并求传递函数的特征 根。
21
% num 分子多项式 % conv( ) 采用嵌套形式
G (s)
5s 3 s 3 6 s 2 11s 6
13
3.部分分式展开函数residue ( ) 功能:对两个多项式的比进行部分展开。 格式:[r, p, k]=residue(b, a) 求B(s)/A(s)的部分分式展开式 向量b和a是按s降幂排列的多项式系数。
14
B( s) bn s n bn1s n1 ...b0 F ( s) A( s) an s n an1s n1 ...a0
38
2.并联 G(s)=G1(s)+G2(s) 模型并联函数 parallel 格式:[num, den]=parallel(num1, den1, num2, den2) num1, den1:G1(s) 的分子、分母多项式 num2, den2:G2(s)的分子、分母多项式 num, den:G(s) 的分子、分母多项式
