MATLAB实验.docx
- 文档编号:12542213
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:10
- 大小:21.15KB
MATLAB实验.docx
《MATLAB实验.docx》由会员分享,可在线阅读,更多相关《MATLAB实验.docx(10页珍藏版)》请在冰点文库上搜索。
MATLAB实验
实验六:
MATLAB常用函数库:
多项式函数库
实验目的:
1.掌握线性方程的求解和矩阵特征值与特征向量的求解。
2.熟悉掌握多项式的求导、求根和求值。
3.熟悉常用的数据分析与统计函数。
4.掌握roots、poly和polyval函数并比较区别。
实验内容:
1.求方程AX=B的解,并求矩阵A的特征值和特征向量。
方程如下:
A=[3,1,0,5;0,-6,7,3;0,4,3,0;2,-1,2,6];
B=[2;4;7;8];
X=A\B
[e,r]=eig(A)
X=
-4.8247
1.3944
0.4741
3.0159
e=
-0.1431-0.9081-0.68490.4388
0.92260.0627-0.2268-0.4036
-0.3327-0.1107-0.1737-0.7568
0.13300.3989-0.67020.2680
r=
-8.0919000
00.734800
008.22380
0005.1333
2.求代数方程的所有根。
a=[3,4,7,2,9,12];
ra=roots(a)
ra=
-0.8612+1.4377i
-0.8612-1.4377i
0.6737+1.0159i
0.6737-1.0159i
-0.9583
3.把1开五次方,并求其全部五个根。
b=[1,0,0,0,0,-1];
rb=roots(b)
rb=
-0.8090+0.5878i
-0.8090-0.5878i
0.3090+0.9511i
0.3090-0.9511i
1.0000
4.设方程的根为x=[-3,-5,-8,-9],求它们对应的x多项式的系数。
x=[-3,-5,-8,-9];
a=poly(x)
a=
1252238311080
5.编写函数function[max1,min1,mean1]=stat(a)求从comp.mat文件中读入的成绩数组a的最大值max1,最小值min1,和均值mean1。
function[max1,min1,mean1]=stat(a);
max1=max(a);
min1=min(a);
mean1=mean(a);
loadcomp;[max1,min1,mean1]=stat(a)
max1=
94
min1=
29
mean1=
72.3000
6.设
a)x=[-2,8]之间函数的值(取100个点),画出曲线,观察有几个过零点。
(用polyval函数)
b)用roots函数求此多项式的根。
x=linspace(-2,8,100);
y=[1,-4,0,3,-2,6];
z=polyval(y,x);
plot(x,z/1000)
gridon
r=roots(y)
r=
3.7999
-1.2607
1.3479
0.0564+0.9623i
0.0564-0.9623i
7.上题写成一个函数文件f1.m,用fzero函数求它的过零点,若在该函数中加一项xsin(x),求过零点。
functionf=f1(x);
a=[1-403-26];
f=polyval(a,x);
>>x=linspace(-2,8,100);z=fzero('f1',-1)
z=
-1.2607
>>x=linspace(-2,8,100);z=fzero('f1',1)
z=
1.3479
>>x=linspace(-2,8,100);z=fzero('f1',3)
z=
3.7999
functionf=f2(x);
a=[1-403-26];
y0=polyval(a,x);
y1=x.*sin(x);
f=y0+y1;
>>x=linspace(-2,8,100);z=fzero('f2',-1)
z=
-1.2943
>>x=linspace(-2,8,100);z=fzero('f2',1)
z=
1.4269
>>x=linspace(-2,8,100);z=fzero('f2',3)
z=
3.8125
8.(选做)使用多路分支结构switch语句编写函数z=polycal(x,y,s);完成多项式x与多项式y的加减乘除运算,其中s为字符串,意义如下:
'+'表示多项式加法
'-'表示多项式减法
'*'表示多项式乘法
'/'表示多项式除法
注意当两参与运算的多项式不等长时,多项式加法和减法的处理。
functionz=polycal(x,y,s)
x1=length(x);
y1=length(y);
if(x1>y1)
y=[zeros(1,x1-y1),y];
else
x=[zeros(1,y1-x1),x];
end
switchs
case'+'
z=x+y;
case'-'
z=x-y;
case'*'
z=conv(x,y);
case'/'
z=deconv(x,y);
end
>>a=[1357];b=[369];z=polycal(x,y,'+')
z=
146
>>a=[1357];b=[369];z=polycal(x,y,'-')
z=
100
>>a=[1357];b=[369];z=polycal(x,y,'*')
z=
027129
实验要求:
记录命令代码或函数代码和输出结果。
实验七:
MATLAB常用函数库-多项式函数库
(2)和数值积分函数库
实验目的:
1.掌握利用多项式求值函数polyval求系统频率特性的方法。
2.熟悉多项式拟和函数polyfit的使用。
3.熟悉线性微分方程的求解和求系统响应的方法。
4.熟悉非线性函数的分析和fplot、fmin、fzero函数调用。
实验内容:
1.已知系统传递函数,不使用freqs函数求系统幅频特性和相频特性曲线,横轴采用半对数坐标。
b=[1];
a=[1,1];
omg=logspace(-2,4);
H=polyval(b,j*omg)./polyval(a,j*omg);
subplot(2,1,1);semilogx(omg,abs(H));
xlabel('幅频特性');
subplot(2,1,2);semilogx(omg,angle(H));
xlabel('相频特性');
2.一组原始数据为学生的序号和身高,存放在datt.mat文件中。
拟和多项式次数为n=1,2,4,7,9,10,使用循环编写程序作2*3=6幅子图,用红色圆圈标注原始数据点,用兰色实线绘制拟和曲线,横轴标注n的取值。
clearall;closeall;
loaddatt;
x=data(:
1);
y=data(:
2);
M=[1247910]
xi=linspace(1,10,10);
forn=1:
6
a=polyfit(x,y,M(n));
yi=polyval(a,xi);
subplot(2,3,n);
plot(x,y,'ro',xi,yi,'b');
xlabel(M(n));
end
3.已知描述系统的微分方程如下:
不使用impulse和step函数求输入为单位冲激信号和单位阶跃信号时系统响应的数值解,并出t在[0,6]区间的响应曲线。
(提示:
使用循环语句求数值解)
clearall;closeall;
a=[132];
b=[13];
[r,p,k]=residue(b,a);
t=0:
0.1:
6;
yi=0;
forn=1:
length(r)
yi=yi+r(n)*exp(p(n)*t);
end
subplot(1,2,1)
plot(t,yi);
a=[1320];
b=[13];
[r1,p1,k1]=residue(b,a);
ys=0;
form=1:
length(r1)
ys=ys+r1(m)*exp(p1(m)*t);
end
subplot(1,2,2);
plot(t,ys);
4.设,画出它在x=[0,4]区间内的曲线,求出它的过零点和两个过零点之间极小值的数值。
clearall;closeall;
f=inline('x.^3-2.*x.^2.*sin(x)+5.*x.*cos(x)+1./x')
fplot(f,[0,4])
z1=fzero(f,1)
z2=fzero(f,3)
min=fminbnd(f,1,3)
z1=
1.5117
z2=
2.6095
min=
2.1589
实验要求:
记录命令代码或函数代码和输出结果,有图形输出的要绘图。
实验八:
MATLAB常用函数库-数值积分函数库和字符串函数库
实验目的:
1.熟悉任意函数的数值积分使用quad和ode23函数。
2.掌握字符串的赋值、执行eval函数。
3.掌握字符串输入输出sprintf函数。
4.熟悉字符串与数的转换函数num2str和字符串的串接。
实验内容:
1.设,求此曲线在x轴上方第一块所围的面积的大小。
y=inline('x.^3-2.*x.^2.*sin(x)+5.*x.*cos(x)+1./x');
fplot(y,[-5,1]);
grid;
z1=fzero(y,-1);
z2=fzero(y,-3);
s=quad(y,z2,z1)
s=
2.2794
2.已知微分方程,若y(0)=1,求它在x=[0,5]区间内的数值积分,并画出曲线。
functionT=m(x,y);
T=x.^2/y-x.*cos(y);
>>x=[0:
0.1:
5];
[x,y]=ode23('m',[0,5],1);
plot(x,y);
grid
3.用for循环和eval语句实现y(n)=magic(n),(n=3,4,5),编写程序。
forn=3:
5
eval('magic(n)');
end
ans=
816
357
492
ans=
162313
511108
97612
414151
ans=
17241815
23571416
46132022
101219213
11182529
4.用sprintf命令写出字符串“自然对数底数e=2.71828…”,e的值应该由MATLAB自动生成,其小数点后要显示20位。
s=sprintf('自然对数底数e=%.20f',exp
(1));
disp(s);
自然对数底数e=2.71828182845904550000
5.使用循环和sprintf命令编写exe75.m程序,生成如下九九乘法表
1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9
2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18
3*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=27
4*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=36
5*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45
6*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=54
7*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=63
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=72
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
fori=1:
9
m=[];
forj=1:
9
m=[msprintf('%d*%d=%d',i,j,i*j)];
end
disp(m)
end
1*1=11*2=21*3=31*4=41*5=51*6=61*7=71*8=81*9=9
2*1=22*2=42*3=62*4=82*5=102*6=122*7=142*8=162*9=18
3*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=27
4*1=44*2=84*3=124*4=164*5=204*6=244*7=284*8=324*9=36
5*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=45
6*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=54
7*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=63
8*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=72
9*1=99*2=189*3=279*4=369*5=459*6=549*7=639*8=729*9=81
实验要求:
记录命令代码或函数代码和输出结果,有图形输出的要绘图。
来自:
来自:
liuyuetu2009
第一分享:
871406542
时间:
2010-04-1113:
02
评论:
4条
投票:
0次
本贴分享:
8
累计分享:
8
共有0人发表观点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 实验