现代控制工程(二)状态方程的解

本文详细探讨了线性定常齐次状态方程的解法,包括利用矩阵指数函数直接求解和通过拉普拉斯变换求解。介绍了矩阵指数函数的性质及其在状态转移矩阵中的应用,通过实例展示了如何解决这类控制系统的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


本章重点讨论的是线性定常连续系统状态方程求解的方法。

线性定常齐次状态方程的解

对于线性定常系统:
{ x ˙ = A x + B u y = C x + D u , x ( t 0 ) = x ( 0 ) \left\{\begin{matrix} \dot x=Ax+Bu\\ y=Cx+Du \end{matrix}\right. ,x(t_0)=x(0) { x˙=Ax+Buy=Cx+Du,x(t0)=x(0)
当外加输入函数 u=0 时,上述状态空间表达式为:
{ x ˙ = A x y = C x , x ( t 0 ) = x ( 0 ) \left\{\begin{matrix} \dot x=Ax\\ y=Cx \end{matrix}\right. ,x(t_0)=x(0) { x˙=Axy=Cx,x(t0)=x(0)
此时的状态方程叫做线性定常齐次状态方程(LTI homogeneous state equation),因系统状态的运动是在没有外加输入控制下由系统的初始状态引起的,因此控制系统的运动也称为自由运动。初始状态不为 0 时的运动为强迫运动。

齐次状态方程可在时域内直接求解,也可以用拉普拉斯变换求解。

1. 用矩阵指数函数直接求解

先假设线性定常齐次状态方程的解为时间 t 的幂级数形式,即
x ( t ) = b 0 + b 1 t + b 2 t 2 + L + b k t k + ⋯ x(t) =b_0+b_1t+b_2t^2+L+b_kt^k +\cdots x(t)=b0+b1t+b2t2+L+bktk+
注意上式中 b i ( i = 1 , 2 , ⋯   ) b_i(i=1,2,\cdots) bi(i=1,2,) 为待定系数矩阵。当 t=0 时, x ( 0 ) = b 0 x(0)=b_0 x(0)=b0
将所设的解带入原方程中可得
b 1 + 2 b 2 t + 3 b 3 t + ⋯ + k b k t k − 1 + ⋯ = A ( b 0 + b 1 t + b 2 t 2 + L + b k t k + ⋯   ) b_1+2b_2t+3b_3t+\cdots+kb_kt^{k-1}+\cdots=A(b_0+b_1t+b_2t^2+L+b_kt^k +\cdots) b1+2b2t+3b3t++kbktk1+=A(b0+b1t+b2t2+L+bktk+)
由于上式对所有的时间 t 都要成立,因此等式两边同幂项的系数应相等,即:
b 0 = x ( 0 ) b_0=x(0) b0=x(0)
b 1 = A b 0 b_1=Ab_0 b1=Ab0
b 2 = 1 2 A b 1 = 1 2 ! A 2 b 0 b_2=\frac 1 2 Ab_1=\frac 1 {2!} A^2b_0 b2=21Ab1=2!1A2b0
b 3 = 1 3 A b 2 = 1 3 ! A 3 b 0 b_3=\frac 1 3 Ab_2=\frac 1 {3!} A^3b_0 b3=31Ab2=3!1A3b0
⋯ \cdots
b k = 1 k A b k − 1 = 1 k ! A k 3 b 0 b_k=\frac 1 k Ab_{k-1}=\frac 1 {k!} A^k3b_0 bk=k1Abk1=k!1Ak3b0
⋯ \cdots
因此齐次方程的解可以写成:
x ( t ) = ( I + A t + 1 2 ! A 2 t 2 + ⋯ + 1 k ! A k t k + ⋯   ) x ( 0 ) x(t)=(I+At+\frac 1 {2!}A^2t^2+\cdots+\frac 1 {k!}A^kt^k+\cdots)x(0) x(t)=(I+At+2!1A2t2++k!1Aktk+)x(0)
对于方阵,由其组成的无穷矩阵级数的和类似于纯量指数,定义为矩阵指数函数(Matrix Exponential Function),记为
e A t = I + A t + 1 2 ! A 2 t 2 + ⋯ + 1 k ! A k t k + ⋯ = ∑ k = 0 ∞ 1 k ! A k t k e^{At}=I+At+\frac 1 {2!}A^2t^2+\cdots+\frac 1 {k!}A^kt^k+\cdots=\sum_{k=0}^{\infty} \frac 1 {k!}A^kt^k eAt=I+At+2!1A2t2++k!1Aktk+=k=0k!1Aktk
所以,线性定常齐次状态方程式的解也可写成
x ( t ) = e A t x ( 0 ) x(t)=e^{At}x(0) x(t)=eAtx(0)
按矩阵指数函数法求解齐次状态方程,在已知初始状态 x(0)的基础上,需要求解矩阵指数函数 e A t e^{At} eAt ,这给人工计算带来不便。

但级数展开式中的每一项适合于用计算机计算。

2. 用拉氏变换求解

对于线性定常齐次状态方程式也可用拉普拉斯变换求解,它的求解方法与纯量一阶微分方程求解相似。对方程式两边取拉氏变换得:

拉普拉斯变换时域的 f ′ ( t ) f'(t) f(t) 对应于 s 域的 s F ( s ) − f ( 0 ) sF(s)-f(0) sF(s)f(0)

s X ( s ) − x ( 0 ) = A X ( s ) sX(s)-x(0)=AX(s) sX(s)x(0)=AX(s)
整理得到
( s I − A ) X ( s ) = x ( 0 ) (sI-A)X(s)=x(0) (sIA)X(s)=x(0)

X ( s ) = ( s I − A ) − 1 x ( 0 ) X(s)=(sI-A)^{-1}x(0) X(s)=(sIA)1x(0)
对两边取拉氏反变换得
x ( t ) = L − 1 [ ( s I − A ) − 1 ] x ( 0 ) x(t)=L^{-1}[(sI-A)^{-1}]x(0) x(t)=L1[(sIA)1]x(0)

所以我们得到了两种微分方程的解,所以有微分方程解的唯一性可知:
e A t = L − 1 [ ( s I − A ) − 1 ] e^{At}=L^{-1}[(sI-A)^{-1}] eAt=L1[(sIA)1]
采用拉氏变换法适合人工求解,且一般均能获得解析形式的结果。

矩阵指数函数

可以看到,要解状态方程,实际上只需要求出矩阵指数函数就可以了。下面讨论矩阵指数函数的性质

矩阵指数函数的性质

n×n 维方阵 A 的矩阵指数函数 e A t e^{At} eAt 是一个无穷级数,可以证明该级数对所有有限时间是绝对收敛的。具有以下性质:

  1. e A t e ˙ A τ = e A ( t + τ ) e^{At}\dot e^{A\tau}=e^{A(t+\tau)} eAte˙Aτ=eA(t+τ)
  2. e A 0 ˙ = I e^{A\dot 0}=I eA0˙=I
  3. e − A t = [ e A t ] − 1 e^{-At}=[e^{At}]^{-1} eAt=[eAt]1
  4. 若 A 和 B 可交换,即 AB=BA ,则 e ( A + B ) t = e A t e ˙ B t e^{(A+B)t}=e^{At}\dot e^{Bt} e(A+B)t=eAte˙Bt
    若 A 和 B 不可交换,即 A B ≠ B A AB\neq BA AB̸=BA ,则 e ( A + B ) t ≠ e A t e ˙ B t e^{(A+B)t}\neq e^{At}\dot e^{Bt} e(A+B)t̸=eAte˙Bt
  5. 若矩阵 A n × n A_{n\times n} An×n 有不相等的特征值 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,,λn, A ‾ \overline A A 为对角矩阵。则
    A ‾ = d i a g [ λ 1 , λ 2 , ⋯   , λ n ] = [ λ 1 0 λ 2 ⋱ 0 λ n ] \overline A=diag[\lambda_1,\lambda_2,\cdots,\lambda_n]=\begin{bmatrix} \lambda_1 & & & 0\\ &\lambda_2 & & \\ & & \ddots & \\ 0 & & & \lambda_n \end{bmatrix}
设计和实现一个工资管理系统的数据库结构需要考虑多个方面,包括员工信息、工资计算、税收、福利等。以下是一个基本的数据库结构设计示例,使用SQL Server作为底层数据库: ### 数据库表设计 1. **员工表(Employees)** - `EmployeeID` (主键) - `FirstName` - `LastName` - `DateOfBirth` - `HireDate` - `Position` - `Department` - `Email` - `PhoneNumber` 2. **工资表(Salaries)** - `SalaryID` (主键) - `EmployeeID` (外键,关联到Employees表) - `BaseSalary` - `Bonus` - `Deductions` - `NetSalary` - `SalaryDate` 3. **税收表(Taxes)** - `TaxID` (主键) - `EmployeeID` (外键,关联到Employees表) - `TaxRate` - `TaxAmount` - `TaxYear` 4. **福利表(Benefits)** - `BenefitID` (主键) - `EmployeeID` (外键,关联到Employees表) - `BenefitType` - `BenefitAmount` - `BenefitStartDate` - `BenefitEndDate` 5. **考勤表(Attendance)** - `AttendanceID` (主键) - `EmployeeID` (外键,关联到Employees表) - `Date` - `ClockInTime` - `ClockOutTime` - `TotalHours` ### SQL脚本示例 ```sql CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, DateOfBirth DATE NOT NULL, HireDate DATE NOT NULL, Position NVARCHAR(50) NOT NULL, Department NVARCHAR(50) NOT NULL, Email NVARCHAR(100) NOT NULL UNIQUE, PhoneNumber NVARCHAR(20) ); CREATE TABLE Salaries ( SalaryID INT PRIMARY KEY IDENTITY(1,1), EmployeeID INT NOT NULL, BaseSalary DECIMAL(10, 2) NOT NULL, Bonus DECIMAL(10, 2) NOT NULL, Deductions DECIMAL(10, 2) NOT NULL, NetSalary DECIMAL(10, 2) NOT NULL, SalaryDate DATE NOT NULL, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); CREATE TABLE Taxes ( TaxID INT PRIMARY KEY IDENTITY(1,1), EmployeeID INT NOT NULL, TaxRate DECIMAL(5, 2) NOT NULL, TaxAmount DECIMAL(10, 2) NOT NULL, TaxYear INT NOT NULL, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); CREATE TABLE Benefits ( BenefitID INT PRIMARY KEY IDENTITY(1,1), EmployeeID INT NOT NULL, BenefitType NVARCHAR(50) NOT NULL, BenefitAmount DECIMAL(10, 2) NOT NULL, BenefitStartDate DATE NOT NULL, BenefitEndDate DATE, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); CREATE TABLE Attendance ( AttendanceID INT PRIMARY KEY IDENTITY(1,1), EmployeeID INT NOT NULL, Date DATE NOT NULL, ClockInTime TIME NOT NULL, ClockOutTime TIME NOT NULL, TotalHours DECIMAL(5, 2) NOT NULL, FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID) ); ``` ### 关键点说明 1. **主键和外键**:每个表都有一个主键,确保数据的唯一性。外键用于关联其他表的数据。 2. **数据类型**:根据数据的实际需求选择合适的数据类型。 3. **索引**:根据查询需求创建索引,提高查询性能。 ### 后续步骤 1. **数据插入**:根据实际需求插入初始数据。 2. **查询优化**:根据实际查询需求优化索引和查询语句。 3. **安全性**:确保数据库的安全性,限制用户权限,防止数据泄露。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值