Matlab
上
机
实
验
报
告
专业班级:08 自动化一班
姓名:
刘复鑫
学号:
080108011122
仿真实验(一)
1、解方程,至少用三种方法解方程组 Ax=b,如矩阵除法、求逆矩阵、
通 过 初 等 变 换 将 矩 阵 化 为 上 ( 下 ) 三 角 阵 等 , 其 中
A
3
1
0
7
5
8
5
0
0
2
9
4
8
1
3
5
,
b
0
2
1
6
>> A=[-3 5 0 8;1 -8 2 -1;0 -5 9 3;-7 0 -4 5]
>> B=[0;2;-1;6]
>> x=A\B
x =
-0.6386
-0.4210
-0.3529
>> inv(A)
>> x=inv(A)*b
x =
-0.6386
-0.4210
-0.3529
0.0237
>> [L,U]=lu(A)
>> x=(L*U)\B
x =
-0.6386
-0.4210
-0.3529
0.0237
2、已知一多项式的零点为{2,-3,1+2i,1-2i,0,-6},求这个多项
式的系数(从高到低排列),并且计算多项式在点 x=0.8,-1.2 的值。
>> r=[2;-3;1+2i;1-2i;0;-6];
p=poly(r)
>> polyval(p,0.8)
polyval(p,1.2)
p =
1
5
-9
-1
72
-180
0
X=0.8 时值为-100.2179
X=-1.2 时值为-117.2828
刘复鑫作品,严禁复制,盗版必究
3、矩阵运算
(1)矩阵的乘法:已知A=[1 2;3 4]; B=[5 5;7 8]; 求A^2*B
>> A=[1 2;3 4] ;B=[5 5;7 8];x=A^2*B
x =
105
229
115
251
(2)矩阵除法:已知 A=[1 2 3;4 5 6;7 8 9]; A\B,A/B
>> A=[1 2 3;4 5 6;7 8 9];B=[1 0 0;0 2 0;0 0 3];
>> X=A\B
Y=A/B
X =
1.0e+016 *
-0.4504
0.9007
-0.4504
1.8014
-3.6029
1.8014
-1.3511
2.7022
-1.3511
Y =
1.0000
4.0000
7.0000
1.0000
2.5000
4.0000
1.0000
2.0000
3.0000
(3)矩阵的转置及共轭转置:已知A=[5+i,2-i,1;6*i,4,9-i]; 求
A.', A'
>> A=[5+i,2-i,1;6*i,4,9-i]
>>X=A.’
>>Y=A’
X =
5.0000 + 1.0000i
2.0000 - 1.0000i
1.0000
0 + 6.0000i
4.0000
9.0000 - 1.0000i
Y =
5.0000 - 1.0000i
2.0000 + 1.0000i
1.0000
0 - 6.0000i
4.0000
9.0000 + 1.0000i
(4)使用冒号选出指定元素:已知: A=[1 2 3;4 5 6;7 8 9]; 求A
中第3列前2个元素;A中所有列第2,3行的元素;
>>A=[1 2 3;4 5 6;7 8 9];A(1:2,3)
>>A(2:3,:)
ans =
刘复鑫作品,严禁复制,盗版必究
ans =
3
6
4
7
5
8
6
9
(5)方括号[]:用magic函数生成一个4阶魔术矩阵,删除该矩阵的
第四列
>> A=magic(4)
>> A(:,4)=[]
A =
13
8
12
1
A =
16
5
9
4
16
5
9
4
2
3
10
6
15
2
3
10
6
15
11
7
14
11
7
14
4.帮助命令:使用help命令,查找 sqrt(开方)函数的使用方法;
>> help sqrt
1、建立M-文件
仿真实验(二)
(1)编写命令文件:计算1+2+…+n<2000时的最大n值;
%ex1_01.m
mysum=0;
for n=1:1000
mysum=mysum+n;
if(mysum>2000) break; end
end
n-1
(2)编写函数文件:分别用for和while循环结构编写程序,求2的0到n次幂的和。
①for循环:
%ex2_11.m
n=input('please evaluation to n:');
mysum=0;
for m=0:n
mysum=mysum+2^m;
刘复鑫作品,严禁复制,盗版必究
end
mysum
②while循环:
%ex2_12.m
n=input('please evaluation to n:');
mysum=0;i=0;
while(i<=n)
mysum=mysum+2^i;i=i+1;
end
mysum
(4)如果想对一个变量x自动赋值。当从键盘输入y或Y时(表示是),x自动赋
为1; 当从键盘输入n或N时(表示否),x自动赋为0;输入其他字符时终止程
序
%ex1_3.m
ikey=0;
while(ikey==0)
s1=input('evaluation to X or not [y/n]?','s');
if(s1=='y'|s1=='Y'),
ikey=1;x=1
else if(s1=='n'|s1=='N')ikey=1;x=0,end
break
end
end
2、数值积分:用 MATLAB 计算 2
0
sin xdx
%exp4.m
function f=exp4(x)
f=sin(x);
format long;
y=quad('exp4',0,pi/2)
符号积分:syms x;f='sin(x)';y=int(f,'x',0,pi/2)
3、MATLAB 的符号运算
(1)符号运算和符号表达式:①用 sym 来定义一个符号或一个符号表达式;②
用 syms 定义多个符号;③定义的各个符号和表达式进行运算;
①>> A=sym('2*x^2+3*x+2')
A =
2*x^2+3*x+2
②>> syms m n
③>> fun=m+n;C=fun+A
刘复鑫作品,严禁复制,盗版必究
C =
m+n+2*x^2+3*x+2
(2)微积分运算:自己定义一个符号函数 f1 和一个符号方程 f2,利用所学函
数进行一下运算①针对 f1 进行求导,积分,求极限;②针对 f2 进行解方程运
算。
①>> f1='sin(x)';df1=diff(f)
df1 =
cos(x)
>> y=limit(f,x,0)
y =
0
>> y=int(f,'x',0,pi/2)
y =
1
②>>f='a*x^2+b*x+c=0';x=solve(f,'x')
x =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
4.基本绘图控制:绘制[0,4π]区间上的x1=10sint曲线,并要求:
(1)线形为点划线、颜色为红色、数据点标记为加号;
(2)坐标轴控制:显示范围、刻度线、比例、网络线;
(3)标注控制:坐 标轴名称、标题、相应文本;
>> x=0:0.1:4*pi;y=10*sin(x);plot(x,y,'-.r+')
>> xlabel('x')
>> ylabel('y')
>> grid
>> title('y=10*sin(x)')
5.绘图
(1) 用几种方法作 2
4
5
x x x x 的图形,在同一个图上画几条曲线;
,
,
3
,
刘复鑫作品,严禁复制,盗版必究
方法一:
>>x=-2:0.01:2;y=[x.^2;x.^3;x.^4;x.^5];z=0*x;
plot(x,y,x,z);grid on;legend('x^2','x^3','x^4','x^5')
>> xlabel('x')
>>ylabel('y')
方法二:
>> x=-2:0.01:2;plot(x,x.^2,'b');hold on
>> plot(x,x.^3,'g');hold on
>> plot(x,x.^4,'r');hold on
>> plot(x,x.^5,'c');hold off
(2)在[0 2]范围内绘制二维曲线图 sin cos5
x
>>fplot('sin(x)*cos(5*x)',[0,2*pi]);grid;xlabel('x');ylabel('y')
y
x
;
(3)绘制 sin cos
x
z
y
的三维网格和三维曲面图,x、y 变化范围均为[0 2]。
①>>[x,y]=meshgrid(0:0.01:2*pi);z=sin(x).*cos(y);mesh(x,y,z)
刘复鑫作品,严禁复制,盗版必究
②>>[x,y]=meshgrid(0:0.01:2*pi);z=sin(x).*cos(y);surf(x,y,z)
1、已知系统结构图如下
仿真实验(三)
图 含饱和非线性环节系统方框图
已知输入为信号电平从1~6,非线性环节的上下限为±1,取步长h=0.1,仿真时
间为10秒,试绘制系统的响应曲线。文件名为exp3_1.mdl
刘复鑫作品,严禁复制,盗版必究