matlab实验预习报告
一、实验目得 初步熟悉 MATLAB 工作环境,熟悉命令窗口,学会使用帮助窗口查找帮助信息。
命令窗口 二、实验内容(1)熟悉MATLAB平台得工作环境.(2)
熟悉MATLAB 得5 个工作窗口。
(3)MATLAB 得优先搜索顺序.三、实验步骤 1、熟悉MATLAB 得5 个基本窗口 ① mand Window(命令窗口)
② Workspace(工作空间窗口)
③ mand History(命令历史记录窗口)
④ Current Directory(当前目录窗口)
⑤ Help Window(帮助窗口)
(1)命令窗口(mand Window)。
在命令窗口中依次输入以下命令:
>〉x=1 〉> y=[1 2 3
4 5 68 9]; 〉> z1=[1:10],z2=[1:2:5]; >> w=linspace(1,10,10); >〉 t1=ones(3),t2=ones(1,3),t3=ones(3,1)〉〉 t4=ones(3),t4=eye(4)x =1 z1 =
3
9t1 =
1
1
t2 =
1
t3 =
1 t4 =
1
1
1
t4 =
1
0
0
0
0
0
0
0
0
0
0
0
0
思考题: ①
变量如何声明, , 变量名须遵守什么规则、就是否区分大小写。
答:(1)变量声明
1、局部变量 每个函数都有自己得局部变量,这些变量只能在定义它得函数内部使用。当函数运行时,局部变量保存在函数得工作空间中,一旦函数退出,这些局部变量将不复存在。
脚本(没有输入输出参数,由一系列MATLAB命令组成得M文件)没有单独得工作空间,只能共享调用者得工作空间。当从命令行调用,脚本变量存在基本工作空间中;当从函数调用,脚本变量存在函数空间中. 2、全局变量 在函数或基本工作空间内,用global声明得变量为全局变量。例如声明a为全局变量:
>〉global a 声明了全局变量得函数或基本工作空间,共享该全局变量,都可以给它曲赋值。
如果函数得子函数也要使用全局变量,也必须用global声明.3、永久变量 永久变量用persistent声明,只能在M文件函数中定义与使用,只允许声明它得函数存取.当声明它得函数退出时,MATLAB不会从内存中清除它,例如声明a为永久变量: 〉〉persistent a(2)变量命名规则如下: :
始于字母,由字母、数字或下划线组成;区分大小写;可任意长,但使用前N个字符.N与硬件有关,由函数namelengthmax返回,一般N=63; 不能使用关键字作为变量名(关键字在后面给出); 避免使用函数名作为变量名.如果变量采用函数名,该函数失效.(3)区分大小写
②
试说明分号、逗号、冒号得用法。
答:分号:加上分号“;“其作用就是将计算机结果存入内存,但不显示在屏幕上,反之,语句结尾若不加“;”,则表示在语句执行后,在将计算结果存入内存得同时,还将运算结果显示出来.逗号:分割列表
冒号:从什么到什么,比如1:10意思就是——1到10 ③ ③
l inspace())
称为“线性等分”函数, , 说明它得用法。可使用help命令,格式如下:
>>help linspace
④
数 说明函数 ones())、、zero s()、eye()得用法。
答;(1)ones()函数:全部元素都为 1 得常数矩阵;(2)zeros()函数:全部元素都为 0 得矩阵;(3)eye()函数:单位矩阵;
(4)linspace()函数:如 a=linspace(n1,n2,n3),表示在线性空
间上,行矢量得值从 n1 到 n2(2)工作空间窗口(Workspace). 单击工作空间窗口右上角得按钮,将其从MATLAB 主界面分离出来。
① 在工作空间查瞧各个变量,或在命令窗口用who, whos(注意大小写)查瞧各个 变量。
② 在工作空间双击变量,弹出Array Editor 窗口(数组编辑器窗口),即可修改变量。
③ 使用save 命令把工作空间得全部变量保存为my_var、mat 文件。
〉〉save my_var、mat
④ 输入下列命令: 〉〉clear all %清除工作空间得所有变量
观察工作空间得变量就是否被清空。使用load 命令把刚才保存得变量载入工作空间。
>〉load my_var、mat
⑤ 清除命令窗口命令: >〉clc(3)历史命令窗口(mand History)。
打开历史命令窗口,可以瞧到每次运行MATLAB 得时间与曾在命令窗口输入过得命 令,练习以下几种利用历史命令窗口重复执行输入过得命令得方法。
① 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Copy,然后再Paste 到命令窗口。
② 在历史命令窗口中双击要执行得一行命令,或者选中要重复执行得一行或几行命令 后,用鼠标将其拖动到命令窗口中执行。
③ 在历史命令窗口中选中要重复执行得一行或几行命令,右击,出现快捷菜单,选择 Evaluate Selection,也可以执行。
④ 或者在命令窗口使用方向键得上下键得到以前输入得命令。例如,按方向键“↑” 一次,就重新将用户最后一次输入得命令调到MATLAB 提示符下。重复地按方向上键 “↑”,就会在每次按下得时候调用再往前一次输入得命令。类似地,按方向键“↓”得时 候,就往后调用一次输入得命令.按方向键“←“或者方向键“→”就会在提示符得命令 中左右移动光标,这样用户就可以用类似于在字处理软件中编辑文本得方法编辑这些命令。
(4)
当前目录命令窗口(Current Directory).MATLAB 得当前目录即就是系统默认得实施打开、装载、编辑与保存文件等操作时得文 件夹。打开当前目录窗口后,可以瞧到用“save”命令所保存得my_var、mat 文件就是保存在 目录C:MATLAB6p5work 下。
(5)帮助窗口(Help Window)。
单击工具栏得图标,或选择菜单View|Help,或选择菜单Help|MATLAB Help 都能 启动帮助窗口。
① 通过Index 选项卡查找log2()函数得用法,在Search index for 栏中输入需要查找得 词汇“log2”,在左下侧就列出与之最匹配得词汇条目,选择“log2[1]”,右侧得窗口就 会显示相应得内容。
② 也可以通过Search 选项卡查找log2()函数得用法.Search 选项卡与Index 选项卡 不同,Index 只在专用术语表中查找,而Search 搜索得就是整个HTML 帮助文件。
2、MATLAB 得数值显示格式设置 屏幕显示方式有紧凑(pact)与松散(Loose)两种,其中Loose 为默认方式.>〉a=ones(1,30)
〉>format pact
〉〉a 数字显示格式有short、long、short e、long e 等,请参照教材得列表练习一遍。
〉〉format long >>pi
〉〉format short >〉pi
〉>format long 〉〉pi
>>format + 〉〉pi
〉>—pi
3、变量得搜索顺序 在命令窗口中输入以下指令:
>>pi
〉>sin(pi);
>>exist(’pi”)
〉>pi=0;>〉exist(’pi“)
>〉pi
〉〉clear pi 〉>exist('pi’)>>pi
思考题:① 3 次执行exist(’pi’)得结果一样吗?如果不一样,试解释为什么? 答:不一样,pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为pi后来得值,但就是当执行clear pi之后所赋得值被清空,因此pi得值又成为3、1416 ② 圆周率 pi 就是系统得默认常量,为什么会被改变为 0? 答:pi原来就是库存函数,但就是如果被赋值则系统默认被赋予得值为 pi 后来得值,但就是当执行 clear pi之后所赋得值被清空,因此 pi 得值又成为3、1416
实验二
MA TLAB语言基础 一、实验目得 基本掌握 MATLAB 向量、矩阵、数组得生成及其基本运算(区分数组运算与矩阵运算)、常用得数学函数。交接字符串得操作.二、实验内容(1)向量得生成与运算。
(2)矩阵得创建、引用与运算。
(3)
多维数组得创建及运算。
(4)字符串得操作。
三、实验步骤 1、向量得生成与运算 1)
向量得生成 直接输入法: A =
>〉 B=[1;2;3;4;5]
B =
1
2
5 冒号生成发:
〉〉 A=1:2:10 ,B=1:10,C=10:—1:1
A =
3
5
7
B =
5
C =
10
8
4
1 函数法:
Linspace()就是线性等分函数,logspace()就是对数等分函数。
>〉 A=linspace(1,10),B=linspace(1,30,10)A =
Columns 1 through 91、0000
1、0909
1、1818
1、2727
1、3636
1、4545
1、5455
1、6364
1、7273
Columns 10 through 181、8182
1、9091
2、0000
2、0909
2、1818
2、2727
2、3636
2、4545
2、5455
Columns 19 through 272、6364
2、7273
2、8182
2、9091
3、0000
3、0909
3、1818
3、2727
3、3636
Columns 28 through 36
3、4545
3、5455
3、6364
3、7273
3、8182
3、9091
4、0000
4、0909
4、1818
Columns 37 through 454、2727
4、3636
4、4545
4、5455
4、6364
4、7273
4、8182
4、9091
5、0000
Columns 46 through 545、0909
5、1818
5、2727
5、3636
5、4545
5、5455
5、6364
5、7273
5、8182
Columns 55 through 63
5、9091
6、0000
6、0909
6、1818
6、2727
6、3636
6、4545
6、5455
6、6364
Columns 64 through 72
6、7273
6、8182
6、9091
7、0000
7、0909
7、1818
7、2727
7、3636
7、4545
Columns 73 through 81
7、5455
7、6364
7、7273
7、8182
7、9091
8、0000
8、0909
8、1818
8、2727
Columns 82 through 908、3636
8、4545
8、5455
8、6364
8、7273
8、8182
8、9091
9、0000
9、0909
Columns 91 through 999、1818
9、2727
9、3636
9、4545
9、5455
9、6364
9、7273
9、8182
9、9091
Column 100
10、0000
B =
Columns 1 through 91、0000
4、2222
7、4444
10、666713、8889
17、1111
20、333323、555626、7778
Column 1030、0000 >> A=logspace(0,4,5)A =
1
10
100
1000
10000 练习:
使用 logspace()创建1—4得有 10 个元素得行向量。
答案:
>〉 A=logspace(1,10,4*pi)
A =1、0e+010 *
Columns 1 through 9
0、0000
0、0000
0、0000
0、0000
0、0000
0、0000
0、0001
0、0005
0、0035
Columns 10 through 120、0231
0、1520
1、0000 2)向量得运算 维数相同得行向量只见可以相加减,维数相同得列向量也可以相加减,标量可以与向量直接相乘除。
〉〉 A=[1 2 3 4 5],B=3:7,A =
4
B =
7
>〉 AT=A”,BT=B“, AT =
BT =
6
>〉 E1=A+B, E2=A-B
E1 =
6
10E2 =
—2
—2
—2
〉〉 F=AT—BT, F =
-2
—2
〉〉 G1=3*A, G2=B/3, G1 =
12
15
G2 =1、0000
1、3333
1、6667
2、0000
2、3333 向量得点积与叉积运算。
〉〉 A=ones(1,10);B=(1:10); BT=B”;>> E1=dot(A,B)
E1 =
55
〉〉 E2=A*BT
E2 =
〉〉 clear >> A=1:3,B=3:5,A =
3
B =
〉〉 E=cross(A,B)
E = -2
—2 2.矩阵得创建、引用与运算
1)矩阵得创建与引用
矩阵就是由元素构成得矩阵结构,行向量与列向量就是矩阵得特殊形式。
直接输入法:
〉〉 A=[1 2 3;4 5 6]
A =
1
3
4
6
〉〉 B=[ 1 4 75 86 9 ] B =
1
7
8
〉> A(1)
ans =〉〉 A(4:end)
ans =
6 〉〉 B(:,1)ans =
2〉> B(:)ans =
1
8>〉 B(5)
ans =抽取法 〉> clear 〉> A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16] A =
3
4
10
12
13
16 >〉 B=A(1:3,2:3)
B =
6
10
11 〉> C=A([1 3],[2 4])
C =
10
12 〉〉 A([1 3;2 4])ans =
9
5 函数法: 〉〉 A=ones(3,4)A =
1
1
>〉 B=zero(3)
??? Undefined function or method “zero’ for input arguments of type ”double’、>> B=zeros(3)B =
0
0
0
0
0
0
0
0
0 >> C=eyes(3,2)??? Undefined function or method “eyes’ for input arguments of type ”double’、〉> C=eye(3,2)C =
0
0
0
0 >> D=magic(3)D =
6
拼接法 〉〉 clear 〉> A=ones(3,4)A =
1
1
1
1
>〉 B=zeros(3)
B =
0
0
0
0
0
0
0
0
0 >〉 C=eye(4)C =
0
0
0
0
0
0
0
0
0
0
0
0
>〉 D=[A B] D =
1
0
0
0
0
0
0
0
0
0 >〉 F=[A;C] F =
1
1
1
0
0
0
0
1
0
0
0
0
0
0
0
0
拼接函数与变形函数法:
〉〉 clear 〉> A=[0 1;1 1] A =
0
1
1
〉> B=2*ones(2)
B =
2
>> cat(1,A,B,A)ans =
0
1
1
2
2
0
>〉 cat(2 A,B,A)
??? cat(2 A,B,A)Error: Unexpected MATLAB expression、>〉 cat(2,A,B,A)ans =
0
1
0
1
2
2
1
1 >〉 repmat(A,2,2)ans =
0
1
0
1
1
1
0
0
1
1
1
〉> repmat(A,2)ans =
0
0
1
0
1
0
1
练习:使用函数法、拼接法、拼接函数法与变形函数法,按照要求创建以下矩阵:A 为
得全1矩阵、B 为得 0 矩阵/C 为得单位矩阵、D 为得魔方阵、E 由 C
与D纵向拼接而成,F 抽取 E 得2—--5 行元素生成、G 由 F 经变形为得矩阵而得、以 G 为子矩阵用复制函数(repmat)生成得大矩阵H。
答案 :
>〉 A=ones(3,4)
A =
1
1
1
1 〉〉 B=zeros(3,3)B =
0
0
0
0
0
0
0
0
0 >〉 C=eye(3)
C =
1
0
0
0
0
0
0
>〉 D=magic(3)D =
5
4
>> E=[C;D] E =
1
0
0
0
0
0
0
8
〉〉 F=(2:5,:)??? F=(2:5,:)Error: Expression or statement is incorrect—-possibly unbalanced(, {, or [、>〉 F=E(2:5,:)F =
0
0
0
0
〉〉 G=respace(E,3,4)
??? Undefined mand/function “respace’、〉>
G=respace(F,3,4)
??? Undefined mand/function ”respace“、〉> G=reshape(F,3,4)
G =
0
0
1
6
0
0
〉〉 H=repmat(G,2,2)H =
0
0
0
5
0
8
0
0
7
0
0
0
3
1
0
1
0
0
1
0
0
0
0
2)矩阵得运算 矩阵得加减、数乘与乘法
已知矩阵: >> A=[1 2
-1], A =
-1 >〉 B=[-1 0
2] B =
0
>〉 A+B ans =
0
4
1 〉〉 2*A ans =
4
-2 >〉 2*A-3*B ans =
-8 〉〉 A*B ans =
4-4
—2 矩阵得逆矩阵 〉〉 format rat;A=[1 0 1;2 1 2;0 4 6] A =
1
0
0
>> A1=inv(A)A1 =
—1/3
2/3
-1/6
-2
1
0
4/3
-2/3
1/6
>〉 A*A1
ans =
0
0
0
0
0
0
矩阵得除法 >〉 a=[1 2 1;3 1 4;2 2 1],b=[1 1 2],d=b’ a =
1
3
2
b =
1
d =
1
1
>> c1=b*inv(a),c2=b/a c1 =
6/7
3/7
-4/7
c2 =
6/7
3/7
-4/7
>> c3=inv(a)*d, c4=ab c3 =
2/7
-4/7
??? Error using ==〉 mldivide Matrix dimensions must agree、>〉 c3=inv(a)*d,c4=ad c3 =
2/7
-4/7
c4 =
2/7
-4/7
练习: 按下列要求求出各种得矩阵运算得值
求矩阵得秩、特征值与特征向量、矩阵得乘幂与开方;
矩阵得指数与对数
矩阵得提取与翻转 答案:
〉〉 A=[6 3
4 3
—2 5 7 —4
8-1 —3 —7] A =
6
-4
-1
—3
—7 〉> B=rank(A)B =〉> rb=rank(A)
rb =>> [X,Lamda]=eig(A)
??? Error using ==〉 eig Matrix must be square、〉〉 [X,Lamda]=eigs(A)??? Error using ==〉 eigs A must be a square matrix or a function which putes A*x、〉〉 C=[6 3 4
-2 5 7
—1-3] C =
4
—2
8
—1
—3 >> [X,Lamda]=eigs(C)
X =0、8013
-0、1094
-0、1606
0、3638
—0、6564
0、86690、4749
0、7464
-0、4719 Lamda =9、7326
0
0
0
-3、2928
0
0
0
1、5602 〉〉 [X,Lamda]=eig(C)
X =
0、8013
—0、1094
—0、16060、3638
—0、6564
0、86690、4749
0、7464
-0、4719 Lamda =9、7326
0
0
0
-3、2928
0
0
0
1、5602 〉> [X,Lamda]=eig(C)
X =
0、8013
—0、1094
-0、1606
0、3638
—0、6564
0、8669
0、4749
0、7464
—0、4719 Lamda =9、7326
0
0
0
—3、2928
0
0
0
1、5602 〉> D=A^2 ??? Error using ==> mpower Matrix must be square、〉> D=C^2 D =
33
34
〉〉 E=sqrtm(C)E =
2、2447 + 0、2706i0、6974 — 0、1400i0、9422-0、3494i
-0、5815 + 1、6244i
2、1005-0、8405i
1、7620-2、0970i
1、9719 - 1、8471i
-0、3017 + 0、9557i
0、0236 + 2、3845i >> F=expm(C)F =
1、0e+004 *
1、0653
0、5415
0、6323
0、4830
0、2465
0、2876
0、6316
0、3206
0、3745 〉〉 G=logm(C)Warning: Principal matrix logarithm is not defined for A with
nonpositive real eigenvalues、A non-principal matrix
logarithm is returned、〉 In funm at 153
In logm at 27 G =
1、7129 + 0、4686i0、5305-0、2425i0、5429-0、6049i
1、1938 + 2、8123i0、3658 — 1、4552i
—0、5514-3、6305i
-0、0748 - 3、1978i
0、7419 + 1、6546i1、8333 + 4、1282i >> H=fliplr(C)H =
5
-2
—1
>> I=triu(C)I =
0
0
0
-3 〉〉 J=tril(C)
J =
0
0
-2
0
-3 >> K=diag(C)K =
6-3 3.多维数组得创建及运算 1)多维数组得创建 >〉 A1=[1,2,3;4 5 6;7,8,9];A2=reshape([10:18],3,3)A2 =
10
13
16
14
17
12
15〉〉 T1(:,:,1)=ones(3);T1(:,:,2)=zeros(3)T1(:,:,1)
=
1
1
1
T1(:,:,2)=
0
0
0
0
0
0
0
0
0 〉> T2=ones(3,3,2)
T2(:,:,1)=
1
1
1 T2(:,:,2)=
1
1
1 >> T3=cat(3,A1,A2),T4=repmat(A1,[1,1,2])
T3(:,:,1)=
T3(:,:,2)=
10
13
16
17
15T4(:,:,1)
=
2
6
8
T4(:,:,2)=
7
8
2)多维数组得创建
数组运算用小圆点加在运算符得前面表示,以区分矩阵得运算。特点就是两个数组相对应得元素进行运算。
〉〉 A=[1:6];B=ones(1,6);>> C1=A+B,C2=A—B C1 =
2
C2 =
0
3
>> C3=A、*B,C4=B、/A,C5=A、B C3 =
6 C4 =
1、0000
0、5000
0、3333
0、2500
0、2000
0、1667 C5 = 1、0000
0、5000
0、3333
0、2500
0、2000
0、1667
关系运算或逻辑运算得结果都就是逻辑值.>〉 I=A〉3,C6=A(I)
I =
0
0
0
1
1 C6 =
4
6 〉〉 A1=A-3,I2=A1&A A1 =
—2
—1
0
2
I2 =
1
1
0
1
〉〉 I3=~I I3 =
1
0
0
0 4.字符串得操作 1)字符串得创建
>〉 S1=”Ilike MATLAB’ S1 = Ilike MATLAB >> S2=“I'’m a stuent、” S2 = I“m a stuent、〉> S3=[S2,”and’,S1] S3 = I“m a stuent、andIlike MATLAB 2)求字符串长度 〉〉 length(S1)ans =>> size(S1)ans =
13)字符串与一维数值数组得相互转换 >> CS1=abs(S1)CS1 =
101
32
65
84
66 〉> CS2=double(S1)CS2 =
108
105
101
32
77
65
76
>> char(CS2)
ans = Ilike MATLAB >> setstr(CS2)
ans = Ilike MATLAB 练习:用char()与向量生成得方法创建如下字符串AaBbCc、、、、、、XxYyZz、〉> S1=65:90;S2=97:122;〉〉 C=[S1;S2];>>
C=C(:)’;〉>
S3=double(C);char(S3)ans = AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz 实验三
MAL TAB B 数值运算 一、实验目得
掌握 MATLAB 得数值运算及其运算中所用到得函数,掌握结构数组与细胞数组得操作。
二、实验内容
1)
多项式运算。
2)
多项式插值与拟合。
3)
数值为积分。
4)
结构数组与细胞数组。
三、实验步骤
1、多项式运算
1)
多项式表示。在 MATLAB 中,多项式表示成向量得形式.如: 在 MATLAB 中表示为 >> s=[1 3-5 0 9] 2)
多项式得加减法相当于向量得加减法,但必须注意阶次要相同。如不同,低阶次得要补 0。如多项式与多项式相加。
〉> s1=[0 0 2 3 11] 〉〉 s2=[1 2 —5 4 7] 〉〉 s3=s1+s2 答;s1 =
0
0
3s2 =
—5
4
s3 =
—3
18 3)
多项式得乘、除法分别用函数 conv与得 deconv实现。
〉> s1=[2 3 11] >> s2=[1 3 —5 4 7] >〉 s3=conv(s1,s2)
>> s4=deconv(s3,s1)答;s1 =
11 s2 =
1
3
4
s3 =
—29
65
s4 =
1
7 4)
多项式求根用函数roots。
>〉 s1=[2 4 2] >> roots(s1)
答;s1 =
ans =
—1
5)
多项式求值用函数 polyval >> s1=[2 4 1-3] 〉〉 polyval(s1,3)
〉> x=1:10 〉〉 y=polyval(s1,x)答;s1 =
2
-3 ans =
90 x =
1
6
9
10 y =
Columns 1 through 8
193
352
579
886
1285
Columns 9 through 10 练习:求得“商”及余数.〉> s1=[1 0 1];s2=[1 3];s3=[1 1]; 〉> s4=[1 0 2 1]; >> [q,r]=deconv(conv(conv(s1,s2),s3),s4)答;q =
1
4 r =
0
0
-1 2、多项式插值与拟合 有一组实验数据如附表 1—1 所示。
附表 1-1 X 1 2 3 4 5 6 7 8 9 10 Y 16 32 7
1
分别用拟合(二阶至三阶)与插值(线性与三次样条)得方法来估算X=9、5 时 Y 得值。以下就是实现一阶拟合得语句。
〉> x=1:10 >〉 y=[16 32 70 142 260 436 682 1010 1342 1960] 〉> p1=polyfit(x,y,1)
%一阶拟合 >> y1=polyval(p1,9、5)
%计算多项式 P1 在x=9、5 得值 答;x =
2
9y =
Columns 1 through 8
32
70
142
260
436
682
1010
Columns 9 through 10
1342
1960 p1 =
200、9818 -510、4000 y1 =1、3989e+003 3、数值微积分
1)
差分使用 diff 函数实现。
>〉 x=1:2:9 〉〉 diff(x)答;x =
5
ans =
2 2)
可以用因变量与自变量差分得结果相处得到数值微分。
〉> x=linspace(0,2*pi,100);>〉 y=sin(x); >〉 plot(x,y)>〉 y1=diff(y)、/diff(x); 〉〉 plot(x(1:end-1),y1)答;
3)
cumsum 函数求累计积分,trapz 函数用梯形法求定积分,即曲线得面积。
〉〉 x=ones(1,10)
>> cumsum(x)>> x=linspace(0,pi,100); >> y=sin(x); 〉〉 trapz(x,y)〉> p=cumsum(y); >> p(100)*pi/(100—1)答;x =
1
1
ans =
9ans =
1、9998 ans =
1、9998 练习:图 A1就是瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向东方向为 X 轴,由南向北方向为 Y 轴,选择方便得原点,并将从最西边界点到最东边界点在 X 轴上得区间适当划分为若干段,在每个分点得Y方向测出南边界点与北边界点得 Y 坐标Y1与 Y2,这样就得到表 1,根据地图比例尺回到18mm相当于 40Km,试由测量数据计算瑞士国土近似面积,与其精确值 41228 比较。地图得数据见附表 1—2(单位mm).附表 1—2 X 7 10、5 13 17、5 34 40、5 44、5 48 56 61 68、5 76、5 80、5 91 Y1 44 45 47 5
34 41 45 46 Y2 44 59 7
18 1 18 续表 X 96 101 104 106、5 111、5 118 123、5 1 36、5 142 146 150 157 158 Y1 43 37 33 28 32 65 55 54 52 50 66 66 68 Y2 121 124 1 21 1 21 121 116 1 22 83 81 82 86 85 68 提示:由高等数学得知识,一条曲线得定积分就是它与 x 轴所围成得面积,那么两条曲线所围成得面积可由两条曲线得定积分相减得到。、结构数组与细胞数组 1)
机构数组得创建. 〉> student、number=’20050731001’;〉〉 student、name=’Jack”;〉〉 student(2)、number=’20050731002’;〉〉 student(2)、name=’Lucy“; >> student 或者用 struct 函数创建。
>> student=struct(”number“,{’001”,“002’},”name',{'Jack’,“Lucy’});答;student =
1x2 struct array with fields:
number
name 2)
机构数组得操作。
〉> student(1)、subject=[]
%添加 subject 域并赋予空值 〉〉 student(1)、score=[] >〉(studeng)〉>fieldnames(studeng)
〉>fieldnames(student)
〉〉 getfield(student,{2},'name')〉〉 student=rmfield(student,”subject’)
%删除 subject 域 〉〉 student=setfield(student,{1},“score’,90);>> student(2)、score=88;
%比较与上一条语句就是否效果一样 答;student =
1x2 struct array with fields:
number
name
subject student =
1x2 struct array with fields:
number
name
subject
score ??? Undefined function or variable ’studeng’、练习:创建一结构数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。结构数组得大小为 2×2。
3)
细胞数组得创建。
〉> A={’How are you!”,ones(3);[1 2;3 4],{“cell’}};
%直接创建
〉〉 B(1,1)={’Hello world”};
%由各个细胞元素创建
>> B(1,2)={magic(3)};
>〉 B(2,1)={[1 2 3 4]};答
或者用cell 函数先创建空得细胞数组,然后再给各个元素赋值 c=cell(1,2); >> c(1,1)={’Hello world’};>> c(1,2)={magic(3)}; 〉〉 c(1,3)={[1 2 3 4]}; 4)
细胞数组得操作。
〉> ans1=A(1,1)>> ans2=A(1,1)>〉 whos ans1 ans2 〉〉 celldisp(A)〉> a1=A{2,1}(1,2)>〉 [a2 a3]=deal(A{1:2})
答;ans1 =
’How are you!’ ans2 =
’How are you!’
Name
Size
Bytes
Class
Attributes
ans1
1x1
84
cell
ans2
1x1
84
cell
A{1,1} = How are you!
A{2,1} =
A{1,2} =
1
A{2,2}{1} = cell a1 =a2 = How are you!a3 =
1
2
实验四
MA LT AB B 符号运算
一、实验目得
掌握符号变量与符号表达式得创建,掌握MALTAB得symbol工具箱得一些基本运用。
二、实验内容
1)
符号变量、表达式、方程及函数得表示。
2)
符号微积分运算.
3)
符号表达式得操作与转换.4)
符号微分方程求解.三、实验步骤1、符号运算得引入
在数值运算中如果求,则可以不断让得让x趋近0,一球得表达式趋近什么数,但终究不能令 x=0,因为在数值运算中 0 不就是能作除数得。MATLAB得符号运算能解决这内问题。输入如下命令: 〉> f=sym(’sin(pi*x)/x')
>> limit(f,’x“,0)答;f = sin(pi*x)/x ans = pi 2 2、符号常量、符号变量、符号表达式得创建
1)
使用 sym()创建 输入以下命令,观察 Workspace 中 A、B、f就是什么内性得数据,占用多少字节得内存空间。
>〉 A=sym(”1’)
%符号常量 〉〉 B=sym(’x’)
%符号变量 >> f=sym(’2*x^2+3*x-1’)
%符号表达式 >> clear >> f1=sym(“1+2”)
%有单引号,表示字符串 >〉 f2=sym(1+2)
%无单引号 >〉 f2=sym(1+2)
〉> f4=sym(“2*x+3’)
%为什么出错 〉〉 x=1 〉〉 f4=sym(2*x+3)
答;A = 1 B = x f = 2*x^2+3*x-1 f1 = 1+2 f2 = 3 f2 = 3 f4 = 2*x+3 x =f4 = 5 通过瞧 MATLAB 得帮助可知,sym()得参数可以使字符串或就是数值类型,无论就是哪种类型都会生成符号类型数据。
2)
使用 syms创建 〉> clear >〉 syms x y z 〉> x,y,z 〉〉 f1=x^2+2*x+1 >〉 f2=exp(y)+exp(z)^2 >> f3=f1+f2 答;x = x y = y z = z f1 = x^2+2*x+1 f2 = exp(y)+exp(z)^2 f3 = x^2+2*x+1+exp(y)+exp(z)^2 3 3、符号矩阵创建
>〉 syms a1 a2 a3 a4 〉〉 A=[a1 a2;a3 a4] 〉> A(1),A(3)答;A = [ a1,a2] [ a3, a4] ans = a1 ans = a2 4 4、符号算术运算
1)
符号向量相乘、相除 符号量相成与数值量相乘一样,分成矩阵乘与数组乘。
〉> a=sym(5);b=sym(7); 〉> c1=a*b >〉 c2=a/b >> a=sym(5);B=sym([3 4 5]);>〉 C1=a*B,C2=aB >> syms a b >> A=[5 a;b 3];B=[2*a b;2*b a];〉> C1=A*B,C2=A、*B >〉 C3=AB,C4=A、/B 答;c1 =
35 c2 = 5/7 C1 = [ 15, 20, 25] C2 = [ 3/5, 4/5,1] C1 = [ 10*a+2*a*b,5*b+a^2] [
2*a*b+6*b,b^2+3*a] C2 = [
10*a,a*b] [ 2*b^2,3*a] C3 = [
2*a*(b—3)/(—15+a*b),(a^2-3*b)/(—15+a*b)] [
2*b*(a-5)/(-15+a*b), —(5*a-b^2)/(-15+a*b)] C4 = [ 5/2/a,a/b] [
1/2, 3/a] 2)
符号数值任意精度控制与运算 任意精度得 VPA 运算可以使用命令 digits(设定默认得精度)与vpa(对指定对象以新得精度进行计算)来实现。
>〉 a1=sym(’2*sqrt(5)+pi')
〉> a=sym(’2*sqrt(5)+pi’)〉〉 b=sym(2*sqrt(5)+pi)
>> digits >> vpa(a)>> digits(15)>〉 vpa(a)〉〉 c1=vpa(a,56)
〉〉 c2=vpa(b,56)
答 a1 = 2*sqrt(5)+pi a = 2*sqrt(5)+pi b = 8572296331135796*2^(-50)
Digits = 32 ans = 7、637263128 ans = 7、637 c1 = 7、6372631285535581572696
c2 = 7、6372726175781250000000 注意观察c1 与c2 得数值类型,c1 与 c2 就是否相等。
3)
符号类型与数值类型得转换 使用命令sym可以把数值型对象转换成有理数性符号对象,命令vpa可以讲数值型对象转换为任意精度得 VPA 型符号对象.使用 double,numeric 函数可以将有理数型与 VPA 型符号对象转换成数值对象、〉> clear >〉 a1=sym('2*sqrt(5)+pi’)
>〉 b1=double(a1)
%符号转数值 >> b2=isnumeric(b1)
%判断就是否转换成了数值 >> a2=vpa(a1,70)
%数值转符号 答;a1 = 2*sqrt(5)+pi b1 =7、6137 b2 =
1 a2 = 7、6372631285535589083128858 5 5、、符号表达式得操作与转换
1)独立变量得确定原则 独立变量得确定原则:在符号表达式中默认变量就是惟一得.MATLAB 会对单个英文小写字母(除 i、j外)进行搜索,且以 x 为首选独立变量。如果表达式中字母不唯一,且无 x,就选在字母表最接近x 得字母.如果有相连得字母,则选择在字母表中较后得那一个。例如:中,y 就是默认独立变量。,t 就是默认独立变量。
输入以下命令,观察并分析结果。
>> clear >〉 f=sym(”a+b+i+j+x+y+xz’)
>〉 findsym(f)
〉> findsym(f,1)>〉 findsym(f,2)>> findsym(f,3)
>〉 findsym(f,4)〉〉 findsym(f,5)>〉 findsym(f,6)答;f = a+b+i+j+x+y+xz ans = a, b, j,x,xz, y ans = x ans = x,xz ans =
x,xz,y ans = x,xz,y,j ans = x,xz,y,j,b ans = x,xz,y,j,b,a 2)符号表达式得化简 符号表达式化简主要包括表达式美化(pretty)、合并同类项(collcet)、多项式展开(expand)、因式分解(factor)、化简(simple或 simplify)等函数。
①合并同类项(collect)。分别按 x 得同幂项与e指数同幂项合并表达式: . 〉〉 syms x t; >〉 f=(x^2+x^exp(—t)+1)*(x+exp(-t));〉〉 f1=collect(f)〉〉 f2=collect(f,’exp(-t)“)答;f1 = x^3+exp(-t)*x^2+(x^exp(-t)+1)*x+(x^exp(-t)+1)*exp(-t)
f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x ②对显示格式加以美化(pretty)。针对上例,用格式美化函数可以使显示得格式更符合数学书写习惯。
>〉 pretty(f1)>〉 pretty(f2)
答;f1 = x^3+exp(-t)*x^2+(x^exp(—t)+1)*x+(x^exp(—t)+1)*exp(-t)
f2 =(x^2+x^exp(-t)+1)*exp(-t)+(x^2+x^exp(—t)+1)*x >〉
pretty(f1)pretty(f2)
3
2
exp(-t)
exp(-t)
x
+ exp(—t)
x
+(x
+ 1)
x +(x
+ 1)exp(—t)
2
exp(—t)
exp(-t)
(x
+ x
+ 1)exp(-t)+(x
+ x
+ 1)x 注意与直接输出得 f1 与 f2 对比。
③多项式展开(expand)。展开成 x 不同次幂得多项式、〉> syms x 〉> f=(x—1)^12;〉> expand(f)〉〉 pretty(expand(f))
答;ans = 1+x^12-12*x^11+66*x^10—220*x^9+495*x^8—792*x^7+924*x^6-792*x^5+495*x^4-220*x^3+66*x^2—12*x
7
6
5
+ x
- 12 x
+ 66 x
— 220 x
+ 495 x
x
+ 924 x
- 792 x
+ 495 x
- 220 x
+ 66 x
- 12 x ④ 因式分解(factor)。将表达式做因式分解。
>> syms x;f=x^12—1; 〉> pretty(factor(f))
答;ans = 1+x^12—12*x^11+66*x^10—220*x^9+495*x^8-792*x^7+924*x^6—792*x^5+495*x^4—220*x^3+66*x^2-12*x
12
11
8
6
5
+ x
— 12 x
+ 66 x
— 220 x
+ 495 x
x
+ 924 x
— 792 x
3
+ 495 x
— 220 x
+ 66 x
- 12 x 〉〉 syms x;f=x^12—1;pretty(factor(f))
2
2
(x-1)(1 + x
+ x)(1 + x)
(1 — x + x)(1 + x)(x
— x
+ 1)⑤化简(simple或 simplify)。
将函数化简.〉〉 clear 〉〉 syms x;f=(1/x^3+6/x^2+12/x+8)^(1/3); 〉> g1=simple(f)>〉 g2=simplify(f)
答;g1 =(2*x+1)/x g2 =((2*x+1)^3/x^3)^(1/3)6 6、符号表达式得变量替换
subs 函数可以对符号表达式中得符号变量进行替换 >> clear >> f=sym(’(x+y)^2+4*x+10’)〉〉 f1=subs(f,’x',’s')
%使用 s 替换x >〉 f2=subs(f,”x+y’,“z’)答;f =(x+y)^2+4*x+10 f1 =(s+y)^2+4*s+10 f2 = z^2+4*x+10 7、符号极限、符号积分与微分
1)
求极限函数得调用格式 limit(F,x,a)
%返回符号对象 F 当 x→a 时得极限 limit(F,a)
%返回符号对象 F 当独立变量*→a 时得极限
limit(F)
%返回符号对象 F 当独立变量→0(a=0)时得极限 limit(F,x,a,’right’)
%返回符号对象 F 当 x→a 时得右极限 limit(F,x,a,’left”)
%返回符号对象F当 x→a 时得左极限 例一:
〉〉 clear >> f=sym(“sin(x)/x+a*x”)
>〉 limit(f,“x’,0)
%以 x 为自变量求极限 >> limit(f,”a’,0)
%以 a 为自变量求极限 >> limit(f)
%在默认情况下以 x 为自变量求极限 >> findsym(f)
%得到变量并且按字母表顺序排列 答‘f = sin(x)/x+a*x ans = 1 ans = sin(x)/x ans = 1 ans = a,x 例二: >> clear >〉 f=sym('sqrt(1+1/n));
〉〉 limit(f,n,inf)
%求 n 趋于无穷大时得极限
2)
求积分函数得调用格式 int(F)
%求符号对象 F 关于默认变量得不定积分 int(F,v)
%求符号对象 F 关于指定变量 v 得不定积分 int(F,a,b)
%求符号对象 F 关于默认变量得从 a 到 b 得定积分 int(F,v,a,b)
%求符号对象 F 关于指定变量得从 a 到b得定积分 3)
求微分方程得调用格式 diff(F)
%求符号对象 F 关于默认变量得微分 diff(F,v)
%求符号对象 F 关于指定变量 v 得微分 diff(F,n)
%求符号对象 F 关于默认变量得 n 阶微分,n 为自然数 1、2、3…… diff(F,v,n)%求符号对象 F 关于指定变量 v 得 n 阶微分 8 8、符号方程求解
1)常规方程求解函数得调用格式 g=solve(eq)
%求方程(或表达式或字串)eq 关于默认变量得解
g=solve(eq,var)
%求方程(或表达式或字串)eq 关于指定变量 var 得解 g=solve(eq1,eq2,…、,eqn,var1,var2,…,varn)
%求方程(或表达式或字串)eq1,eq2,eq3,……eqn 关于指定变量组var1,var2,……,varn)得解 求一元二次方程得解.其求解方法有多种形式:
① seq=solve(“a*x^2+b*x+c')
② seq=solve(’a*x^2+b*x+c=0”)③ eq=’a*x^2+b*x+c“;④ eq=”a*x^2+b*x+c=0’; seq=solve(eq)
⑤sym x a b c
eq=a*x^2+b*x+c seq=solve(eq)
2)常微分方程求解 求解常微分方程得函数就是 dsolve。应用此函数可以求得常微分方程(组)得通解,以及给定边界条件(或初始条件)后得特解。
常微分方程求解函数得调用格式:
r=dsolve(“eq1,eq2,…’,’cond1,cond2,…’,’v’)r=dsolve(’eq1’,’eq2”,…,“cond1’,’cond2’,…,’v”)说明: ① 以上两式均可给出方程 eq1,、qeq2 对应初始条件 cond1、cond2 之下得一 v 作为解变量得各微分方程得解。
② 常微分方程解得默认变量为 t。
③ 第二式中最多可接受得输入式就是 12 个。
④ 微分方程得表达方法。
在用 MATLAB 求解常微分方程时,用大写字母 Dy表示,用D2y表示,依此类推。
边界条件以类似于 y(a)=b 给出。其中 y 为因变量,a、b 为常数、如果初始条件给得不够,求出得解为含有 C1、C2 等待定常数得通解。
例一 求微分方程得通解、练习:(1)求。
(2)求函数得积分;求函数得导数(3)计算定积分(4)求下列线性方程组得解
(5)求解但 y(0)=2,在 z(0)=7 时,微分方程组得解。
实验五
MATLA B 程序设计
一、实验目得
掌握 MATLAB 程序设计得主要方法,熟练编写 MATLAB函数、二、实验内容
(1)M 文件得编辑。
(2)程序流程控制结构。
(3)子函数调用与参数传递。
(4)局部变量与全局变量。
三、实验步骤1、M M 文件得编辑
选择MATLAB 得菜单,打开新得M文件进行编辑,然后输入以下内容,并保存文件名为 expl、m。
s=0;for n=1:100
s=s+n;end s 答;s =
5050 保存好文件后,在命令窗口输入expl 即可运行该脚本文件,主义观察变量空间。紧接着创建 M 函数文件,然后输入以下内容,并保存文件名为 expl2、m。
function s=expl2(x)
s=0;for n=1:x
s=s+n; end
保存好文件后,在命令窗口输入
>〉 clear 〉> s=expl2(100)以 open 命令可以打开 M 文件进行修改。
〉〉open conv
%打开 conv 函数 2 2、程序流程控制结构
1)
for 循环结构
>〉 for n=1:10 n end 答;n =n =n =n =n =n =
6 n =n =
n =n =
另一种形式得 for 循环: 〉> n=10:—1:5;>〉 for i=n
%循环得次数为向量 n 得列数 i end 答;i =
10 i =i =i =i =i =2)
while 循环结构 在命令窗口输入:
clear x=1;while 1 x=x*2 end 将会瞧到 MATLAB 进入死循环因为 while 判断得值恒为真,这时须按 Ctrl+C键来中断运行,并且可瞧到 x 得值为无穷大。
练习:
(1)请把 exp2、m函数文件用 while 循环改写。
(2)用公式求得近似值,直到最后一项得绝对值小于为止,试编写M脚本文件、3)
if-else—end 分支结构
if—else—end 分支结构有如下 3 种形式。
(a)
if
表达式 语句组 1 end(b)
if
表达式 语句组 1 else 语句组2 end(c)
if
表达式 A
语句组 1 else if 表达式 B 语句组 2 else if 语句组 3 …… else
语句组 n end 4)
switch—case结构 创建 M 脚本文件 exp3、m,输入以下内容并在命令窗口中运行。
%功能:判断键盘输入得数就是奇数还就是偶数 n=input(’n=');if isempty(n)
error(’please input n');
n=input(“n=’);end switch mod(n,2)
case 1
A=’奇数'
case 0
A=’偶数” End 答;n=input('n=’); if isempty(n)
error('please input n’);
n=input(“n=’); end switch mod(n,2)
case 1
A=”奇数“
case 0
A=”偶数' end n=1 A = 奇数 3、子函数与参数传递
有一个函数,试编写实现该函数得函数文件.function g=expl4(x)
%主函数 g=0;for n=1:x
g=g+fact(n);
%调用子函数 end
function y=fact(k)
%子函数 y=1; for n=1:k
y=y*n; end 输入参数可以有函数 nargin 计算,下面得例子 sinplot(),当知输入一个参数 w 时,sinplot()函数会给p赋予默认值 0。4、局部变量与全局变量
声波的传播速度v与声波频率f和波长的关系为:fv可见,只要测出声波的频率f和波长,即可求出声速。f可由声源的振动频率得到,因此,实验的关键就是如何测定声波波长。
根据超声波的特点,实验中可以采用几种不同的方法测出超声波的波长:
1. 驻波法(共振干涉法)
实验时将信号发生器输出的正弦电压信号接到发射超声换能器上,超声发射换能器通过电声转换,将电压信号变为超声波,以超声波形式发射出去。接收换能器通过声电转换,将声波信号变为电压信号后,送入示波器观察。
由声波传播理论可知,从发射换能器发出一定频率的平面声波,经过空气传播,到达接收换能器。如果接收面和发射面严格平行,即入射波在接收面上垂直反射,入射波与反射波相互干涉形成驻波。此时,两换能器之间的距离恰好等于其声波半波长的整数倍。在声驻波中,波腹处声压(空气中由于声扰动而引起的超出静态大气压强的那部分压强)最小,而波节处声压最大。当接收换能器的反射界面处为波节时,声压效应最大,经接收器转换成电信号后从示波器上观察到的电压信号幅值也是极大值,所以可从接收换能器端面声压的变化来判断超声波驻波是否形成。
移动卡尺游标,改变两只换能器端面的距离,在一系列特定的距离上,媒质中将出现稳定的驻波共振现象,此时,两换能器间的距离等于半波长的整数倍,只要我们监测接收换能器输出电压幅度的变化,记录下相邻两次出现最大电压数值时(即接收器位于波节处)卡尺的读数(两读数之差的绝对值等于半波长),则根据公式:fv就可算出超声波在空气中的传播速度,其中超声波的频率可由信号发生器直接读得。
实验仪器
声速测定仪如下图所示,在支架和丝杠上相向安置两个固有频率相同的压电陶瓷换能器,左端支架上固定的是发射换能器,右端可移动底座安装的是接收换能器,当旋转带刻度手轮及借助螺旋测微装置,就可精密地调节并测出两换能器之间的距离。
中两换能器的核心元件(压电片)都是由压电材料(如石英、锆钛酸铅陶瓷等)做成,压电材料具有正压电效应(在应力作用下两极产生异号电荷,两极间产生电位差)和逆压电效应(压电材料两端间加上外加电压时能产生应变)。利用上述可逆效应将压电材料制成的压电换能器可以实现声能与电能的相互转换。当左边压电换能器S1处于交变电场中时,利用逆压电效应可以把电能转换为声能作为声波发生器;而右边压电换能器S2则是利用正压电效应,将接收的声振动转化成电振动作为声波接收器。
实验内容
1.用驻波法(共振法)测声速:
按图连接装置,将信号源调至压电陶瓷换能器的固有频率,示波器叠加方式用“Y2”,内触发电源亦选“Y2”或“Y1/Y2”,连续改变接收器位置,观察声压变化与接收器位置的关系,由此测定超声波波长。 2.用相位比较法(李萨如图形法)测声速:
2014年02月13日
凡事预则立,不预则废.为让学生养成良好的自学习惯,提高学生成绩,圆满完成下学期的教学任务.今年寒假期间,我校对七、八、九年级语、数、外、理、化学科进行了大预习。开学以后,我校对学生的预习情况进行了检测。通过检测达到了预设目的,取得了较好的效果。
取得成绩
1.学生养成了自主学习的习惯,掌握了预习的方法和步骤。
2.学生掌握了各学科最基础的知识,为以后课堂上的高效学习扫清了障碍,提高了学习效率。
3.养成了自主学习的方法。学生都能按照预习的要求,学会用不同色笔对重点内容,疑难问题做批注。在下阶段学习时,学生带着预习的问题听课,增强了学生的好奇心、求知欲,培养了学生学习的兴趣。
4.对要求掌握的字词,名言警句、定理、定义、概念公式能熟记于心,为今后的学习打下坚实的基础。
存在问题
1.大部分学生预习方法不当,缺少学习方法的指导。2.在预习时,依靠教辅资料,热衷寻求现成的结论。3.预习目标不明确。
三 改进措施
1、预习前,制定详实的预习方案,对预习的目标、内容、方法指导等方面做具体的要求。
2、根据学情,分层次,分梯度设置有针对性的问题。
3、注重预习的方法的指导,如做笔记,做圈点批注等。注重假期预习的过程的监督和返校后的检测。
实验人员:-------
-------学
号:--------
---------
实验日期:20150618 摘要
本文主要研究的是一级倒立摆的控制问题,并对其参数进行了优化。倒立摆是典型的快速、多变量、非线性、强耦合、自然不稳定系统。由于在实际中有很多这样的系统,因此对它的研究在理论上和方法论上均有深远的意义。本文首先简单的介绍了一下倒立摆以及倒立摆的控制方法,并对其参数优化算法做了分类介绍。然后,介绍了本文选用的优化参数的状态空间极点的配置和PID控制。接着建立了一级倒立摆的数学模型,并求出其状态空间描述。本文着重讲述的是利用状态空间中极点配置实现方法。最后,用Simulink对系统进行了仿真,得出在实际控制中是两种比较好的控制方法。
Abstract
This paper mainly studies the level of the inverted pendulum control problem, and its parameters are optimized.Inverted pendulum is a typical rapid, multi-variable, nonlinear, strong coupling, natural unstable system.In practice, however, because there are a lot of such a system, so the study of it in theory and methodology have profound significance.This article first introduced the inverted pendulum, and simple of the inverted pendulum control method, made a classification and the parameter optimization algorithm is introduced.And then, introduced in this paper, choose the optimization of the parameters of state space pole configuration and PID control.Then set up the level of the mathematical model of inverted pendulum, and find out the state space description.This paper focuses on the pole assignment method is the use of state space.Finally, the system are simulated using Simulink, it is concluded that in the actual control is two good control method.This paper mainly studies the level of the inverted pendulum control problem, and its parameters are optimized.Inverted pendulum is a typical rapid, multi-variable, nonlinear, strong coupling, natural unstable system.In practice, however, because there are a lot of such a system, so the study of it in theory and methodology have profound significance.This article first introduced the inverted pendulum, and simple of the inverted pendulum control method, made a classification and the parameter optimization algorithm is introduced.And then, introduced in this paper, choose the optimization of the parameters of state space pole configuration and PID control.Then set up the level of the mathematical model of inverted pendulum, and find out the state space description.This paper focuses on the pole assignment method is the use of state space.Finally, the system are simulated using Simulink, it is concluded that in the actual control is two good control method.目 录 引言..................................................4 1.1 倒立摆介绍以及应用.........................................4 1.2 倒立摆的控制方法...........................................5
2单级倒立摆数学模型的建立...............................6 2.1传递函数...................................................8 2.2状态空间方程...............................................9
3系统Matlab 仿真和开环响应.............................11 4 系统设计.............................................15 4.1极点配置与控制器的设计....................................15 4.2系统仿真:................................................16 4.3仿真结果..................................................17 4.4根据传递函数设计第二种控制方法-----PID串级控制............18
5结 论
...............................................19引言
1.1 倒立摆介绍以及应用
倒立摆控制系统是一个复杂的、不稳定的、非线性系统,是进行控制理论教学及开展各种控制实验的理想实验平台。对倒立摆系统的研究能有效的反映控制中的许多典型问题:如非线性问题、鲁棒性问题、镇定问题、随动问题以及跟踪问题等。通过对倒立摆的控制,用来检验新的控制方法是否有较强的处理非线性和不稳定性问题的能力。
通过对它的研究不仅可以解决控制中的理论和技术实现问题,还能将控制理论涉及的主要基础学科:力学,数学和计算机科学进行有机的综合应用。其控制方法和思路无论对理论或实际的过程控制都有很好的启迪,是检验各种控制理论和方法的有效的“试金石”。倒立摆的研究不仅有其深刻的理论意义,还有重要的工程背景。在多种控制理论与方法的研究与应用中,特别是在工程实践中,也存在一种可行性的实验问题,使其理论与方法得到有效检验,倒立摆就能为此提供一个从理论通往实践的桥梁,目前,对倒立摆的研究已经引起国内外学者的广泛关注,是控制领域研究的热门课题之一。
倒立摆不仅仅是一种优秀的教学实验仪器,同时也是进行控制理论研究的理想实验平台。由于倒立摆系统本身具有的高阶次、不稳定、多变量、非线性和强耦合特性,许多现代控制理论的研究人员一直将它视为典型的研究对象,不断从中发掘出新的控制策略和控制方法,相关的科研成果在航天科技和机器人学方面获得了广阔的应用。二十世纪九十年代以来,更加复杂多种形式的倒立摆系统成为控制理论研究领域的热点,每年在专业杂志上都有大量的优秀论文出现。因此,倒立摆系统在控制理论研究中是一种较为理想的实验装置。
倒立摆主要应用在以下几个方面:(1)机器人的站立与行走类似于双倒立摆系统,尽管第一台机器人在美国问世至今已有三 十年的历史,机器人的关键技术--机器人的行走控制至今仍未能很好解决。(2)在火箭等飞行器的飞行过程中,为了保持其正确的姿态,要不断进行实时控制。
(3)通信卫星在预先计算好的轨道和确定的位置上运行的同时,要保持其稳定的姿态,使卫星天线一直指向地球,使它的太阳能电池板一直指向太阳。(4)侦察卫星中摄像机的轻微抖动会对摄像的图像质量产生很大的影响,为了提高摄像的质量,必须能自动地保持伺服云台的稳定,消除震动。
(5)为防止单级火箭在拐弯时断裂而诞生的柔性火箭(多级火箭),其飞行姿态的控制也可
以用多级倒立摆系统进行研究。
由于倒立摆系统与双足机器人、火箭飞行控制和各类伺服云台稳定有很大相似性,因此对倒立摆控制机理的研究具有重要的理论和实践意义。
1.2 倒立摆的控制方法
倒立摆有多种控制方法。对倒立摆这样的一个典型被控对象进行研究,无论在理论上和方法上都具有重要意义。不仅由于其级数增加而产生的控制难度是对人类控制能力的有力挑战,更重要的是实现其控制稳定的过程中不断发现新的控制方法,探索新的控制理论,并进而将新的控制方法应用到更广泛的受控对象中。当前,倒立摆的控制方法可分为以下几类 :
(1)线性理论控制方法
将倒立摆系统的非线性模型进行近似线性化处理,获得系统在平衡点附近的线性化模型,然后再利用各种线性系统控制器设计方法,得到期望的控制器。PID控制、状态反馈控制、能量控制]、LQR控制算法是其典型代表。
(2)预测控制和变结构控制方法
预测控制:是一种优化控制方法,强调的是模型的功能而不是结构。变结构控制:是一种非连续控制,可将控制对象从任意位置控制到滑动曲面上仍然保持系统的稳定性和鲁棒性,但是系统存在颤抖。预测控制、变结构控制和自适应控制在理论上有较好的控制效果,但由于控制方法复杂,成本也高,不易在快速变化的系统上实时实现
2单级倒立摆数学模型的建立
在忽略了空气流动,各种摩擦之后,可将倒立摆系统抽象成小车和匀质杆组成的系统,如下图1所示
图1 单级倒立摆模型示意图
那我们在本实验中定义如下变量:
M
小车质量
(本实验系统
1.096 Kg)m
摆杆质量
(本实验系统
0.109 Kg)b
小车摩擦系数(本实验系统
0.1 N/m/sec)l
摆杆转动轴心到杆质心的长度(0.25 m)I
摆杆惯量
(0.0034 kg*m*m)F
加在小车上的力
x
小车位置
φ
摆杆与垂直向上方向的夹角 θ
摆杆与垂直向下方向的夹角(考虑到摆杆初始位置为竖直向下)下面我们对这个系统作一下受力分析。下图2是系统中小车和摆杆的受力分析图。其中,N和P为小车与摆杆相互作用力的水平和垂直方向的分量。
注意:在实际倒立摆系统中检测和执行装置的正负方向已经完全确定,因而矢量方向定义如图,图示方向为矢量正方向。
图2 倒立摆模型受力分析
分析小车水平方向所受的合力,可以得到等式:
应用Newton方法来建立系统的动力学方程过程如下:
分析小车水平方向所受的合力,可以得到以下方程:
FbxN Mx由摆杆水平方向的受力进行分析可以得到下面等式:
Nmd2dt2
(xlsin)
2sinmlcosmlx即 Nm
把这个等式代入上式中,就得到系统的第一个运动方程:
cosml2sinFbxml(Mm)x(1)
为了推出系统的第二个运动方程,我们对摆杆垂直方向上的合力进行分析,可以得到下面方程:
d2Pmgm2(lcos)dtsinml2cos即:Pmgml
力矩平衡方程如下:
PlsinNlcosI
注意:此方程中力矩的方向,由于,coscos,sinsin,故等式前面有负号。
21ImlN3P合并这两个方程,约去和,由得到第二个运动方程:
43mglsinmlcosml2x(2)
设(是摆杆与垂直向上方向之间的夹角),假设与1(单位是
d()20sin,dtcos1,弧度)相比很小,即《1,则可以进行近似处理:。用u来代表被控对象的输入力F,线性化后两个运动方程如下:
4gx3lubxmlx(Mm)(3)
2.1传递函数
对方程组(3)进行拉普拉斯变换,得到
422l(s)sg(s)X(s)s3(Mm)X(s)s2bX(s)sml(s)s2U(s)(4)
注意:推导传递函数时假设初始条件为0。
由于输出为角度,求解方程组(4)的第一个方程,可以得到
4gX(s)[l2](s)3s
把上式代入方程组(4)的第二个方程,得到
(Iml2)g(Iml2)g2(Mm)(s)sb2(s)sml(s)s2U(s)ssmlml
整理后得到传递函数:
ml2sqs443(s)U(s)bml2qs3(Mm)mgl2bmglssqq
22q[(Mm)(Iml)(ml)] 其中
2.2状态空间方程
系统状态空间方程为
AXBuXyCXDu
,x方程组(3)对解代数方程,得到解如下: xx4b3mg4xxu(4Mm)(4Mm)(4Mm)3b3g(Mm)3xu(4Mm)l(4Mm)l(4Mm)l
整理后得到系统状态空间方程:
10x4b0(4Mm)x003b0(4Mm)l03mg(4Mm)03g(Mm)(4Mm)l00x40x(4Mm)u1030(4Mm)l
xx1000x0y0u0010
带入参数可得系统的状态空间方程:
0x100-0.08831670.629317x0000-0.23565527.82850x0x0.883160u1002.35655 xx1000x0y0u0010 3系统Matlab 仿真和开环响应
系统开环稳定性分析
num=[2.35655 0 0];den=[1 0.088167-27.9169-2.30942];sys=tf(num,den)[z,p,k]=tf2zp(num,den);step(sys)%阶跃响应曲线: grid on
阶跃响应曲线
rlocus(sys)%根轨迹
根轨迹
bode(sys)%波特图
[A,B,C,D]=tf2ss(num,den);Q=ctrb(A,B)rank(Q)%系统能控性分析
Q =
1.0000-0.0882 27.9247 0 1.0000-0.0882 0 0 1.0000
ans = 3
由得到的rank(Q)的值可知,原系统的能控性矩阵为3,所以我们可知原系统是不能控的。m=obsv(A,C)rank(m)m = 2.3565 0 0-0.2078 65.7876 5.4423 65.8059-0.3580-0.4798
ans = 3 由得到的rank(m)的值可知,原系统的能观性矩阵为3,所以我们可知原系统是能观的。eig(A)ans =
5.2810-5.2864-0.0827
由eig(A)的值可知系统是不稳定的。4 系统设计
4.1极点配置与控制器的设计
采用极点配置法设计多输出的倒立摆系统的控制方案。可以用完全状态反馈来解决,控制摆杆和小车的位置。
设计状态反馈阵时,要使系统的极点设计成两个主导极点和两个非主导极点,用二阶系统的分析方法确定参数。
根据系统性能要求: 最大超调量10%,调节时间为 1s
-运用超调量计算公式:% 得到0.707wn5.66
1-2 t3
sn P2=-4-4.33j 得到两个主导极点为:P1=-4+4.33j P4=-20 选取两个非主导极点:P3=-20 根据MATLAB求取状态增益矩阵,程序如下: a=[0 1 0 0 0-0.0883167 0.629317 0 0 0 0 1 0-0.23655 27.8285 0];b=[0 0.883167 0 2.35655];p=[-4+4.33j-6-4.33j-20-20];k=acker(a,b,p)k =
-740.4267-247.3685 646.9576 113.8866
4.2系统仿真:
根据状态空间表达式建立一阶倒立摆SimuLink仿真图,如下:
4.3仿真结果
系统仿真图(位置,速度,角度,角速度)
根轨迹
4.4根据传递函数设计第二种控制方法-----PID串级控制
PID控制器系统框图:
经过几次参数调试得出Kp=300,Ki=200,Kd=20满足性能要求,其仿真图形如下:
5结 论
本次设计主要通过PID串级控制和状态空间极点配置的方法对直线一级倒立摆进行校正,通过此次课程,掌握MATLAB的基本使用方法。在课程设计过程中,培养了团队协作能力,刻苦钻研以及编程能力,为今后的学习工作打下了良好的基础。经过这次课程,是我受益匪浅。
第一、学会了如何运用自己所学的知识结合实践
第二、硬件最然需要不断尝试,但不是盲目的调试,而是需要有理论作为指导,指明调整的方向,这样设计系统就会事半功倍。第三、Matlab等工具软件的使用也大大提高了设计系统的速度。这些都是试验中珍贵的收获。
【matlab实验预习报告】推荐阅读:
实验报告matlab09-09
电机matlab实验报告09-09
信号系统matlab实验07-27
matlab数学实验实现11-17
matlab实验指导书10-28
模拟电路.实验预习及实验报告要求07-13
实验报告与预习09-25
物理实验预习报告10-29
综合实验预习报告资料10-23
matlab作业11-11