【控制系统数字仿真与CAD】实验一:状态方程、传函为模型的系统的仿真
一、实验目的
1. 掌握各数学模型之间的转换与数学模型的参数获取,掌握相关MATLAB命令
2. 掌握欧拉法和RK法的递推公式
3. 掌握欧拉法和RK法的MATLAB算法实现
二、实验内容
1. 分别用欧拉法和四阶龙格-库塔法求解如下系统:
(1) R=4KΩ, C=1µF, L=1H, 仿真时间: 0.03s
(2) R=280Ω, C=8µF, L=2H,仿真时间: 0.1s

两组参数下电路的单位阶跃响应。 (初始条件均为零)。
2. 熟悉并理解掌握MATLAB模型转换以及参数提取指令(针对上述系统写出它们的运行结果)
G=tf(num,den) G1=tf(G)
G=zpk(z,p,k) G1=zpk(G)
G=ss(A,B,C,D) G3=ss(G)
[num,den]=tfdata(G)
[Z,P,K]=zpkdata(G)
[A,B,C,D]=ssdata(G)
三、实验要求
1. 预习和完成实验内容
2. 完成实验报告,内容至少包括:理论分析,实验程序,程序运行结果以及结果分析。
四、实验内容
1.建模
列方程:

状态空间表达式(时域):

写成矩阵形式:

拉氏变换后得传递函数(复域):

2. 实验代码:
%********** 参数提取 *************
R = 4000;
C = 0.000001;
L = 1;
num = [1];
den = [L*C, R*C, 1];
G = tf(num, den)
G1 = tf(G)
G2 = zpk(G)
G3 = ss(G)
[Num, Den] = tfdata(G)
[Z, P, K] = zpkdata(G)
[A, B, C, D] = ssdata(G)
问题(1):
clear;
clc;
%******************************************%%
% Question 1
%******************************************%%
R1 = 4000;
C1 = 0.000001;
L1 = 1;
A1 = [0, 1/C1;-1/L1,-R1/L1];
B1 = [0;1/L1];
h1 = 0.00003; % step size
y1 = [0;0];
y2 = [0;0];
% ******** Euler method **********%
for i1 = 0:1:1000
t1 = i1*h1; % simulation time: 0.03s
x1(i1+1) = t1;
k1 = A1 * y1 + B1;
k2 = A1 * (y1+h1*k1) + B1;
y1 = y1 + (k1 +k2)*h1/2;
result_for_Euler_1(i1+1) = y1(1,1);
end
% ******** 4 order Runge-Kutta method **********%
for i2 = 0:1:1000
t2 = i2*h1; % simulation time: 0.03s
x2(i2+1) = t2;
k1 = A1 * y2 + B1;
k2 = A1 * (y2+h1*k1/2) + B1;
k3 = A1 * (y2+h1*k2/2) + B1;
k4 = A1 * (y2+h1*k3) + B1;
y2 = y2 + (k1 + 2*k2 + 2*k3 + k4)*h1/6;
result_for_RK_1(i2+1) = y2(1,1);
end
subplot(2,2,1);plot(x1,result_for_Euler_1,'b');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Euler method');legend('Euler');
subplot(2,2,2);plot(x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Runge-Kutta method');legend('Runge-Kutta');
subplot(2,1,2);plot(x1,result_for_Euler_1,'b', x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');
title('Comparision of results between Euler and RK');legend('Euler','Runge-Kutta');
问题(2):
clear;
clc;
%******************************************%%
% Question 2
%******************************************%%
R1 = 280;
C1 = 0.000008;
L1 = 2;
A1 = [0, 1/C1;-1/L1,-R1/L1];
B1 = [0;1/L1];
h1 = 0.0002; % step size
y1 = [0;0];
y2 = [0;0];
% ******** Euler method **********%
for i1 = 0:1:500
t1 = i1*h1; % simulation time: 0.1s
x1(i1+1) = t1;
k1 = A1 * y1 + B1;
k2 = A1 * (y1+h1*k1) + B1;
y1 = y1 + (k1 +k2)*h1/2;
result_for_Euler_1(i1+1) = y1(1,1);
end % ******** 4 order Runge-Kutta method **********%
for i2 = 0:1:500
t2 = i2*h1; % simulation time: 0.1s
x2(i2+1) = t2;
k1 = A1 * y2 + B1;
k2 = A1 * (y2+h1*k1/2) + B1;
k3 = A1 * (y2+h1*k2/2) + B1;
k4 = A1 * (y2+h1*k3) + B1;
y2 = y2 + (k1 + 2*k2 + 2*k3 + k4)*h1/2;
result_for_RK_1(i2+1) = y2(1,1);
end
subplot(2,2,1);plot(x1,result_for_Euler_1,'b');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Euler method');legend('Euler');
subplot(2,2,2);plot(x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');title('Result for Runge-Kutta method');legend('Runge-Kutta');
subplot(2,1,2);plot(x1,result_for_Euler_1,'b', x2,result_for_RK_1,'r');
xlabel(' time /s ');ylabel(' Uc /V ');
title('Comparision of results between Euler and RK');legend('Euler','Runge-Kutta');
3. 运行结果
问题(1):

问题(2):

【控制系统数字仿真与CAD】实验一:状态方程、传函为模型的系统的仿真的更多相关文章
- 《数字信号处理》课程实验2 – FIR数字滤波器设计
一.FIR数字滤波器设计原理 本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...
- 《数字信号处理》课程实验1 – FFT的实现
一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...
- SimMechanics/Second Generation倒立摆模型建立及初步仿真学习
笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...
- mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)
前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...
- 【控制系统数字仿真与CAD】实验二:结构图法数字仿真
一. 实验目的 1. 掌握结构图法仿真复杂控制系统的方法: 2. 掌握复杂系统联接矩阵W和输入联接矩阵W0的求解过程: 3. 掌握复杂系统的环节连接,矩阵A. B. C.D的求解过程: 4. 掌握MA ...
- 【控制系统数字仿真与CAD】实验三:离散相似法数字仿真
一.实验目的 1. 了解离散相似法的基本原理 2. 掌握离散相似法仿真的基本过程 3. 应用离散相似法仿真非线性系统 4. MATLAB实现离散相似法的非线性系统仿真 5. 掌握SIMULINK仿真方 ...
- Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验
移位寄存器实现Verilog代码: `timescale 1ns / 1ps module add( input clk, input reset, input [1:0] s, input dl, ...
- 【Java基础-实验7】Banking_7 -添加银行透支扣款系统的 thorw异常机制
实验基本要求: 实验题目 7:(在6基础上修改) 将建立一个 OverdraftException 异常,它由 Account 类的withdraw()方法 抛出. 实验目的: 自定义异常 实验说明: ...
- 数字孪生,数据驱动下的北京 CBD 智能楼宇三维可视化系统
前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...
随机推荐
- 虚拟机安装Centos7系统后优化操作
重点说明 以下操作针对于VMware软件上新创建的Centos7的虚拟机的优化,当需要多台虚拟机的实验环境时,可通过以下需求先操作配置出一台优化机(也可称为模板机),并创建快照记录,以后的多台虚拟机环 ...
- iOS 设备数据管理工具 iMazing v2.10.3 绿色便携版
iMazing 是一款可以帮助用户管理 iOS 设备的软件,功能远远超出 iTunes.iMazing 连接你的 iOS 设备(iPhone. iPad 或 iPod)相连,使用起来也非常的方便.你可 ...
- Paid Roads POJ - 3411
A network of m roads connects N cities (numbered from 1 to N). There may be more than one road conne ...
- C#用抽象类定义几何图形
using System;/*using System.Data;*/namespace tx{ abstract class tx { public double chan ...
- JavaScript ES6函数式编程(二):柯里化、偏应用和组合、管道
上一篇介绍了闭包和高阶函数,这是函数式编程的基础核心.这一篇来看看高阶函数的实战场景. 首先强调两点: 注意闭包的生成位置,清楚作用域链,知道闭包生成后缓存了哪些变量 高阶函数思想:以变量作用域作为根 ...
- “无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析
本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 系列文章目录: Java 世界的盘古和女娲 -- Zygote Zygote 家的大儿子 -- System ...
- win32API多线程编程
win32线程API 在Windows平台下可以通过Windows的线程库来实现多线程编程. 对于多线程程序可以使用Visual Studio调试工具进行调试,也可以使用多核芯片厂家的线程分析调试工具 ...
- 从零开始把项目发布到Nuget仓库中心
从零开始把项目发布到Nuget仓库中心 我的项目地址 https://github.com/Ants-double/dasuan ### 前期准备 下载并注册nuget帐号 下载地址 https:// ...
- 小白学 Python(12):基础数据结构(字典)(上)
人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...
- 数据库(一)--通过django创建数据库表并填充数据
django是不能创建数据库的,只能够创建数据库表,因此,我们在连接数据库的时候要先建立一个数据库. 在models.py中 from django.db import models class Pu ...