matlab初学第3章
- 格式:ppt
- 大小:587.00 KB
- 文档页数:64
第三章数值数组及向量化运算(matlab基础教程)第3章数值数组及向量化运算数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
本书从第3章起,全部注意力将集中于数值数组及其运算。
本章系统阐述:数组浮点算法的特点;一、二维数值数组的创建和寻访;数组运算和向量化编程;实现数组运算的基本函数;常用标准数组生成函数和数组构作技法;非数NaN、“空”数组概念和应用;关系和逻辑操作。
3.1 数值计算的特点和地位【例3.1-1】已知f(t) t2cost,求s(x) (1)符号计算解法syms t x ft=t^2*cos(t) sx=int(ft,t,0,x) ft =t^2*cos(t) sx =x^2*sin(x)-2*sin(x)+2*x*cos(x)xf(t) dt。
(2)数值计算解法dt=0.05; t=0:dt:5; Ft=t.^2.*cos(t); Sx=dt*cumtrapz(Ft); t(end-4:end) Sx(end-4:end)plot(t,Sx,'.k','MarkerSize',12) xlabel('x'),ylabel('Sx'),grid onans =4.8000 4.8500 4.9000 4.95005.0000ans =-20.1144 -19.9833 -19.7907 -19.5345 -19.2131图3.1-1 在区间[0, 5]采样点上算得的定积分值【例3.1-2】已知f(t) e sin(t),求s(x) 0f(t) dt。
4(1)符号计算解法syms t xft=exp(-sin(t)) sx=int(ft,t,0,4) ft =exp(-sin(t))Warning: Explicit integral could not be found. In sym.int at 58 sx = int(exp(-sin(t)),t = 0 .. 4)(2)数值计算解法dt=0.05; t=0:dt:4; Ft=exp(-sin(t)); Sx=dt*cumtrapz(Ft); Sx(end)plot(t,Ft,'*r','MarkerSize',4) hold onplot(t,Sx,'.k','MarkerSize',15) hold off xlabel('x')legend('Ft','Sx') ans =3.0632图3.1-2 在区间[0, 4]中间的被积函数及其原函数的离散计算结果3.23.2.1 一二数值数组的创建和寻访一维数组的创建递增/减型一维数组的创建通用型一维数组的创建【例3.2-1】一维数组的常用创建方法举例。
上一章几条重要的命令sys=tf(num,den)[num,den]=tf(sys,'v')sys=zpk([z1,z2,…,zm],[p1,p2,…,pn],k)[z p k]=zpkdata(sys,'v')sys=ss(A,B,C,D)[A,B,C,D]=ssdata(sys)sys = tf(dnum,dden,Ts)[dnum,dden,Ts]=tfdata(sys,'v')dsys=ss(Ad,Bd,Cd,Dd,T s)[Ad,Bd,Cd,Dd,T s]=ssdata(sys)要求掌握 1 系统环节的连接2 模型的转换3 系统的稳定性分析4 单输入单输出控制系统的时域分析编程5 单输入单输出控制系统的频域分析编程第3章单输入单输出控制系统的分析建立系统数学模型的主要目的是为了对系统性能进行分析与设计。
对控制系统的分析有稳态性能和动态性能分析,如系统的稳定性,稳态误差,动态响应性能参数等。
其分析方法主要有时域法和频域法两种。
时域分析法是直接在时间域内计算系统的时间响应、分析系统的稳定性、能控和能观性、动态性能等,这种分析方法的结果比较直观。
频域分析法是在系统受到频率为ω的正弦信号激励时,分析系统输出幅值和相位与输入激励之间的关系,进而得到系统的性能特性。
MATLAB 控制系统工具箱(Control System Toolbox )对控制系统,尤其是对线性时不变(Linear Time Invariant,简称LTI )系统的建模、分析和设计提供了一个完整的解决方案,也避免了繁杂的编程工作,是线性控制系统分析和设计的高效率的工具。
3.1单输入单输出(SISO )控制系统的模型及其转换在得到控制系统各个环节的MATLAB 表达之后,通常需要进行串联、并联、反馈连接等处理方式,将比较复杂的系统化成简单的系统,再进行分析和设计。
在控制系统工具箱中提供了一些函数来支持系统的连接。
第3章用MATLAB进行控制系统时域分析MATLAB是一种功能强大的计算机软件,被广泛用于进行控制系统分析和设计。
在控制系统领域,时域分析是一种常用的方法,它可以用来评估和改进系统的性能及稳定性。
在MATLAB中,有几个重要的函数可以用于进行控制系统时域分析,包括step、impulse、lsim和initial等。
这些函数可以帮助我们了解系统的响应和行为。
首先,我们可以使用step函数来绘制系统的阶跃响应。
阶跃响应表示系统对输入信号的反应。
通过分析阶跃响应曲线的特性,我们可以评估系统的稳定性和性能。
例如,我们可以从阶跃响应曲线中获取系统的超调量、上升时间和峰值时间等信息。
step函数的使用方法如下:```step(sys)```其中,sys是一个控制系统的传递函数或状态空间模型。
调用step 函数后,MATLAB会自动绘制系统的阶跃响应曲线,并且返回一个包含系统响应数据的结构体。
另一个常用的时域分析函数是impulse,它可以用来绘制系统对冲击输入的响应。
冲击响应是系统对于单位冲击信号的输出。
通过分析冲击响应曲线,我们可以了解系统的固有特性,例如共振频率和阻尼比。
impulse函数的使用方法与step函数类似:```impulse(sys)```同样,调用impulse函数后,MATLAB会绘制系统的冲击响应曲线,并且返回一个包含系统响应数据的结构体。
除了阶跃响应和冲击响应外,我们还可以使用lsim函数来绘制系统对任意输入信号的响应。
lsim函数可以接受用户自定义的输入信号,并给出系统的输出响应。
通过分析系统的输出信号,我们可以更加全面地了解系统的性能和行为。
lsim函数的使用方法如下:```lsim(sys,u,t)```其中,sys是一个控制系统的传递函数或状态空间模型,u是输入信号,t是时间向量。
调用lsim函数后,MATLAB会根据输入信号和时间向量绘制系统的输出响应曲线,并返回一个包含系统响应数据的结构体。
《MATLAB程序设计教程》第3章MATLAB程序设计《MATLAB程序设计教程(第二版)》的第3章主要介绍了MATLAB程序设计的基本概念和基本语法。
本章内容包括MATLAB程序的基本结构、变量的定义和使用、矩阵和向量的操作、条件语句和循环语句的使用、MATLAB函数及其调用、输入和输出等。
首先,本章介绍了MATLAB程序的基本结构。
一个MATLAB程序包含多个部分,包括脚本文件、函数文件、注释等。
脚本文件是由一系列MATLAB语句组成的,按照顺序执行。
函数文件是由函数定义和函数体组成的,可以在其他脚本文件或函数文件中调用。
接着,本章介绍了MATLAB中变量的定义和使用。
MATLAB中的变量是用来存储数据的,可以是数字、字符、字符串等。
变量可以使用等号进行赋值,并且可以进行各种运算操作。
MATLAB中的变量有严格的命名规则和作用域,需要注意命名的规范。
然后,本章介绍了MATLAB中矩阵和向量的操作。
MATLAB可以通过矩阵和向量进行复杂的数值计算。
可以通过矩阵的加减乘除、转置、求逆等操作来实现各种数值运算。
MATLAB还提供了许多便捷的函数来操作矩阵和向量,例如最大最小值、平均值、排序等。
接下来,本章介绍了条件语句和循环语句的使用。
条件语句用来根据条件执行不同的操作,包括if语句和switch语句。
循环语句用来重复执行一段代码,包括for循环、while循环和do-while循环。
这些语句可以有效地控制程序的逻辑流程,并实现各种复杂的计算。
然后,本章介绍了MATLAB函数及其调用。
函数是由一系列语句组成的,可以重复使用。
可以在MATLAB程序中定义自己的函数,并在程序中调用。
函数可以接受输入参数,经过运算后返回输出结果,可以大大提高程序的重复利用性和代码的模块化程度。
最后,本章介绍了MATLAB的输入和输出。
MATLAB可以通过命令窗口进行输入输出,也可以通过文件进行输入输出。
可以使用各种函数来读取和写入数据,包括文本文件、二进制文件等。
Matlab第三章习题答案第三章3.5计算多项式乘法()()222254x x x x ++++>> a=[1 2 2];>> b=[1 5 4];>> c=conv(a,b)c =1 7 16 18 8poly2sym(c)ans =x^4 + 7*x^3 + 16*x^2 + 18*x + 83.6计算多项式的除法()()3231368/4x x x x ++++ >> a=[3 13 6 8];>> b=[1 4];>> [q r]=deconv(a,b)q =3 1 2r =0 0 0 0>> poly2sym(q)ans =3*x^2 + x + 23.8求多项式4324121459x x x x --++的微分和积分(1)微分:>> a=[4 -12 -14 5 9];>> b=polyder(a)b =16 -36 -28 5>> poly2sym(b)ans =16*x^3 - 36*x^2 - 28*x + 5(2)积分:polyint(a)ans =0.8000 -3.0000 -4.6667 2.5000 9.00000 >> poly2sym(ans)ans =(4*x^5)/5 - 3*x^4 - (14*x^3)/3 + (5*x^2)/2 + 9*x3.9求代数⽅程32349x x x +-+=0的解。
>> [x]=solve('x^3+3*x^2-4*x+9')x =- 7/(3*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 -1/108*108^(1/2)*4703^(1/2))^(1/3) - 17/(6*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) + (15/2 -(108^(1/2)*4703^(1/2))/108)^(1/3)/2 - (3^(1/2)*i*(7/(3*(15/2 -(108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 - 1/108*108^(1/2)*4703^(1/2))^(1/3)))/2 - 1 7/(6*(15/2 - (108^(1/2)*4703^(1/2))/108)^(1/3)) + (15/2 -(108^(1/2)*4703^(1/2))/108)^(1/3)/2 + (3^(1/2)*i*(7/(3*(15/2 -(108^(1/2)*4703^(1/2))/108)^(1/3)) - (15/2 - 1/108*108^(1/2)*4703^(1/2))^(1/3)))/2 – 1 3.10求线性⽅程组223430x xy y x x ?++=??-+=??的解 eqn1='x^2+x*y+y=3';>> eqn2='x^2-4*x+3=0';[x,y]=solve(eqn1,eqn2)x =13y =1-3/23.11求微分⽅程64dy y x dx=+的通解。
第3章 MATLAB符号计算符号计算则是可以对未赋值的符号对象(可以是常数、变量、表达式)进行运算和处理。
MATLAB具有符号数学工具箱(Symbolic Math Toolbox),将符号运算结合到MATLAB的数值运算环境。
符号数学工具箱是建立在Maple软件基础上的。
3.1 符号表达式的建立3.1.1 创建符号变量和表达式Symbolic Math Toolbox规定在进行符号计算时,首先要定义基本的符号对象然后才能进行符号运算。
创建符号变量和符号表达式可以使用sym和syms命令。
1. 使用sym命令创建符号变量和表达式语法:sym(‘变量’,参数) %把变量定义为符号对象2.使用syms命令创建符号变量和符号表达式语法:syms(‘arg1’, ‘arg2’, …,参数) %把字符变量定义为符号变量syms arg1 arg2 …,参数%把字符变量定义为符号变量的简洁形式说明:syms用来创建多个符号变量,这两种方式创建的符号对象是相同的。
参数设置和前面的sym命令相同,省略时符号表达式直接由各符号变量组成。
说明:参数用来设置限定符号变量的数学特性,可以选择为’positive’、’real’和’unreal’,’positive’表示为“正、实”符号变量,’real’表示为“实”符号变量,’unreal’表示为“非实”符号变量。
如果不限定则参数可省略。
【例3.1】创建符号变量,用参数设置其特性。
>> syms x y real %创建实数符号变量>> z=x+i*y; %创建z为复数符号变量>>real(z) %复数z的实部是实数xans =x【例3.2】创建符号表达式。
>> f1=sym('a*x^2+b*x+c')f1 =a*x^2+b*x+c【例3.3】使用syms命令创建符号变量和符号表达式。
>> syms a b c x %创建多个符号变量>>f2=a*x^2+b*x+c %创建符号表达式f2 =a*x^2+b*x+c3.1.2符号表达式的代数运算符号运算与数值运算的区别主要有以下几点:▪传统的数值型运算因为要受到计算机所保留的有效位数的限制,它的内部表示法总是采用计算机硬件提供的8位浮点表示法,因此每一次运算都会有一定的截断误差,重复的多次数值运算就可能会造成很大的累积误差。
1. p138 第6题在同一坐标轴中绘制以下两条曲线并标注两曲线交叉点。
>> t=0:0.01:pi;>> x1=t;>> y1=2*x1-0.5;>> x2=sin(3*t).*cos(t);>> y2=sin(3*t).*sin(t);>> plot(x1,y1,'r-',x2,y2,'g-')>> axis([-1,2,-1.5,1])>> hold on>> s=solve('y=2*x-0.5','x=sin(3*t)*cos(t)','y=sin(3*t)*sin(t)'); >> plot(double(s.x),double(s.y),'*');截图:p366 第4题绘制极坐标曲线,并分析对曲线形状的影响。
function [ output_args ] = Untitled2( input_args )%UNTITLED2 Summary of this function goes here% Detailed explanation goes heretheta=0:0.01:2*pi;a=input('请输入a的值:');b=input('请输入b的值:');n=input('请输入n的值:');rho=a*sin(b+n*theta);polar(theta,rho,'k');end下面以a=1,b=1,n=1的极坐标图形为根底来分析a、b、n的影响。
对a的值进行改变:比照发现a只影响半径值的整倍变化对b的值进行改变:比照发现b的值使这个圆转换了一定的角度对n的值进行改变:比照发现当n>=2时有如下规律1、当n为整数时,图形变为2n个花瓣状的图形2、当n为奇数时,图形变为n个花瓣状的图形分别让n为2、3、4、5同时改变b和n的值,比照发现图形变为2n个花瓣状,并且还旋转了一定角度1 绘制sin(x)曲线,通过句柄修改曲线的颜色,要求:a)生成曲线的同时,获取句柄,再修改颜色;>> x=0:pi/50:2*pi;>> y=sin(x);>> h=plot(x,y)h =>> set(h,'color','r');截图如下:b〕先生成曲线,然后再获取句柄,再完成颜色修改。