matlab实验五
- 格式:docx
- 大小:264.74 KB
- 文档页数:13
实验五 用matlab 求二元函数的极值1.计算二元函数的极值对于二元函数的极值问题,根据二元函数极值的必要和充分条件,可分为以下几个步骤: 步骤1.定义二元函数),(y x f z =.步骤2.求解方程组0),(,0),(==y x f y x f y x ,得到驻点.步骤3.对于每一个驻点),(00y x ,求出二阶偏导数22222,,.z z z A B C x x y y ∂∂∂===∂∂∂∂ 步骤4. 对于每一个驻点),(00y x ,计算判别式2B AC -,如果02>-B AC ,则该驻点是极值点,当0>A 为极小值, 0<A 为极大值;如果02=-B AC ,需进一步判断此驻点是否为极值点; 如果02<-B AC 则该驻点不是极值点.2.计算二元函数在区域D 内的最大值和最小值设函数),(y x f z =在有界区域D 上连续,则),(y x f 在D 上必定有最大值和最小值。
求),(y x f 在D 上的最大值和最小值的一般步骤为:步骤1. 计算),(y x f 在D 内所有驻点处的函数值;步骤2. 计算),(y x f 在D 的各个边界线上的最大值和最小值;步骤3. 将上述各函数值进行比较,最终确定出在D 内的最大值和最小值。
3.函数求偏导数的MATLAB 命令MATLAB 中主要用diff 求函数的偏导数,用jacobian 求Jacobian 矩阵。
可以用help diff, help jacobian 查阅有关这些命令的详细信息例1 求函数32824-+-=y xy x z 的极值点和极值. 首先用diff 命令求z 关于x,y 的偏导数>>clear; syms x y;>>z=x^4-8*x*y+2*y^2-3;>>diff(z,x)>>diff(z,y)结果为ans =4*x^3-8*yans =-8*x+4*y即.48,843yxyzyxxz+-=∂∂-=∂∂再求解方程,求得各驻点的坐标。
实验五1、 编写程序,该程序在同一窗口中绘制函数在[]0,2π之间的正弦曲线和余弦曲线,步长为200/π,线宽为 2 个象素,正弦曲线设置为蓝色实线,余弦曲线颜色设置为红色虚线,两条曲线交点处,用红色星号标记,并通过函数方式在生成的图形中添加注释,至少应包括:标题,文本注释,图例和坐标轴标注。
x=0:pi/200:2*pi;sinx = sin(x); cosx = cos(x);k=find(abs(sinx-cosx)<1e-2); x1=x(k);figure,plot(x,sinx,'LineWidth',2) hold on ,plot(x,cosx,'r:','LineWidth',2)hold on ,plot(x(find(cosx==sinx)),cosx(find(cosx==sinx)),'r*','LineWidth',2)hold on ,plot(x1,sin(x1),'r*') xlabel('x:(0-2\pi)'); ylabel('y:sin(x)/cos(x)');title('正弦曲线和余弦曲线');text(x1+0.1,sin(x1),'sin(x)=cos(x)');gtext('sin(x)') gtext('cos(x)')legend('sin(x)','cos(x)')2、 绘制图像:双曲抛物面:22164x y z =-,1616x -<<,44y -<<,并对绘制的双曲抛物面尝试进行视点控制。
[X,Y] = meshgrid(-16:0.4:16,-4:0.1:4); Z = X.^2/16 - Y.^2/4;subplot(1,3,1),plot3(X,Y,Z),view(0,180),title('azimuth = 0,elevation = 180'); subplot(1,3,2),plot3(X,Y,Z),view(-37.5,-30),title('azimuth = -37.5,elevation = -30');subplot(1,3,3),plot3(X,Y,Z),view([3,3,2]),title('viewpoint=[3,3,1]');3、 表中列出了4个观测点的6次测量数据,将数据绘制成为分组形式和堆叠形式的条形图。
实验五 MATLAB二维、三维图形的绘制一、实验目的1.掌握二维、三维图形的绘制;2.掌握特殊二维图形的绘制;3.掌握绘图参数的设置;4.了解并学习简单动画的制作。
二、实验内容1.运行下列程序,学会并掌握标题、坐标轴标签和网格线的设置方法x=0:1:10;y=x.^2-10*x+6;plot(x,y);title ('Plot of y=x.^2-10*x+6');xlabel ('x');ylabel ('y');grid on;2.运行下列程序,学会并掌握线型、点型、颜色的设置方法x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,y1,'bo',x,y2,'r:');title('线型、点型和颜色');xlabel('时间'),ylabel('Y');grid on;3.同一坐标系内多条曲线的绘制1)使用 plot(x,[y1;y2;…])x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,[y1;y2]);legend('sin x','cos x');2)使用hold命令x = -pi:pi/20:pi;y1 = sin(x);y2 = cos(x);plot(x,y1);hold on;plot(x,y2,‘r’);3)在plot后使用多输入变量x = -2*pi:pi/20:2*pi;y1 = 2*sin(x);y2 = 2*cos(x);plot(x,y1,'ro',x,y2,'b:');title('线型、点型和颜色');xlabel('时间'),ylabel('Y');4) 使用plotyy命令x = -pi:pi/20:pi;y1 = sin(x);y2 = 5*cos(x);plotyy(x,y1,x,y2);grid on;gtext(‘sinx’) ; gtext(‘5cosx’) ;4.子图形窗口的绘制subplot(2,1,1);x= -pi:pi/20:pi;y=sin(x);plot(x,y) ; grid on;title('正弦曲线');subplot(2,1,2);x= -pi:pi/20:pi;y=cos(x);plot(x,y); grid on;title('余弦曲线');5.对数坐标图形x=0:0.1:10;y=x.^2 -10.*x +25;subplot(2,2,1);plot(x,y); grid on;xlabel('a) x、y轴线性刻度');subplot(2,2,2);semilogx(x,y); grid on;xlabel('b) x轴对数刻度、y轴线性刻度');subplot(2,2,3);semilogy(x,y); grid on;xlabel('c) x轴线性刻度、y轴对数刻度');subplot(2,2,4);loglog(x,y); grid on;xlabel(‘d) x、y轴对数刻度');6.极坐标下的绘图theta = 0:pi/20:2*pi;r = 0.5+cos(theta);polar(theta,r);7.复数的绘图,并比较下面几种情况的不同1)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(y);grid on ;title('Plot of Complex Function vs Time');xlabel('Real Part');ylabel('Imaginary Part');2)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(t, y);grid on ;title('Plot of Complex Function vs Time');xlabel('t');ylabel('y(t)');3)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));plot(t, real(y),'b-');grid on;hold on;plot(t, imag(y),'r-');title('Plot of Complex Function vs Time');xlabel('t');ylabel('y(t)');legend('real','imaginary');hold off;4)t = 0:pi/20:6*pi;y = exp(0.1*t) .* (cos(t) + i * sin(t));polar(angle(y),abs(y));title('Plot of Complex Function');8.特殊二维图形的绘制1)x = [1 2 3 4 5 6];y = [2 6 8 7 8 5];stem(x,y);title('Example of a Stem Plot');xlabel('x');ylabel('y');axis([0 7 0 10]);将上述程序中的stem语句换为stairs、bar、barh和compass,即可实现阶梯图、条形图、罗盘图的绘制。
实验五:循环结构程序设计实验报告一、实验目的1. 了解循环结构的基本概念和原理;2. 掌握使用Matlab进行循环结构程序设计的方法;3. 提高编程能力和问题解决能力。
二、实验内容1. 学习while循环和for循环的基本语法和用法;2. 设计并编写一些基于循环结构的Matlab程序;3. 分析程序运行结果并进行总结。
三、实验原理循环结构是程序设计中的重要组成部分,它可以让一段代码重复执行多次,从而简化程序的编写。
在Matlab中,循环结构主要有while 循环和for循环两种形式。
while循环在执行循环体前判断条件是否为真,只有条件为真时才会执行循环体;for循环则是指定循环的次数,每次迭代时执行一次循环体。
四、实验步骤与结果1. 编写一个使用while循环的程序,实现1~100的累加。
程序代码如下:```matlabsum = 0;i = 1;while i <= 100sum = sum + i;i = i + 1;enddisp(sum);```运行程序后,得到的结果为5050。
2. 编写一个使用for循环的程序,实现1~10的阶乘。
程序代码如下:```matlabresult = 1;for i = 1:10result = result * i;enddisp(result);```运行程序后,得到的结果为xxx。
五、实验总结通过本次实验,我深刻理解了循环结构的基本概念和原理,掌握了使用Matlab进行循环结构程序设计的方法。
在编写循环程序的过程中,我发现循环结构可以大大简化程序的编写,并且能够高效地处理重复性任务。
我也进一步提高了自己的编程能力和问题解决能力。
本次实验使我对Matlab中的循环结构有了更加深入的了解,我相信这对我的编程能力和日后的学习工作都将大有裨益。
六、实验感想和改进意见通过本次实验,我深刻认识到循环结构在程序设计中的重要性和灵活性。
循环结构能够帮助我们简化程序的编写,提高代码的重用性和可读性,因此在实际的程序设计中,合理地运用循环结构能够大大提高程序的效率和逻辑清晰度。
clear all;close all;dt=0.01;t=0:dt:10;xt=0.1*cos(0.15*pi*t)+0.5*cos(4*pi*t);fs=4;sdt=1/fs;t1=0:sdt:10;st=0.1*cos(0.15*pi*t1)+0.5*cos(4*pi*t1); t2=-50:dt:50;gt=sinc(fs*t2);stt=sigexpand(st,sdt/dt);xt_t=conv(stt,gt);figure(1);subplot(311);plot(t,xt);title('原始信号');subplot(312);plot(t1,st);title('抽样信号');subplot(313);t3=-50:dt:60+sdt-dt;plot(t3,xt_t);title('抽样信号恢复');axis([0 10 -1 1]);function [out]=sigexpand(d,M)N=length(d);out=zeros(M,N);out(1,:)=d;out=reshape(out,1,M*N);012345678910-11原始信号012345678910-11抽样信号-101抽样信号恢复N=1000;dsource = pcm_encode(650);n=10;temp1=ones(1,n);temp0=zeros(1,n);new_dsource=[];for i=1:length(dsource)if dsource(i)==0new_dsource=[new_dsource temp0];elsenew_dsource=[new_dsource temp1];endendT=1;t=0:T/n:T/n*(length(new_dsource)-1);plot(t,new_dsource)axis([min(t)-0.01,max(t)+0.01,min(new_dsource)-0.01,max(new_dsource)+0.01])function [out]=pcm_encode(x)n=length(x);for i=1:nif x(i)>0out(i,1)=1;elseout(i,1)=0;endif abs(x(i))>=0&abs(x(i))<16out(i,2)=0;out(i,3)=0;out(i,4)=0;step=1;st=0;elseif 16<=abs(x(i))&abs(x(i))<32out(i,2)=0;out(i,3)=0;out(i,4)=1;step=1;st=16; elseif 32<=abs(x(i))&abs(x(i))<64out(i,2)=0;out(i,3)=1;out(i,4)=0;step=2;st=32; elseif 64<=abs(x(i))&abs(x(i))<128out(i,2)=0;out(i,3)=1;out(i,4)=1;step=4;st=64; elseif 128<=abs(x(i))&abs(x(i))<256out(i,2)=1;out(i,3)=0;out(i,4)=0;step=8;st=128; elseif 256<=abs(x(i))&abs(x(i))<512out(i,2)=1;out(i,3)=0;out(i,4)=1;step=16;st=256; elseif 512<=abs(x(i))&abs(x(i))<1024out(i,2)=1;out(i,3)=1;out(i,4)=0;step=32;st=512; elseout(i,2)=1;out(i,3)=1;out(i,4)=1;step=64;st=1024; endif (abs(x(i))>=2048)out(i,2:8)=[1 1 1 1 1 1 1];elsetmp=floor((abs(x(i))-st)/step);t=dec2bin(tmp,4)-48;out(i,5:8)=t(1:4);endendout=reshape(out',1,8*n);0.10.20.30.40.50.60.70.80.91。
实验五 MATLAB 数值计算一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
设计提示1.参考本节主要内容,学习并理解相关函数的含义及调用方法。
三、实验内容1.线性系统方程:分别使用左除(\)和求逆(inv )求解下面系统方程的解:⎪⎩⎪⎨⎧=+=+=++377251463c b b a c b a2. 数值积分:使用quad 和trapz 求解⎰-503/dx xe x 的数值积分,并与其解析解9243/5+--e 相比较;3. 请完成教材P154页中实验指导环节的实验内容第2题4. 请完成教材P155页中思考练习的第3题(1),并绘制解在该求解区间(即[0,5])上的图像;。
5、请完成教材P164页实验指导环节的实验内容第5题。
(提示:该函数的符号导数,可以通过函数diff 求得。
首先定义符号变表达式,如求sin(x)的一阶符号导数,可以先定义f=’sin(x)’;df=diff(f);可求得df=cos(x)。
其中df 即为函数f 的一阶符号导数)。
四、实验报告要求(包含预习报告要求和最终报告要求)1.实验名称2.实验目的3.实验设备及条件4.实验内容及要求5.实验程序设计指程序代码。
6.实验结果及结果分析实验结果要求必须客观,现象。
结果分析是对实验结果的理论评判。
7.实验中出现的问题及解决方法8. 思考题的回答五、实验报告的提交方式Word文档,命名方式:实验号_你的学号_姓名例如本次实验:实验一_000000001_张三.doc(信息101提交报告邮箱):E_mail: *******************(网络工程101提交作业邮箱):E_mail: *******************(注意网络班的M是大写的)下一次课前提交,过期不收!六、参考文献参考教材和Matlab帮助文件。
实验五基于MATLAB控制系统的单位阶跃响
应分析
基于MATLAB控制的单位阶跃响应分析
一、实验目的1)学会使用MATLAB编程绘制控制系统的单位阶跃响应曲线。
2)研究二阶系统中ξ,ωn对系统阶跃响应的影响。
3)掌握准确读取动态特性指标的方法。
二、实验内容已知二阶控制系统,用MATLAB完成曲线绘制。
三、实验仪器1、电脑2、 MATLAB软件
四、实验原理例题:3-1若已知单位负反馈前向通道的传递函数为G(S)=100/(s2+5s),试作出其单位阶跃响应曲线,准确读出其动态性能指标,并记录数据。
【解】
老师演示1)作单位阶跃响应曲线参考程序如下:
sys=tf(100,[15 0]);sysc=feedback(sys,1);step(sysc)习题:
1、已知单位负反馈系统的开环传递函数为10/(s2+2s+10)试作出该系统的阶跃响应,并记录其性能指标。
2、已知闭环传递函数为5(s2+5s+6)/s3+6s2+10s+8,试作出阶跃响应曲线,并记录其性能指标。
五、实验步骤
1、老师演示例题。
编程得到曲线,记录数据。
2、学生自行完成习题,编写程序,记录数据。
六、实验结果记录如下:画出仿真图,以及记录实验中的性能指标数据。
七、思考题
1、用其他方法编写程序得到响应曲线。
实验五 MATLAB 绘图一、实验目的 掌握基本的MATLAB 绘图函数及方法。
二、实验内容1、在同一坐标系下绘制下面三个函数在t ∈[0,4π]的图象。
)sin(41.0321t e y t y ty t -===π程序如下:t=0:pi/100:4*pi;y1=t;y2=sqrt(t);y3=4*pi*exp(-0.1*t).*sin(t);plot(t,y1,’b ’,t,y2,’g ’,t,y3,’r ’);2、编写程序,选择合适的步距,绘制下面函数在区间[-6,6]中的图象。
⎪⎩⎪⎨⎧>+-≤<≤=3,630,0,sin )(x x x x x x x y程序如下:x1=-6:pi/100:0;y1=sin(x1);x2=0:0.01:3;y2=x2;x3=3:0.01:6;y3=-x3+6;plot(x1,y1,x2,y2,x3,y3);3、用compass函数画下面相量图ua = 1 ;ub = cos(-2*pi/3)+sin(-2*pi/3)*i ;uc=cos(2*pi/3)+sin(2*pi/3)*i;compass([ua,ub,uc,ua-ub,ub-uc,uc-ua])4、用mesh 或surf 函数绘制下面方程所表示的三维空间曲面,x 和y 的取值范围设为[-3,3]。
101022y x z +-= 程序如下:[x,y]=meshgrid(-3:0.01:3,-3:0.01:3);z= -(x.*x)/10+(y.*y)/10; subplot(1,2,1); mesh(x,y,z); subplot(1,2,2); surf(x,y,z);5、编写一个函数,x<=2时,function f1=myfun(x)if x<=2f1=0.5.*x;elseif x>6f1=0.5;elsef1=1.5-0.25.*x;end>> x=0:0.01:2;>> plot(x,myfun(x).*myfun(x+2))。
本次实验注意:《实验五MALTAB基础知识(简单)》《实验五基于Matlab的信号频谱分析(复杂)》选作一个即可实验五MALTAB基础知识(一)实验目的 (2)(二)实验设备 (2)(三)实验要求 (2)(四)实验内容 (2)1.1 MATLAB基础知识 (2)1.1.1 MATLAB程序设计语言简介 (2)1.1.2 MA TLAB界面及帮助 (2)1.2 MA TLAB基本运算 (4)1.2.1 MA TLAB内部特殊变量和常数 (4)1.2.2 变量类型 (4)1.2.3 内存变量管理 (5)1.2.4 MA TLAB常用数学函数 (5)1.2.5 MA TLAB矩阵生成 (5)1.2.6 MA TLAB矩阵运算 (8)1.2.7 MA TLAB中的矩阵分析 (10)1.3 MA TLAB程序设计 (10)1.3.1 M文件 (10)1.3.2 程序控制结构 (12)实验五MALTAB基础知识(一)实验目的●了解MA TLAB 程序设计语言的基本特点,熟悉MA TLAB软件运行环境●掌握创建、保存、打开m文件及函数的方法●掌握变量等有关概念,具备初步的将一般数学问题转化为对应的计算机模型并进行处理的能力(二)实验设备计算机,Matlab软件(三)实验要求本实验属于验证实验,请根据(四)实验内容的步骤,运行相应的指令或例子,并将仿真结果截图至文档(请自己新建一个word文档,注意,并不一定所有指令或例子的实验结果都要截图,截图数目大于等于5个即可,自己选择性截图,答案不唯一,自由发挥)请在页眉处填写班级、学号、姓名,并将实验报告命名为“实验五_学号_姓名”,并通过FTP上传至指定文件夹。
(四)实验内容1.1 MATLAB基础知识1.1.1 MATLAB程序设计语言简介MA TLAB,Matrix Laboratory的缩写,是由MathWorks公司开发的一套用于科学工程计算的可视化高性能语言,具有强大的矩阵运算能力。
09电子系物本 姓名: 周 琴 学号: 120091001129实验指导五一、 实验目的掌握定义和调用MATLAB 函数的方法。
二、 实验内容1、建立5×6矩阵,要求输出矩阵第n 行元素。
当n 值超过矩阵的行数时,自动转为输出矩阵的最后一行元素,并给出出错信息。
2、已知:y=()()()403020f f f +(1) 当f(n)=n+10ln(n^2+5)时,y 的值是多少。
(2) 当f(n)=1*2+2*3+3*4+…+n*(n+1)时,y 的值是多少。
3、先用函数的递归调用一个函数文件求50121k =1111n m i k k i k k k ===++∑∑∑∑100,然后调用该函数文件求。
三、实验数据:1、>> cleara=rand(5,6);n=input('请输入一个数:');if n>5n=5a(n,:)disp('输入超出范围');elsea(n,:)end请输入一个数:6n =5ans =0.7680 0.4983 0.7266 0.9334 0.1338 0.5751 输入超出范围2、(1)保存的文件名:n2a.m代码:function a=n2a(n)a=n+10*log(n*n+5)命令窗:clear;y=n2a(40)/(n2a(30)+n2a(20))a =113.8088a =98.0793a =80.0389y =0.6390(2)创建函数文件名:n1b.m代码:function b=n1b(n)b=0;for i=1:nb=b+i*(i+1);end命令窗内容:clear;y=n1b(40)/(n1b(30)+n1b(20))y =1.76623、首先建立命令文件分别并以文件名factor1.m和factor2.m和factor3存盘. Factor1中的代码如下:function f=factor1(k)if k==1f=1;elsef=factor1(k-1)+k;endFactor2中的代码如下:function f=factor2(k)if k==1f=1;elsef=factor2(k-1)+k^2;endFactor3中的代码如下:function f=factor3(k)if k==1f=1;elsef=factor3(k-1)+1/k;end在命令窗口中输入:y=factor1(100)+factor2(50)+factor3(10);y运行结果: y =4.7978e+004。
实验五曲面绘图【实验目的】1.了解二元函数图形的制作。
2.空间曲面等高线的制作。
3.学习掌握MATLAB软件有关的命令。
【实验内容】画出函数22y=的图形,并画出其等高线。
xz+【实验准备】1.曲线绘图的MATLAB命令MATLAB中主要用mesh,surf命令绘制二元函数图形。
可以用help mesh, help surf查阅有关这些命令的详细信息【实验方法与步骤】练习1画出函数22y=的图形,不妨将区域限制在z+x⨯-x。
用MATLAB作图的程序代码为:(-y∈)]3,3,[]3,3[>>clear;>>x=-3:0.1:3; %x的范围为[-3,3]>>y=-3:0.1:3; %y的范围为[-3,3]>>[X,Y]=meshgrid(x,y); %将向量x,y指定的区域转化为矩阵X,Y>>Z=sqrt(X.^2+Y.^2); %产生函数值Z>>mesh(X,Y,Z)结果如图5.1。
图5.1是网格线图,如果要画完整的曲面图,只需将上述的MATLAB 代码mesh(X,Y,Z)改为surf(X,Y,Z), 结果如图5.2图5.1 锥面图5.2 锥面要画等高线,需用contour,contour3命令.其中contour为二维等高线, contour3为三维等高线,如画图5.1的三维等高线, MATLAB代码为:>>clear;>>x=-3:0.1:3;>>y=-3:0.1:3;>>[X,Y]=meshgrid(x,y);>>Z=sqrt(X.^2+Y.^2);>>contour3(X,Y,Z,10) %画10条等高线>>xlabel('X-axis'),ylabel('Y-axis'),zlabel('Z-axis') %三个坐标轴的标记>>title('Contour3 of Surface') %标题>>grid on %画网格线结果如图5.3.图5.3 等高线如画图5.1的二维等高线, MATLAB代码为:>>clear; x=-3:0.1:3; y=-3:0.1:3;>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);>> contour(X,Y,Z,10)>>xlabel('X-axis'),ylabel('Y-axis')>>title('Contour of Surface')>>grid on结果如图5.4.图5.4 等高线如果要画1=z 的等高线,则用命令>>clear; x=-3:0.1:3; y=-3:0.1:3;>>[X,Y]=meshgrid(x,y); Z=sqrt(X.^2+Y.^2);>> contour(X,Y,Z,[1 1])结果如图5.5。
MATLAB实验教案5篇第一篇:MATLAB实验教案实验一离散系统的时域分析和复频域分析1.实验目的(1)掌握在时域求系统响应的方法。
(2)掌握时域离散系统的时域特性。
(3)通过实验判断系统稳定性(4)掌握利用Z变换对系统进行复频域分析。
(5)掌握系统零、极点的绘制方法。
(6)通过复频域分析系统稳定性、频率特性。
(7)熟悉Z变换的应用2.实验设备λ计算机λ MATLAB R2012a仿真软件3.实验原理(1)离散系统的时域分析在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数描述系统特性。
已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系统对于该输入信号的响应,利用filter 函数或conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。
系统的时域特性是指系统的线性移不变性质、因果性和稳定性。
重点分析实验系统的稳定性,包括观察系统的暂态响应和稳定响应。
系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应,或者系统的单位脉冲响应满足绝对可和的条件。
系统的稳定性由其差分方程的系数决定。
实际中检查系统是否稳定,不可能检查系统对所有有界的输入信号、输出是否都是有界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。
可行的方法是在系统的输入端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零),就可以断定系统是稳定的。
系统的稳态输出是指当n→∞时系统的输出。
如果系统稳定,信号加入系统后,系统输出的开始一段称为暂态效应,随着n的加大,幅度趋于稳定,达到稳态输出。
注意在以下实验中均假设系统的初始状态为零。
(2)离散系统的复频域分析离散系统的时域方程为∑dk=0Nky(n-k)=x(n-k)∑pkK=0∞M其变换域分析如下y(n)=x(n)*h(n)=频域系统频率响应为m=-∞∑x(m)h(n-m)⇔Y(e)=X(e)H(e)jωjωjωH(e)=Z域 jωY(e)X(e)jωjωy(n)=x(n)*h(n)=系统的转移函数为m=-∞∑x(m)h(n-m)⇔Y(z)=Y(z)X(Z)-i∞X(z)H(z)H(z)=0分解因式H(z)i=N∑pkz∑dkzi=0M=K-i X(1-ξX(1-i=1i=1NMiz-1)),其中,ξ和iλzi-1λi称为零、极点。
实验五 控制系统计算机辅助设计一、实验目的学习借助MATLAB 软件进行控制系统计算机辅助设计的基本方法,具体包括超前校正器的设计,滞后校正器的设计、滞后-超前校正器的设计方法。
二、实验学时:4 学时 三、实验原理1、PID 控制器的设计PID 控制器的数学模型如公式(5-1)、(5-2)所示,它的三个特征参数是比例系数、积分时间常数(或积分系数)、微分时间常数(或微分系数),因此PID 控制器的设计就是确定PID 控制器的三个参数:比例系数、积分时间常数、微分时间常数。
Ziegler (齐格勒)和Nichols (尼克尔斯)于1942提出了PID 参数的经验整定公式。
其适用对象为带纯延迟的一节惯性环节,即:s e Ts Ks G τ-+=1)( 5-1式中,K 为比例系数、T 为惯性时间常数、τ为纯延迟时间常数。
在实际的工业过程中,大多数被控对象数学模型可近似为式(5-1)所示的带纯延迟的一阶惯性环节。
在获得被控对象的近似数学模型后,可通过时域或频域数据,根据表5-1所示的Ziegler-Nichols 经验整定公式计算PID 参数。
表控制器的参数。
假定某被控对象的单位阶跃响应如图5-4所示。
如果单位阶跃响应曲线看起来近似一条S 形曲线,则可用Ziegler-Nichols 经验整定公式,否则,该公式不适用。
由S 形曲线可获取被控对象数学模型(如公式5-1所示)的比例系数K 、时间常数T 、纯延迟时间τ。
通过表5-1所示的Ziegler-Nichols 经验整定公式进行整定。
如果被控对象不含有纯延迟环节,就不能够通过Ziegler-Nichols 时域整定公式进行PID 参数的整定,此时可求取被控对象的频域响应数据,通过表5-1 所示的Ziegler-Nichols 频域整定公式设计PID 参数。
如果被控对象含有纯延迟环节,可通过pade 命令将纯延迟环节近似为一个四阶传递函数模型,然后求取被控对象的频域响应数据,应用表5-1求取PID 控制器的参数。
实验五 用MATLAB 判定系统的能控性1、实验设备MATLAB 软件2、实验目的① 学习线性定常连续系统的状态空间模型的能控性判定、掌握MATLAB 中关于该模型判定的主要函数;② 通过编程、上机调试,进行模型判定。
3、实验原理说明对于连续的线性定常系统,采用代数判据判定状态能控性需要计算能控性矩阵。
Matlab 提供的函数ctrb()可根据给定的系统模型,计算能控性矩阵Q c =[B AB … A n-1B]能控性矩阵函数ctrb()的主要调用格式为:Q c = ctrb(A,B)Q c = ctrb(sys)其中,第1种输入格式为直接给定系统矩阵A 和输入矩阵B ,第2种格式为给定状态空间模型sys 。
输出矩阵Q c 为计算所得的能控性矩阵。
基于能控性矩阵函数ctrb()及能控性矩阵Q c 的秩的计算rank(),就可以进行连续线性定常系统的状态能控性的代数判据判定。
也可用函数Judge_contr()通过调用能控性矩阵函数ctrb()和计算矩阵秩的函数rank(),完成能控性代数判据的判定。
4、实验步骤① 根据所给状态空间模型,依据线性定常连续系统状态方程计算能控性矩阵,采用MATLAB 编程。
② 在MATLAB 界面下调试程序,并检查是否运行正确。
习题1:试在Matlab 中计算如下系统的状态能控性。
u x x ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=1-1-1112310020231Matlab 源程序如下:A=[1 3 2; 0 2 0; 0 1 3];B=[2 1; 1 1; -1 -1];sys=ss(A,B,[],[]);Judge_contr(sys);函数Judge_contr()的源程序为:function Judge_contr(sys)Qc=ctrb(sys);n=size(sys.a);if rank(Qc)==n(1)disp('The system is controlled')elsedisp('The system is not controlled') end表明所判定的系统状态不能控。
实验五 基于matlab 的数据拟合与回归分析一、 实验类型验证性实验二、 实验学时2学时三、 实验目的1、掌握利用MATLAB 中实现单因变量的多元线性回归分析(经典多元线性回归分析)的方法;2、掌握利用MATLAB 中实现多因变量的多元线性回归分析(多对多线性回归分析)的方法。
3、掌握MATLAB 有关逐步回归的命令。
四、 实验内容及要求 实验内容:1 学习MATLAB 中有关经典多元线性回归分析的命令;(1) [b,bint,r,rint,stats] = regress(y,X,alpha)建立回归分析模型01122,i i i ip ip i y b b x b x b x ε=+++++其中()()2E 0,D i i εεσ==,1,2,,i n =.注:在该命令中,设计矩阵()(1)ij n p X x ⨯+=(X 的第1列全为1 ) 或响应值向量()1i n y y ⨯=中的无效值Nan 将被免忽略。
输入参数至少有2个,alpha 是检验的显著性水平,默认值为0.05。
输出参数至少有1个,b 是回归系数的估计值;bint 是各回归系数的置信度为1-alpha 的置信区间(第1列是它们的下界,第2列是它们的上界);r 是残差,rint 是残差的置信区间;stats 给出一个1*4的向量,依次是判定系数2R ,F 统计量的观测值及检验的p 值,以及误差的方差的估计值2ˆσ. 这里//(1)U p MMSF Q n p MSE==-- 是检验回归模型是否显著的检验统计量,当012:0p H b b b ====成立时, ~(,1)F F p n p --.可以通过分析残差的置信区间来观察原始数据是否存在异常点,若残差的置信区间不包括0,则可认为对应的观测值是异常值,将异常值全部去掉,重新建立的回归模型将更加精确。
可以调用命令rcoplot(r,rint)按观测顺序逐个画出各组观测值对应的残差和残差置信区间,从而观测异常值的位置。
(2) stats = regstats(y,X,model ,whichstats ) % 根据指定模型model 建立回归方程输入参数:响应变量()1i n y y ⨯=,设计变量()ijn pX x ⨯=,model 参数表5.1 model 参数及说明包括系数的估计值、因变量的预测值、残差、判定系数等23个选项供用户选择,通过这一界面,matlab将用户所选择的选项对应的回归分析结果显示在matlab工作空间中。
图5.1 regstats弹出的图形用户界面当带有输出选项stats时,直接返回一个结构体stats,它有24字段,包含了图形界面中的所有选项,此时,不弹出用户界面。
若输入中带有第4个参数whichstats,则stats仅包含whichstats 指定的统计量。
表5.2 stats字段名称及说明(3) 乘方法。
输入参数至少两个,X(n p ⨯)是设计矩阵,y(1n ⨯)响应变量的观测值。
wfun 给出权函数的名称,tune 给出权函数相应的调节系数,const 控制模型中是否包含常数项。
若const=’on’或1,则模型中包含常数项,此时自动在X 的第1列加入1列1,若const=’off’或0,则不包含常数项。
表5.3 权函数与调节系数其中r =,resid 是上一步迭代的残差,/0.6745s MAD =,MAD 是残差绝对值的中位数,若X 有p 列,计算MAD 时应残差绝对值的前p 个值最小值去掉。
h 是最小二乘拟合得到的中心化杠杆值。
输出:至少1个参数,b 是回归模型中的系数向量;stats 返回用于进行模型诊断的结构体变量。
其字段名称和意义如下:表5.4 stats 的字段名称及说明2 [beta,Sigma,E,CovB,logL]= mvregress(X,Y ,Name,Value) 建立多对多的线性回归模型 输入:至少两个参数。
d 维响应变量的观测值矩阵()ij n d Y y ⨯=,设计矩阵X 可以是矩阵或元胞数组,当1d =时,()ijn kX x ⨯=,当模型包含常数项时,X 的第1列应全为1;当d>1,并且Y 的每一个维度有相同的设计矩阵时,()ijn kX x ⨯=或是一个只包含单个n k ⨯的设计矩阵的元胞数组;当 d>1,并且Y 的每一个维度有不同的设计矩阵时,X 将是一个长度为d 的元胞数组,每个元胞都是一个n k ⨯的设计矩阵。
Name 和Value 参数可指定算法与相应的一些选项。
其值如表5.5所示。
表5.5 mvregress 函数的name 选项及其值(部分)的协方差矩阵的估计;E 是残差矩阵;CovB 是beta 的协方差矩阵;,logL 是最后一次迭代对应的对数似然函数的值。
3 学习MATLAB 有关逐步回归的命令。
表5.6 逐步回归命令函数4 (1) 设某种水泥在凝固时所释放的热量Y(卡/克)与水泥中下列4种化学成分有关1x 为233CaO Al O ⋅的成分(%);2x 为23CaO SiO ⋅的成分(%); 3x 为23234CaO Al O Fe O ⋅⋅的成分(%);4x 为22CaO SiO ⋅的成分(%)。
共观测了13组数据(见表5.7)。
试求出Y 与1234,,,x x x x 的回归方程,并对该回归方程和各个回归系数进行检验。
表5.7 水泥数据(2) 设发电量1,工业总产值2与钢材产量1,水泥产量2,机械工业总产值3,棉纱产量4x ,机制纸产量5x 之间有线性相关关系。
现收集了1949到1978年共30年的数据(见表4.2)。
试建立12,Y Y 与12345,,,,x x x x x 的线性模型。
表5.8 发电量与经济发展数据(1)实验过程要求用Matlab 软件完成;(2)实验结果逐个导入Word 文档,并按问题作出解释; (3)实验报告按照既定格式书写。
五、 实验的重点和难点实验重点: MA TLAB 中关于多元线性回归模型的实现方法。
实验难点: 无六、 实验准备1、实验室电脑要求安装有Matlab软件;2、上实验课程的学生要对涉及到的统计概念有所了解;3、要求学生事先查阅并熟悉Matlab的相关命令。
七、实验程序及结果分析1 学习MATLAB中有关经典多元线性回归分析的命令(1)程序如下:y=[7613.51 7850.91 8381.86 9142.81 10813.6 8631.43 8124.94 9429.79 10230.81 10163.61 9737.56 8561.06 7781.82 7110.97]';x1=[7666 7704 8148 8571 8679 7704 6471 5870 5289 3815 3335 2927 2758 2591]'; x2=[16.22 16.85 17.93 17.28 17.23 17 19 18.22 16.3 13.37 11.62 10.36 9.83 9.25]'; X=[ones(size(y)) x1.^2 x2.^2 x1 x2 x1.*x2];[b,bint,r,rint,stats] = regress(y,X)结果:结果说明:b是回归系数的估计值;bint是各回归系数的置信度为1-alpha的置信区间(第1列是它们的下界,第2列是它们的上界);r是残差,rint是残差的置信区间;stats给出一个1*4的向量,依R,F统计量的观测值及检验的p值,以及误差的方差的估计值2ˆ .次是判定系数2(2)程序如下:x=[ones(10,1) (1:10)'];y=x*[10;1]+normrnd(0,0.1,10,1);[b,bint]=regress(y,x,0.05)结果:(3)程序如下:y=[3.73 6.27 5.93 5.77 5.72 5.80 5.87 5.78 5.96 ...6.03 6.507.00 6.80 6.68 7.03 7.67 7.59 6.96 ...7.17 6.99 7.17 6.99 6.64 6.71 7.01 7.40 7.49 ...7.75 8.17 8.09 8.11 8.48 8.99];x=1:33;scatter(x,y);%画图,离散点hold on;p=regress(y',[ones(33,1) x']);%线性拟合r=robustfit(x,y);%稳健拟合plot(x,p(1)+p(2)*x,':',x,r(1)+r(2)*x,'r');%画图legend('原始数据','线性拟合','稳健拟合')%设置图例结果:2. 学习MATLAB有关多对多的多元线性回归分析的命令程序如下:x=[143 144 145 147 148 150 153 154 155 156 157 158 159 160 161 162]'; X=[ones(16,1),x];Y=[87 85 88 91 92 90 93 95 98 98 97 95 97 99 100 102]';[beta,Sigma,E,CovB,logL]= mvregress(X,Y,'covtype','full')%建立多对多的线性回归模型结果:结果说明:beta是回归方程的系数估计矩阵;Sigma是对响应向量的协方差矩阵的估计;E是残差矩阵;CovB是beta的协方差矩阵;,logL是最后一次迭代对应的对数似然函数的值。
3.学习MATLAB有关逐步回归的命令。
程序如下:y=[11.2 13.4 40.7 5.3 24.8 12.7 20.9 35.7 8.7 ...9.6 14.5 26.9 15.7 36.2 18.1 28.9 14.9 25.8 21.7 25.7];%犯罪率y,低收入家庭百分比x1,失业率x2,人口总数x3x1=[16.5 20.5 26.3 16.5 19.2 16.5 20.2 21.3 17.2 14.3 ...18.1 23.1 19.1 24.7 18.6 24.9 17.9 22.4 20.2 16.9];x2=[6.2 6.4 9.3 5.3 7.3 5.9 6.4 7.6 4.9 6.4 6.0 7.4 ...5.8 8.66.5 8.3 6.7 8.6 8.4 6.7];x3=[587 643 635 692 1248 643 1964 1531 713 749 7895 ...762 2793 741 625 854 716 921 595 3353];figure(1),plot(x1,y,'*');figure(2),plot(x2,y,'*');figure(3),plot(x3,y,'*');X1=[x1',x2',x3'];stepwise(X1,y)结果:4.(1)程序如下:a=[7 26 6 60;1 29 15 52;11 56 8 20;11 31 8 47;7 52 6 33;11 55 9 22;1 31 22 44;1 31 22 44;2 54 18 22;21 47 4 26;1 40 23 34;11 66 9 12;10 68 8 12];x1=a(:,1);x2=a(:,2);x3=a(:,3);x4=a(:,4);y=[78.5;74.3;104.3;87.6;95.9;109.2;72.5;72.5;93.1;115.9;83.8;113.3;109.4]; X=[ones(size(x1)),x1,x2,x3,x4];[b,bint,r,rint,stats] = regress(y,X)结果如下:b =69.76611.41180.4621-0.0399-0.2226bint =-97.7881 237.3202-0.3563 3.1798-1.2765 2.2008-1.8203 1.7406-1.9175 1.4722r =0.43281.8950-2.1031-1.2393-0.19323.7441-2.3311-2.33111.17110.71442.62350.5346-2.9178rint =-3.7577 4.6233-3.1648 6.9548-5.8987 1.6924-6.4122 3.9337-5.3272 4.9408-1.2481 8.7364-7.3498 2.6876-7.3498 2.6876-3.9131 6.2554-2.6165 4.0453-2.0795 7.3264-4.7525 5.8216-7.2782 1.4427stats =0.9833 117.4117 0.0000 6.5281说明:b 是线性方程的系数估计值,并且第一值表示常数系数。