Matlab应用5-2

合集下载

MATLAB 5-2 programming practise

MATLAB 5-2 programming practise

MATLAB @SDU
1
Code 1
• a=input('array:a='); n=length(a); for i=1:n for j=i:n if a(i)>a(j) m=a(i); a(i)=a(j); a(j)=m; end end end
MATLAB @SDU 2
code2
• • • • • • • a=1; s=0; for i=1:64 s=s+a; a=2*a; end num_bag=s/1.4/10^8
MATLAB @SDU
3
code3
• for x=0:19 • for y=0:33 • for z=0:100 • if (x+y+z==100)&(5*x+3*y+z/3==100) • d=[x,y,z] • end • end • end • end
MATLAB @SDU 4
code4
• • • • • • • • • • • dp1(X) % rndp1 is to get similar function as randperm % uses if for structure [m,n]= size(X); if m>1 error('rndp1 only accepts vectors as inputs'); end Y=[ ]; %initial set Y as impty l=n; %number of elements in X for i=1,n k=1+fix(l*rand); %random select the position of X x=X(k); Y=[Y,x]; %add x to Y X(k)=[ ]; %delete X(k) from X l=l-1; end

MATLAB语言基础与应用(第二版)第5章 习题答案

MATLAB语言基础与应用(第二版)第5章 习题答案

第5章习题与答案5.1用矩阵三角分解方法解方程组123123123214453186920x x x x x x x x x +-=⎧⎪-+=⎨⎪+-=⎩ 解答:>>A=[2 1 -1;4 -1 3;6 9 -1] A =2 1 -1 4 -13 6 9 -1 >>b=[14 18 20]; b =14 18 20 >> [L, U, P]=lu(A) L =1.0000 0 0 0.6667 1.0000 0 0.3333 0.2857 1.0000 U =6.0000 9.0000 -1.0000 0 -7.0000 3.6667 0 0 -1.7143 P =0 0 1 0 1 0 1 0 0 >> y=backsub(L,P*b’) y =20.0000 4.6667 6.0000 >> x=backsub(U,y) x =6.5000 -2.5000 -3.5000 5.2 Cholesky 分解方法解方程组123121332352233127x x x x x x x ++=⎧⎪+=⎨⎪+=⎩ 解答:>> A=[3 2 3;2 2 0;3 0 12] A =3 2 32 2 03 0 12>> b=[5;3;7]b =537>> L=chol(A)L =1.7321 1.1547 1.73210 0.8165 -2.44950 0 1.7321>> y=backsub(L,b)y =-11.6871 15.7986 4.0415>> x=backsub(L',y)x =-6.7475 28.8917 49.93995.3解答:观察数据点图形>> x=0:0.5:2.5x =0 0.5000 1.0000 1.5000 2.0000 2.5000 >> y=[2.0 1.1 0.9 0.6 0.4 0.3]y =2.0000 1.1000 0.9000 0.6000 0.4000 0.3000 >> plot(x,y)图5.1 离散点分布示意图从图5.1观察数据点分布,用二次曲线拟合。

matlab5二次规划问题

matlab5二次规划问题

二次规划的标准形式为:min (1/2)X’HX+f’X约束条件:Ax≤b Aeqx=beq,lb≤x≤ub,其中:f、b、beq、lb、ub、x是矢量,H、 A、Aeq为矩阵。

在MATLAB中可以使用quadprog函数来求最小值。

调用格式:x=quadprog (H,f,A,b)x=quadprog (H,f,A,b,Aeq,beq)x=quadprog (H,f,A,b,Aeq,beq,lb,ub)x=quadprog (H,f,A,b,Aeq,beq,lb,ub,x0)x=quadprog (H,f,A,b,Aeq,beq,lb,ub,x0,options) x=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options,P1,P2,…) [x,fval]= quadprog (…)[x,fval,exitflag]= quadprog (…)[x,fval,exitflag,output]= quadprog (…)[x,fval,exitflag,output,lambda]= quadprog (…) fval为目标函数的最优值;其中:H,f,A,b为标准形中的参数,x为目标函数的最小值;x0为初值;Aeq,beq 满足等式约束Aeq.x=beq;lb,ub满足lb lambda是Lagrange乘数,它体现有效约束的个数;output输出优化信息;exitflag为终止迭代的条件:若exitflag>0,表示函数收敛于解x;若exitflag=0,表示超过函数估值或迭代的最大次数;exitflag<0表示函数不收敛于解x;output为优化信息:若参数output=iterations表示迭代次数,output=funccount表示函数赋值次数,output=algorithm表示所使用的算法。

例0-6 计算下面二次规划问题minf(x)= (1/2)x1^2+x2^2- x1x2-2x1-6x2约束条件: x1+x2≤2-x1+x2≤2,2x1+x2≤3;x1≤0; x2≤0解:把二次规划问题写成标准形式:(1/2)XTHX+fTX 这里:H= 1 -1 f= -2 X= x1-1 2 -6 x2在命令窗口键入命令:>>H=[1 –1;-1 2];>>f=[-2;-6];>>A=[1 1;-1 2;2 1];>>b=[2;2;3];>>lb=[zeros(2,1)];>>[x,fval,exitflag,output,lambda]=quadprog(H,f,A,b,[],[],lb)运行以上命令得到的显示结果如下:x= %最优值点 §3 二次规划模型 数学模型: ub x lb beq x Aeqbx A x f Hx x T T x ≤≤=⋅≤⋅+21min其中H 为二次型矩阵,A 、Aeq 分别为不等式约束与等式约束系数矩阵,f,b,beq,lb,ub,x 为向量。

matlab实验

matlab实验

实验一 MATLAB基本操作一、实验目的1、了解MATLAB应用程序环境2、掌握MATLAB语言程序的书写格式和MATLAB语言程序的结构。

3、掌握在MATLAB应用环境下编写程序4、掌握MATALB调试过程,帮助文件5、掌握MATLAB语言上机步骤,了解运行一个MATLAB程序的方法。

6、本实验可在学习完教材第一章后进行。

二、主要仪器及耗材PC电脑,MATLAB6.5软件三、实验内容和步骤1、MATLAB语言上机步骤:(1)、进入系统在C盘或其他盘上找到MATLAB或MATLAB6.5,然后双击其图标打开文件夹。

然后进行编辑源程序->编译->连接->执行程序->显示结果(2)、常用命令编辑切换(F6),编译(F9),运行(CTRL+F9),显示结果(ALT+F5)其它常用命令见“附录一”。

2、有下面的MATLAB程序。

(1)数值计算功能:如,求方程 3x4+7x3 +9x2-23=0的全部根p=[3,7,9,0,-23]; %建立多项式系数向量x=roots(p) %求根(2)绘图功能:如,绘制正弦曲线和余弦曲线x=[0:0.5:360]*pi/180;plot(x,sin(x),x,cos(x));(3)仿真功能:如,请调试上述程序。

3、熟悉MATLAB环境下的编辑命令,具体见附录一。

三、实验步骤1、静态地检查上述程序,改正程序中的错误。

2、在编辑状态下照原样键入上述程序。

3、编译并运行上述程序,记下所给出的出错信息。

4、按照事先静态检查后所改正的情况,进行纠错。

5、再编译执行纠错后的程序。

如还有错误,再编辑改正,直到不出现语法错误为止。

四、实验注意事项1、记下在调试过程中所发现的错误、系统给出的出错信息和对策。

分析讨论对策成功或失败的原因。

2、总结MATLAB程序的结构和书写规则。

五、思考题1、matlab到底有多少功能?2、MATLAB的搜索路径3、掌握使用MATLAB帮助文件实验二 MATLAB 矩阵及其运算一、 实验目的1、了解矩阵的操作,包括矩阵的建立、矩阵的拆分、矩阵分析等2、了解MATLAB 运算,包括算术运算、关系运算、逻辑运算等3、掌握字符串的操作,了解结构数据和单元数据。

matlab及应用实验指导书08.9

matlab及应用实验指导书08.9
7
data=[3 9 45 6; 7 16 -1 5] for n=data x=n(1)-n(2) end
(3)For 循环可按需要嵌套。
for n=1:5 for m=1:5 A(n,m)=n^2+m^2 end disp(n) end x=zeros(1,10); for n=1:10 x(n)=sin(n*pi/10); end
x=0:0.1:2*pi; y=sin(x); x1 =0:0.1:pi/2; y1= sin(x1); plot(x,y,'-r') hold on fill([x1,pi/2],[y1,0],'b')
将上面最后一句分别改为 fill(x1,y1,’b’),情况如何变化。
(二) 三维曲线图
格式 plot3(X,Y,Z,S)
x=linspace(0,2*pi,30); y=sin(x);plot(x,y)
(3)绘制 y=sin(x)图形
x=0:0.1:2*pi; y=sin(x); plot(x,y)
可以给图形加标记,格栅线
x =0:0.1:2*pi; y=sin(x); plot(x,y,'r-') title('正弦曲线') xlabel('自变量 x') ylabel('函数 y=sinx') text(5.5,0,' y=sinx') grid
1
实验一 熟悉 MATLAB 环境
一、实验目的 1、熟悉 MATLAB 主界面,并学会简单的菜单操作; 2、学会简单的矩阵输入与运算符; 3、掌握部分绘图函数。
二、实验原理 MATLAB 是以复杂矩阵作为基本编程单元的一种程序设计语言。它提供了各

第5章弹簧阻尼系统建模

第5章弹簧阻尼系统建模
at 1.9961 bt -0.9970 ct 9.9850 10-5 y1 y-1 t2 f 0
2
7
第五章
MATLAB车辆工程应用实战
5.4 单自由度弹簧阻尼系统
根据单自由度弹簧阻尼系统建立相应平衡方程为:
yt 1 atyk btyk -1 ct f k
c= 2*ksin*wn*m; %阻尼系数
num=[wn^2];
den=[1,2*ksin*wn,wn^2];
G=tf(num,den); %系统开环传递函数
rlocus(G)
impulse(G)%脉冲响应
12
第五章
MATLAB车辆工程应用实战
5.4 单自由度弹簧阻尼系统
5.4.1 机械系统
1.2
5.4 单自由度弹簧阻尼系统
根据单自由度弹簧阻尼系统建立相应平衡方程为:
yt 1 atyk btyk -1 ct f k
at 1.9961 bt -0.9970
0.25
ct 9.9850 10-5 y1 y-1 t2 f 0
u- c1x1 - u - x1 - c2x2 -
k2
x1
x2
-
x1


c2
x2
-
x1

求拉普拉斯变换得:
s2

15s

25

s2
s s2
2
x2
s

5s

1us

20s

1x2
s
17
5.5 多自由度振动系统
第五章
MATLAB车辆工程应用实战
5.3 一阶延迟环节

MATLAB基础及应用课件(下)第5-8章

MATLAB基础及应用课件(下)第5-8章
图5-4中间的下拉框可以选择拟合算法,可以 试用多种拟合算法,以找出最佳拟合图形。例 如选择Smoothing Spline(平滑样条函数), 观察Curve Fitting Tool窗口,如图5-5所示。
图5-5 拟合曲线
第5章 MATLAB数值计算
第5章 MATLAB数值计算
5.4.4 图形窗口的拟合和统计工具
第5章 MATLAB数值计算
在图5-6中的“绘制拟合图”中选择拟合方 法(可同时选多种);
“显示方程”复核框可以选择是否在图形上 显示拟合多项式;
“绘制残差图”复核框选中时会产生第二幅 图形,该图形显示了每一个数据点与计算出来的 拟合曲线之间的距离。
例如选择“线性”和“三次方”拟合方法, 同时选中两个复核框,产生图形如图5-7所示。
MATLAB的图形窗口中提供了简单方便的数 据拟合和基本统计工具。
数据拟合工具可以对所绘制的曲线使用多种 方法进行拟合;
基本统计工具可提供最小值、最大值、平均 值、中位值、标准差、数据范围等统计运算。
1.数据拟合工具
第5章 MATLAB数值计算
使用数据拟合工具首先需要创建一幅图形,在 命令行窗口输入以下程序:
两个矩阵x和y的相关系 数
第5章 MATLAB数值计算
5.2 数值运算 一、 多项式
名称
创建多项 式
求根
求值
多项式乘 法
多项式除 法
多项式求 导
函数格式 P=[ a0 a1 a2 …an-1
an] P=poly(A) roots(P) polyval(P,A)
polyvalm(P,m)
说明
P为多项式(以下各函数中P均为多项式),a0 a1 a2 … an-1 an为按降幂顺序排列的多项式系数 A为向量。创建以向量A中元素为根的多项式

自动控制原理的MATLAB仿真与实践第5章 线性系统的频域分析

自动控制原理的MATLAB仿真与实践第5章  线性系统的频域分析
MATLAB提供了许多用于线性系统频率分析 的函数命令,可用于系统频域的响应曲线、参数分析 和系统设计等。常用的频率特性函数命令格式及其功 能见表5-1。 bode (G):绘制传递函数的伯德图。其中:G为传递
函数模型,如:tf(), zpk(), ss()。 bode(num,den):num,den分别为传递函数的分子与
margin(G);[Gm,Pm,Wcg,Wcp]= margin(G): 直接求出系统G的幅值裕度和相角裕度。 其中:Gm幅值裕度;Pm相位裕度;Wcg幅值裕度 处对应的频率ωc;Wcp相位裕度处对应的频率ωg。
nichols(G);nichols(G,w):绘制单位反馈系统开环传 递尼科尔斯曲线。
20
>>clear; num=[2, 3];den=[1, 2, 5, 7]; %G(s)的分子分母 多项式系数向量
p=roots(den) 求根结果:
%求系统的极点
p=
-0.1981 + 2.0797i
-0.1981 - 2.0797i
-1.6038 可见全为负根,则s右半平面极点数P=0。 绘制Nyquist曲线: >> nyquist(num,den) %绘制Nyquist曲线
本节分别介绍利用MATLAB进行频域绘图和频 率分析的基本方法。
6
5.2.1 Nyquist曲线和Bode图
MATLAB频率特性包括幅频特性和相频特性。 当用极坐标图描述系统的幅相频特性时,通常称为 奈奎斯特(Nyquist)曲线;用半对数坐标描述系 统的幅频特性和相频特性时,称为伯德(Bode) 图;在对数幅值-相角坐标系上绘制等闭环参数( M和N)轨迹图,称为尼克尔斯(Nichols)图。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

eigs求特征值和特征向量所需要的时间比eig所需要 时间长
3-1、矩阵特征参数运算 、
3、行列式运算(方阵):>> det(a) 4、秩 >> rank(a) 5、迹 >> trace(a) %对比 trace(d) 6、范数运算 >> e=norm(a) %(2-范数); 6 >> norm(a,1) %(1-范数) ;norm(a,inf) %(无穷范数); norm(a,'fro') %(Frobenius 范数) 7、条件数运算 >> d=cond(a) % 2-范数的条件数 >> d=cond(a,1) %1范数的条件数,或2、inf 相应范数的条件数)
对角元素的对角阵,满足a*d=d*e
>>[d,e]=eig(a,b) %广义特征值分解,满足a*d=b*d*e Chollesky分解: >>d=chol(a) %a必须为对称正定矩阵,满足a=d*d’ 奇异值分解: >>[u,s,v]=svd(a) %s为对角阵,u、v正交阵,满足a=u*s*v >>[u,s,v]=svd(a,0) %奇异值最佳分解
矩阵特征值计算举例
1、矩阵中有元素与截断误差相当时的 特性值问题:
>> A=[3 -2 -0.9 2*eps;-2 4 -1 -eps; -eps/4
元素
eps/2 -1 0; -0.5 -0.5 0.1 1] %A %A中含有形式“零”
>> [V1,D1]=eig(A);ER1=A*V1-V1*D1 %计算结果有误 >> [V2,D2]=eig(A,'nobalance');ER2=A*V2-V2*D2 %
n i =1 ii
其他矩阵分解计算
正交分解: >> [q,r]=qr(a) %r为上三角阵,q正交阵,满足a=q*r >> [q,r,p]=qr(a) %r上三角阵,q正交阵,p交换矩阵,满足a*p=q*r 特征值分解: >>[d,e]=eig(a) %d以a的特征向量作为列向量组成矩阵,e以特征向量作为主
3-1、矩阵特征参数运算 、
1、逆运算:inv
>> a=[1 2 3;5 8 6;7 2 9], b=inv(a)
2、特征值计算:
eig(主要用于全元素阵)
>>d=eig(a) >>[c,d]=eig(a) [c,d]=eig(a,‘nobalance’)
%仅计算a的特征值 %满足a*c=c*d; %当a中含有与截断误差量级相近的数值时,用此计算
eigs(主要用于大型稀疏矩阵)
>> d=eigs(a),[c,d]=eigs(a) %与eig同 >> [c0,d0]=eigs(a,2,10) %计算矩阵a的 2个在10附近的特征向量和特征值 >> eigs(a,2,'lm') %最大幅值; 'sm'最小幅值;'lr'最大实部;'sr'最小实部;'be'谱的两端
随机方阵
>> t0=clock;[V,D]=eig(A);T_full=etime(clock,t0) % 指令eig的运算时间
>> options.tol=1e-8;options.disp=0;
代结果
% 设置eigs运算精度,不显示中间迭
>> t0=clock;[V2,D2]=eigs(A,1,'lr',options);T_part=etime(clock,t 0) % 计算最大实部特征值和特征向量时指令eigs的运算时间
正确求解方法 %执行eig指令过程中首先调用使原矩阵各元素大致相当的“平 衡”程序,这平衡程序使原方阵中可忽略的小元素的作用被 放大。
矩阵特征值计算举例
2、指令eig与eigs的比较
>> rand('state',1),A=rand(100,100)-0.5; % 产生100阶-0.5-0.5分布的
Байду номын сангаас
3-1、矩阵特征参数运算 、
矩阵特征值函数及其功能
inv det rank poly 矩阵求逆 求矩阵行列式 求矩阵的秩 矩阵特征多项式 trace cond condest condeig 求矩阵的迹 条件数 估计范-1条件数 特征值有关条件数
norm 或 normest eig 或 eigs
矩阵和向量范数 求特征值、特征向量
特殊矩阵生成函数
[] zeros eye ones tril 和triu diag gallery hankel hilb
生成空矩阵 0矩阵 单位矩阵 1矩阵 上下三角阵 对角阵 测试矩阵
invhilb magic pascal
Hilbert阵逆阵 魔术矩阵 n阶pascal阵
服从0-1分布的随机矩阵 rand randn 服从正态分布的随机矩阵 rosser 对称矩阵特征值问题测试 Toeplitz阵 toeplitz
求解非齐次线性方程组
4 x1 + 2 x2 − x3 = 2
例:解方程组:
3x1 − x2 + 2 x3 = 10 11x1 + 3 x2 + x3 = 8
2、正交分解法求解 [Q,R]=qr(A) X=R\(Q\b) 3、直接求解 X=A\b
解:
1、LU分解法求解 A=[4 2 -1;3 -1 2;11 3 1]; b=[2 10 8]'; [L,U]=lu(A) X=U\(L\b)
相当,dim=2与flipup(b)相当,dim=其它值时没意义
线性方程组的求解
含有n个未知数的n个方程构成的方程组称为恰定方程组, 当det(A)≠0时存在唯一解;当 det(A)=0时由增广矩阵作行 的最简形式,从中找出方程组的基础解系及特解 如: a1,1x1 + a1,2x2 + … + a1,nxn = b1 a2,1x1 + a2,1x2 + … + a2,nxn = b2 an,1x1 + an,1x2 + … + an,nxn = bn 记为 AX=b ,其中: a11 a12 ⋯ a1n x1 b1 a x b a22 ⋯ a2 n , A = 21 x = 2 , b = 2 ⋮ ⋮ ⋮ ⋮ ⋮ ⋮ an1 an 2 ⋯ ann xn bn
例:问向量组a1=(1 -2 2 3),a2=(-2 4 -1 3),a3=(-1 2 0 3),a4=(0 6 2 3),a5=(2 -6 3 4)是否线性相关? 若线性相关求一个最大无关组 解: 构成矩阵 a1=[1 -2 2 3]'; a2=[-2 4 -1 3]'; a3=[-1 2 0 3]'; a4=[0 6 2 3]'; a5=[2 -6 3 4]'; A=[a1 a2 a3 a4 a5]
11 1 21 2 n1 n 1n 1 2n 2 nn n
恰定方程组的解
LU分解(也称三角分解),满足:LU=PA 式中,L为主对角元为1的下三角阵,U上三角阵,P是由0或1组成 的交换矩阵。 >> a=[4 2 -1;3 -1 2;11 3 1] ; b=[2 10 8]' >> [l,u,p]=lu(a) %满足l*u=p*a 行列式和逆:detA=det(P-1LU)=±detU=±∏ u A-1=U-1L-1P >> det(a); inv(a); %x=inv(a)*b 在matlab中求解Ax=b可以直接输入指令: >> A\b %x=A\b
矩阵的结构操作
3、矩阵部分删除: >> b(2,:)=[] %删掉b的第2行 >> a(:,2)=[] %删掉a的第2列(不能删除单个元素 ) 4、矩阵结构改变: >> a2=20:2:30,b=reshape(a2,2,3) %将a2转换成2行3列矩阵 >> c=reshape(a2,1,3,2) %将a2转换成2个1行3列矩阵 5、矩阵修改: >> a2(1,3)=0, b(1,:)=a(3,:)
format rat rank(A)
%ans=3<5 线性相关 无关组
B=rref(A) %a1,a2,a4组成一个最大
矩阵的结构操作
1、矩阵标识: >> a=[1:4;5:8;9:12;13:16],b=a(1,3) %标示单个元素 >> b=a(2:3,:) %a第2行到第3行的所有元素组成的向量 >> a(:,2:3) %a第2列到第3列的所有元素组成的向量 >> a(2:3,[1 3]) %a第2行到第3行的第1、3列的元素 >> a([1 3],2:3) %(a第1、3 行第2到3列的元素) 2、矩阵的扩充: 注意保证矩阵行列数目一致 >> a1=zeros(2,4),a3=ones(1,2), a4=zeros(1,2), a=[a1;a3 a4] %(生成3*4的矩阵a)
3、数值计算 、
矩阵特征值和恰定方程求解 稀疏矩阵的存贮与运算 数值微分和积分 常微分方程求解 数组
数组运算
s./B,B.\s 标量s分别除B中对应的元素 A.^n A的每个元素自乘n次 p.^A 以p为底,分别以A的每个元素为 指数求幂值 A.*B 对应元素之积 A./B A的元素被B的对应元素除 B.\A (一定与 A./B 结果相同) exp(A) 以自然对数e为底,分别以A的 元素为指数,求幂 log(A) 对A的各元素求对数 sqrt(A) f(A)
相关文档
最新文档