一、实验目的
  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】实验一:状态方程、传函为模型的系统的仿真的更多相关文章

  1. 《数字信号处理》课程实验2 – FIR数字滤波器设计

    一.FIR数字滤波器设计原理  本实验采用窗函数法设计FIR数字低通滤波器.我们希望设计的滤波器系统函数如下: \(H_{d}\left( e^{jw} \right) = \left\{ \begi ...

  2. 《数字信号处理》课程实验1 – FFT的实现

    一.按时间抽选的基-2 FFT实现原理 观察DIT(基2)FFT的流图(N点,N为2的幂次),可以总结出如下规律: (1)共有\(L=\log_2⁡N\)级蝶形运算: (2)输入倒位序,输出自然顺序: ...

  3. SimMechanics/Second Generation倒立摆模型建立及初步仿真学习

    笔者最近捣鼓Simulink,发现MATLAB的仿真模块真的十分强大,以前只是在命令窗口敲点代码,直到不小心敲入simulink,就一发不可收拾.话说simulink的模块化建模确实方便,只要拖拽框框 ...

  4. mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)

    前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...

  5. 【控制系统数字仿真与CAD】实验二:结构图法数字仿真

    一. 实验目的 1. 掌握结构图法仿真复杂控制系统的方法: 2. 掌握复杂系统联接矩阵W和输入联接矩阵W0的求解过程: 3. 掌握复杂系统的环节连接,矩阵A. B. C.D的求解过程: 4. 掌握MA ...

  6. 【控制系统数字仿真与CAD】实验三:离散相似法数字仿真

    一.实验目的 1. 了解离散相似法的基本原理 2. 掌握离散相似法仿真的基本过程 3. 应用离散相似法仿真非线性系统 4. MATLAB实现离散相似法的非线性系统仿真 5. 掌握SIMULINK仿真方 ...

  7. Xilinx ISE多功能移位寄存器仿真及Basys2实验板实验

    移位寄存器实现Verilog代码: `timescale 1ns / 1ps module add( input clk, input reset, input [1:0] s, input dl, ...

  8. 【Java基础-实验7】Banking_7 -添加银行透支扣款系统的 thorw异常机制

    实验基本要求: 实验题目 7:(在6基础上修改) 将建立一个 OverdraftException 异常,它由 Account 类的withdraw()方法 抛出. 实验目的: 自定义异常 实验说明: ...

  9. 数字孪生,数据驱动下的北京 CBD 智能楼宇三维可视化系统

    前言 楼宇作为建筑基础设施的主体,为人们提供着重要的生存空间.随着物联网.人工智能概念的兴起以及智慧城市如火如荼的开展,智能楼宇的重要性越发突显. 随着城市现代化建设的发展,建筑的智能化,特别是公用建 ...

随机推荐

  1. Python PDB调试处理

    pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...

  2. json.dumps和json.loads

    概念理解 1.json.dumps()和json.loads()是json格式处理函数(可以这么理解,json是字符串) (1)json.dumps()函数是将一个Python数据类型列表进行json ...

  3. 疑似网络抖动引起的RAC单节点宕机

  4. CSS隐藏元素 display、visibility、opacity的区别

    关于使指定元素无法在视野内看到,有3个方法 display: none; opacity: 0; visibility: hidden; 1.display: none; 该方法会改变页面布局. 元素 ...

  5. 隐身衣揭秘--java中继承/隐藏/覆写

    故事背景 看过<哈利·波特>的娃们,想必一定还记得电影中的“隐形斗篷”..这件隐形衣是哈利收到的圣诞礼物,也是死亡圣器中的三件套之一,它让哈利小盆友在执行任务的过程中简直是如虎添翼! 其实 ...

  6. SpringBoot系列教程web篇之过滤器Filter使用指南扩展篇

    前面一篇博文介绍了在 SpringBoot 中使用 Filter 的两种使用方式,这里介绍另外一种直接将 Filter 当做 Spring 的 Bean 来使用的方式,并且在这种使用方式下,Filte ...

  7. Roadmap of FE

    未完待补充......

  8. JVM垃圾回收(上)

    Java 中的垃圾回收,常常是由 JVM 帮我们做好的.虽然这节省了大家很多的学习的成本,提高了项目的执行效率,但是当项目变得越来越复杂,用户量越来越大时,还是需要我们懂得垃圾回收机制,这样也能进行更 ...

  9. 渗透测试-基于白名单执行payload--Csc

    复现亮神课程 基于白名单执行payload--csc 0x01 Csc.exe C#的在Windows平台下的编译器名称是Csc.exe,如果你的.NET FrameWork SDK安装在C盘,那么你 ...

  10. phpstorm 新加入项目的文件--全局搜索不到 ctrl + shift + R

    通过文件名查找文件 ,能搜到其他的现有文件,只是新加入的文件,无法出现在搜索到的结果中 . 总不可能在搜索的关键词一直拼写错误吧 , 那能想到的只有缓存出问题了. 新加入的文件,新加入的文件.... ...