MATLAB实验报告次次Word文档下载推荐.docx
《MATLAB实验报告次次Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《MATLAB实验报告次次Word文档下载推荐.docx(39页珍藏版)》请在冰点文库上搜索。
![MATLAB实验报告次次Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-5/8/a1315d2b-6885-42e5-bf3d-daf3788be6cf/a1315d2b-6885-42e5-bf3d-daf3788be6cf1.gif)
end;
c=[d,c];
StudentNo={1,2,3,4,5,6,7,8,9,10,11,12};
%学生学号
Name={'
张三'
'
赵四'
王五'
马六'
聪聪'
宝宝'
刘谦'
二蛋'
二胖'
鸣笛'
泡泡'
吉吉'
};
%学生姓名
Sex={'
男'
女'
%学生性别
Age={'
17'
16'
18'
15'
19'
%学生年龄
Mark={91,73,66,0,80,100,76,82,92,77,86,59};
%学生成绩
PostScript=cell(1,12);
S=struct('
StudentNo'
StudentNo,'
Name'
Name,'
Sex'
Sex,'
Age'
Age,'
Marks'
Mark,'
PostScript'
PostScript);
%
6
num(i)=0;
end
12%循环12次
switchS(i).Marks%分支条件
case100
S(i).PostScript='
满分'
;
num
(1)=num
(1)+1;
%当100时备注显示满分
case0
缺考'
num(6)=num(6)+1;
%当0时备注显示缺考
casea
优秀'
num
(2)=num
(2)+1;
%当满;
足a情况时备注显示优秀
caseb
比较好'
num(3)=num(3)+1;
%当满足b情况时备注显示比较好
casec
已及格'
num(4)=num(4)+1;
%当满足c情况时备注显示已及格
otherwise
不及格'
num(5)=num(5)+1;
%其他情况显示不及格
end
%获取成绩中最大值,最小值,平均值,标准差
s=[91,73,66,0,80,100,76,82,92,77,86,59];
N=0;
4
N=N+num(i);
mi=min(s);
ma=max(s);
mea=mean(s);
fc=std(s);
jg=N/12;
disp(['
学号'
学生姓名'
性别'
年龄'
成绩'
备注'
]);
disp('
'
)%声明显示
12;
disp([num2str(S(i).StudentNo),blanks(6),S(i).Name,blanks(6),S(i).Sex,blanks(6),num2str(S(i).Age),blanks(6),num2str(S(i).Marks),blanks(6),S(i).PostScript]);
%按循环依次显示姓名成绩备注
各个分数段人数统计:
)
满分:
num2str(num
(1))])
缺考:
num2str(num(6))])
优秀:
num2str(num
(2))])
比较好:
num2str(num(3))])
已及格:
num2str(num(4))])
不及格:
num2str(num(5))])
及格率:
num2str(jg)])
最小值:
num2str(mi)])
最大值:
num2str(ma)])
平均值:
num2str(mea)])
标准差:
num2str(fc)])
h=figure
(1);
q=[num
(1),num(6),num
(2),num(3),num(4),num(5)];
pie(q,[00.10.20.30.40.5]),
legend({'
满分'
缺考'
});
h=figure
(2);
x=[1,2,3,4,5,6,7,8,9,10,11,12];
bar(x,s)
set(gca,'
XTick'
1:
1:
12)
XTickLabel'
{'
1'
2'
3'
4'
5'
6'
7'
8'
9'
10'
11'
12'
})
title('
SineFunction'
);
xlabel('
Radians'
ylabel('
FunctionValue'
colormap(color);
6.实验结果:
学号学生姓名性别年龄成绩备注
1张三男1791优秀
2赵四女1673已及格
3王五男1766已及格
4马六男180缺考
5聪聪男1680比较好
6宝宝男15100满分
7刘谦男1876已及格
8二蛋女1782比较好
9二胖女1992优秀
10鸣笛女1577已及格
11泡泡男1786比较好
12吉吉男1659不及格
1
2
3
0.83333
100
73.5
25.777
7:
实验总结
在学习MATLAB过程中我们要多动脑,多动手写程序、调试,看程序时候多想几个为什么,理解别人程序中精华的东西,多自己调调程序,可以改改程序,把知识转成自己的,弄懂一两个经典例子比粗粗的看一大书要好,值得一提是不是一下子就能看懂相对比较长,比较复杂的程序的,要做的是自己慢慢去分析,利用已经有的资料和帮助,等慢慢搞懂它,要多看几遍,相信多看一遍你就会有一些新的认识,一直到你已经掌握里例子的精华。
MATLAB是一款功能强大的软件,在这次实践中,我也是收获颇丰,刚开始面对这个问题,不知道该如何设计,但是努力着回忆老师每节课讲的内容,再加上对课本的查阅,渐渐有了思路,设计出了大概的框架。
但是在具体编程过程中的确遇到了好多麻烦,自身原因还是因为对MATLAB的不熟悉,经过一番努力,终于设计出了一项相对简单的学生成绩管理系统。
今后还有继续听老师认真讲课,在下次课题实践中设计更好的程序。
最后多读matlab高手写的程序,帖子,找到一个高手,在几个大的论坛可以搜索出一大堆的帖子,然后慢慢去看吧,从中可以学到很多东西,也许你会发现很多你都看不懂,这很正常,别人写程序考虑的是能实现这样的功能,运行效率等问题,而不是考虑是不是很容易能让别人理解,你就看你现在能看懂,再看些通过你断点调试,查help能看明白的,看不懂的就先放下,遇到好的和看不懂,你又很挺感兴趣的话题,你先收藏起来,过段时间你再回头看看,你会发现,每看一遍,你就会多懂一些东西,当你第三遍甚至第四遍看同一个程序的时候,也许你就会有豁然开朗的感觉。
一个比较长的程序,首先不要怕长,把它分解成一句一句,一句一句看懂它。
要明白一口吃不成胖子,好东西要慢慢体会,才能领会。
参考《MATLAB语言实用教程》马莉编著
姓名:
2013年10月20日
2.自测题
1.缺省的[CurrentDirectory]窗口是什么?
当前目录浏览器。
2.命令窗口中输入x时,MATLAB的搜索顺序是什么?
如果在MATLAB命令窗口中输入字符串xMATLAB编译器会按顺序尝试解释它
1把x作为一个参数或变量去搜索
2检查x是否为一个内置的函数
3在默认的目录即当前工作目录CurrentDirectory下搜索文件名为x.m的文件
4在搜索路径的所有目录中搜索文件名为x.m的文件。
如果多个函数具有相同的名称那么只有搜索到的第一个函数会执行其他函数会被认为不存在而不被执行。
3.如何扩展MATLAB的搜索路径?
把程序所在目录扩展成MATLAB的搜索路径的方法:
1.搜索路径对话框:
利用[file]->
[setpath]菜单,进入设置搜索路径对话框
2.path:
如path(path,’e:
\myfiles’);
把新目录扩展到搜索路径
3.Addpath:
扩展目录,如addpathe:
\myfiles–end把新目录加到末尾;
addpathe:
\myfiles–begin把新目录加到开头。
3.Genpath:
得到所有搜索路径连接而成的长字符串。
4.使用editpath或pathtool扩展目录。
4.输入矩阵A和B的操作是:
A=[110;
-111;
1-13]
B=[101;
011;
-101]
A=
110
-111
1-13
B=
101
011
-101
5.执行A*B的结果是:
A*B
ans=
112
-211
-2-13
6.执行A.*B的结果是:
A.*B
100
-103
7.执行A.^B的结果是:
A.^B
111
113
8.生成由A的主对角元素构成的对角阵的操作是:
C=diag(diag(A))
C=
010
003
9.赋值表达式A=[A;
[1,3,5]]的结果是:
A=[A;
[1,3,5]]
135
10.从A中得到第二行第三列元素的操作是:
D=A(2,:
)
E=A(3,:
D=
E=
11.从A中得到A的第一列元素构成的列向量的操作是:
F=transpose(A(1,:
))
F=
1
0
12.A(:
[1,3])的结果是:
A(:
[1,3])
10
-11
13
15
13.把A还原成第1题中的A的操作是:
A([4],:
)=[];
a=A(:
1);
b=A(:
2);
A=[a,[1,1,-1]'
b]
14.执行W1=zeros(2,3)的结果是:
W1=zeros(2,3)
W1=
000
15.执行W2=ones(3)的结果是:
W2=ones(3)
W2=
16.执行W1=eye(3,4)的结果是:
W1=eye(3,4)
1000
0100
0010
3.动画函数的生成
1.编写
语言的电影动画
M=moviein(16);
x=9*pi;
forj=1:
600
x(j+1)=x(j)-pi/50;
y1=(x-sin(x))./(x+sin(x));
y2=1+0.1;
y3=1-0.1;
plot(x,y1,'
b*'
x,y2,'
r'
x,y3,'
x,0,'
axis([09*pi-0.22.5])
M(j)=getframe;
movie(M,3)
2.编写
语言的电影动画。
xlim([0,10]);
ylim([-1,1]);
x0=0;
a=0.05;
y1=-1:
0.001:
1;
y2=0+0.05;
y3=0-0.05;
forn=0:
0.01:
holdon;
y=sin(n)/n;
plot(n,y,'
b.'
ifabs(n-x0)<
=a
plot(x0-a,y1,'
x0+a,y1,'
ifabs(y)<
plot(n,y2,'
n,y3,'
pause(0.1);
4.MATLAB在高等数学中的应用
1.符号导数
求函数
的一阶导数和二阶导数
输入:
symsx
diff(’x^n’,1)
diff(’x^n’,2)
执行后得
的一阶导数和二阶导数分别为:
ans=x^n*n/x
ans=x^n*n^2/x^2-x^n*n/x^2
2.符号微分
设
,求
。
symsxy
z=’(1+x*y)^y’;
diff(z,x)
diff(z,y)
则输出结果:
ans=(1+x*y)^y*y^2/(1+x*y)
ans=(1+x*y)^y*(log(1+x*y)+y*x/(1+x*y))
3.符号积分
求
int(’sin(x)/x’,x)
则输出为:
ans=sinint(x)
4.常微分方程
求微分方程y’+2xy=
的通解。
clear;
dsolve(’Dy+2*x*y=x*exp(-x^2)’,’x’)
便得到微分方程的通解:
(1/2*x^2+C1)*exp(-x^2)
5.无穷级数
求级数
的和
s2=symsum(x^(3*k),k,1,inf)
得到和函数
s2=-x^3/(x^3-1)
6.线性方程组
求解线性方程组:
输入
A=[1,1,-2,-1;
3,-2,-1,2;
0,5,7,3;
2,-3,-5,-1];
D=det(A)
X=null(A)
输出为:
X=
-0.4714
0.2357
0.7071
7.利用积分求面积
求由圆
和双纽线
,所围成的面积。
symsth
r1=3*cos(th);
r2=1+cos(th);
s1=int(1/2*r2^2,th,0,pi/3);
s2=int(1/2*r1^2,th,pi/3,pi/2);
S=2*(s1+s2)
5/4*p
5.利用MATLAB求π的值
方案1(分析方法)函数的幂级数展开(精确到
Arctanx的麦克劳林级数展开式为:
取x=1得:
=4arctan1=4(1-
+
-L)
取前n项作为近似值,产生的误差为
<
,要精确到
,则要计算前二十万位,收敛速度太慢。
在
1时远比x=1收敛速度快,利用正切的倍角公式可得:
这时可简单的利用
来估计判断误差。
具体代码如下:
x=0;
n=10^200;
n
x=x+4*(-1)^(i+1)/(2*i-1);
p=vpa(x);
方案2(迭代加速算法)
利用函数arctanx的泰勒展开式
取x=1,则得到
记
便可利用埃特金加速收敛方法来加快已知序列的收敛速度。
方案3(数值积分法)
p=vpa(4*int(1/(1+x^2),x,0,1));
方案4概率方法(蒙特卡洛随机模拟)
n=500;
a=rand(1,2);
ifa
(1)^2+a
(2)^2<
=1
x=x+1;
x=4*x/n;
方案5(公式法)
f1=(-1)^x/((2*x+1)*2^(2*x+1));
f2=(-1)^x/((2*x+1)*3^(2*x+1));
p=vpa(4*(symsum(f1,x,0,inf)+symsum(f2,x,0,inf)));
方案6(符号积分法)
具体代码如下
f=4/(1+x^2);
y=int(f,x,0,1);
numefic(y)
方案7(Taylor展开法)
具体代码如下:
f=(-1)^x/(2*x+1);
p=vpa(4*symsum(f,0,inf));
方案8(刘徽割圆法)
n=61;
x=sqrt(2-sqrt(4-x^2));
x=subs(x,'
x'
p=3*2^n*vpa(x,n+5);
零件的参数设计
6.
1.问题重申:
粒子分离器某参数(记作y)由7个零件的参数
决定,其经验公式为:
y的目标值(记作yo)为1.50,当y偏离yo±
0.1时,产品为次品,质量损失1000元。
当y偏离yo±
0.3时,产品为废品,质量损失9000元。
零件容差分别为A(1%)、B(5%)、C(10%)三个等级,容差为均方差的三倍,成本如表3.1.1所示,求零件参数标定值及零件容差等级所使总费用最小。
表3.1.1
目标函数
(3.1.12)
其中:
达最小,即:
用蒙特卡罗法,模拟
,求目标函数最小。
2.MATLAB程序设计
用Matlab求出
关于
的偏导数:
Fun1.m
clearall
clc
symsx1x2x3x4x5x6x7
y=174.42*x1/x5*(x3/(x2-x1))...
^0.85*((1-2.62*(1-0.36*(x4/x2)...
^-0.56)^1.5*(x4/x2)^1.16)/(x6*x7))^0.5;
a1=diff(y,x1);
a2=diff(y,x2);
a3=diff(y,x3);
a4=diff(y,x4);
a5=diff(y,x5);
a6=diff(y,x6);
a7=diff(y,x7);
x01=0.1;
x02=0.3;
x03=0.1;
x04=0.1;
x05=1.5;
x06=16;
x07=0.75;
a11=subs(a1,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a22=subs(a2,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a33=subs(a3,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a44=subs(a4,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a55=subs(a5,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a66=subs(a6,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
a77=subs(a7,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
yy=subs(y,{x1x2x3x4x5x6x7},{0.10.30.10.11.5160.75});
Xr1=0.05;
Xr2=0.1;
Xr3=0.1;
Xr4=0.1;
Xr5=0.1;
Xr6=0.1;
Xr7=0.05;
C1=25;
C2=20;
C3=20;
C4=50;
C5=50;
C6=10;
C7=25;
(10^5/9)*((a11*Xr1*x01)^2+(a22*Xr2*x02)^2+(a33*Xr3*x03)^2+(a44*Xr4*x04)^2+...
(a55*Xr5*x05)^2+(a66*Xr6*x06)^2+(a77*Xr7*x07)^2)+10^5*(yy-1.5)^2+200
functionf=fun(x)
Yx
(1)=(8721*(-x(3)/(x
(1)-x
(2)))^(17/20)*(-((131*(x(4)/x
(2))^(29/25)*(1-9/(25*(x(4)