MATLAB 论文.docx
- 文档编号:10574322
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:22
- 大小:305.18KB
MATLAB 论文.docx
《MATLAB 论文.docx》由会员分享,可在线阅读,更多相关《MATLAB 论文.docx(22页珍藏版)》请在冰豆网上搜索。
MATLAB论文
2014217850陈鑫
MATLAB程序设计
摘要:
这个学期我们在王教授和张教授的教导下,对matlab从刚开始有了一个比较感性的认识,到自己也对matlab最基本的操作和应用有了解,最后对matlab在解决实际问题的领域有了深层次的理解,当然还有很过没有真正的精通,以后会抽取更多的时间来真正的掌握精通MATLAB,来提高自己的能力,解决专业上的问题。
下面是一部分做过的重要的知识点、运算题目
1、首先熟悉下MATLAB的软件环境,练习常用的命令、基本运算符和数学函数
(1)常用的命令:
clearall(清除工作区的变量),clc---(清空命令窗口);helpdisp--(显示变量或文字的内容);
disp('CornOatsHay')
disp(rand(5,3))
CornOatsHay
0.81470.09750.1576
0.90580.27850.9706
0.12700.54690.9572
0.91340.95750.4854
0.63240.96490.8003
基本运算符()---(指定优先级,函数调用,数组索引);[]----(定义矩阵);%--(注释语句的标识——用来表示该行为注释行)
(2).^(数组乘方);^(乘方);+;-;.*(乘,点乘,即数组乘法);*(矩阵乘法);.\(数组左除);\(左除);./(右除);
‘(矩阵共轭转置);.’(矩阵转置)
<;<=;>;>=;==;~=;
(3)
A=magic(3)
A=
816
357
492
>>B=round(rand(3)*10)
B=
893
965
1110
>>c1=A*B
c1=
798489
7664104
1159277
>>C2=A.*B
C2=
64918
273035
4920
(4),:
;
分号;用于区分数组的行,或者用于一个语句的结尾处,取消运行显示;
冒号:
数组应用较多,如生成等差数列;
逗号,数组列分隔符,函数参数分隔符;
>>为运算提示符;按enter键执行
默认数据类型是双精度类型double;
cos;sin;exp(相当于数学ex);;log(以e为底);log10;sqrt(求平方根)
mean(x):
向量x的元素的平均值
median(x):
向量x的元素的中位数
std(x):
向量x的元素的标准差
如果只有一行,那么就是算一行的标准偏差,如果有多行,就是算每一列的标准偏差
all(判断数组元素是否全部非零);any(判断数组元素是否存在非零);
(5)complex(x,y);实部为x,虚部为y,
imag(求复数的虚部);real(求复数的实部);
>a=complex(3,2)
a=3.0000+2.0000i
>>imag(a)
ans=
2
>>real(a)
ans=
3
(6)创建一个从1到2,增值为0.1的行向量。
x=1:
0.1:
2
x=
1.00001.10001.20001.30001.40001.50001.60001.70001.80001.90002.0000
(7)linspace(s,f,n)s表示第一元素,d表示相邻数之间的增值,f表示向量的最后一个元素不超过f。
创建一个从-1到5.5的共11个元素的行向量。
x=linspace(-1,5.5,11)
x=
-1.0000-0.35000.30000.95001.60002.25002.90003.55004.20004.85005.5000
>>
MATLAB给出了一些函数用来生成特殊的矩阵,常用的有以下几种:
✓ones(m,n)
ones(m,n)用来生成m行n列全1矩阵,即所有元素均为1的矩阵。
>>A=ones(3);
>>B=ones(3)
B=
111
111
111
✓zeros(m,n)
zeros(m,n)用来生成m行n列零向量,其所有元素均为0。
>>z=zeros(3,2)
z=
00
00
00
>>[zones(3,4)]
ans=
001111
001111
001111
eye(n)
eye(n)用来生成n阶单位阵。
A=[123;456;789];
B=logical(eye(3))
B=100
010
001
>>A(B)
ans=
1
5
9
diag(a)
diag(a)用来生成一个对角阵,对角线上的元素由向量a指定;若A是一个n阶方阵,则diag(A)可以提取矩阵A的对角线上的元素。
✓rand(m,n)
rand(m,n)用来生成m行n列均匀分布随机矩阵,矩阵元素在0~1之间均匀分布。
>>A=[1,2,3;456;789]
A=
123
456
789
>>diag(A)
ans=
1
5
9
>>diag(diag(A))
ans=
100
050
009
>>rand(3,4)
ans=
0.58530.25510.89090.1386
0.22380.50600.95930.1493
0.75130.69910.54720.2575
>>rand(size(A))
ans=
0.84070.24350.1966
0.25430.92930.2511
0.81430.35000.6160
>>rand
(2)
ans=
0.03180.0462
0.27690.0971
randn(3)
ans=
0.3252-1.71150.3192
-0.7549-0.10220.3129
1.3703-0.2414-0.8649
✓magic(n)
magic(n)用来生成n阶魔方矩阵,矩阵所有行、列和对角线上的元素之和都相等。
(8)find(查找非零元素的下标及其值);数组相关知识
>A=[1,2,3;456;789]
A=123
456
789
>>A(4)
ans=2
>>a=find(A>=4)
>>[a,b]=find(A>=4)
a=
2
3
2
3
2
3
>>[a,b]
ans=21
31
22
32
23
33
>>[a,b]'
ans=
232323
112233
数组相关知识
>>a=rand(2,6)
a=
0.95720.80030.42180.79220.65570.8491
0.48540.14190.91570.95950.03570.9340
>>b=a(:
[1:
3])
b=
0.95720.80030.4218
0.48540.14190.9157
>>b=a(:
[1,3])
b=
0.95720.4218
0.48540.9157
>>c=([1,2],[1,2,3])
c=([1,2],[1,2,3])
>>c=a([1,2],[1,2,3])
c=
0.95720.80030.4218
0.48540.14190.9157
(9)一个返回值sz=size(A),将返回一个n维向量,其中包含了数组的每一维的大小;
多个返回值;【rows,cols】=size(A),将返回具有要求数量的数组A的各维大小;
length(A)返回数组最大维值
>>A=[1,2,3;456]
A=
123
456
>>sz=size(A)
sz=
23
>>[rowl,cols]=size(A)
rowl=
2
cols=
3
>>length(A)
ans=3
(10)
▪plot(Y)是plot函数最简单的用法,如果Y为实向量,则以Y的索引坐标作为横坐标,Y为纵坐标来绘制图形;如果Y为复数向量,则以向量的实部作为横坐标,虚部作为纵坐标来绘制图形。
plot(X,Y)
Ø第一个变量作为横坐标,第二个变量作为纵坐标。
两个向量必须维数相同且同为行向量或列向量。
Ø当X和Y为同阶矩阵时,按照矩阵的行或列操作,可以在同一幅图中绘出所有曲线。
(11)Subplot(m,n,p)
语句:
h=subplot(m,n,p),执行该语句,就可得到m×n个绘图子区,并将第p个绘图子区选定为当前绘图区域。
绘图子区从上到下编号,每一行从左到右排序。
(12)
Plot(x,y,’r—x’)
(13)round为常规的四舍五入;
round(-1.5)
ans=
-2
>>ceil(3.2)%向上舍入
ans=4
>>floor(5.8)%向下舍入
ans=5
>>fix(5.8)%向0舍入
ans=5
(14)
>>p=[1,-9,23,-15];
>>y=poly2sym(p)
y=
x^3-9*x^2+23*x-15
>>roots(p)%多项式求根
ans=
5.0000
3.0000
1.0000
(15)
求向量x的算术平均值的命令是mean(x);
A=
123
456
789
101112
>>length(A)
ans=
4
>>mean(A)
ans=
5.50006.50007.5000
(16)函数调用
调用函数输出值]=函数保存的文件名(输入变量)
注意,如果输出值只有一个,可以不用中括号,如果两个以上就不必须使用,否则只输出第一个值,而且采用小括号会报错
定义函数:
function[out1,out2]=humps(x)
ifnargin==0,x=0:
.05:
1;end
y=1./((x-0.3).^2+.01)+1./((x-.9)^2+.04)-6;
ifnargout==2,
out1=x;out2=y;
else
out1=y;
end
该函数的调用格式:
>>fh=@humps;
fh(1.5)
ans=
-2.8103
>>fh=@humps;
>>x=fminbnd(fh,0.3,1)%返回函数在指定区间内的局部极小值;
x=
0.6370
>>fh(x)
ans=
11.2528
fminsearch函数用于计算多元函数的极小值;
fzeros函数来求一元的零点。
>>f=@(x)log(x)+sin(x)-2;
>>[x1,y1]=fzero(f,6)
x1=
6.4237
y1=
-2.2204e-016
(17)通过@获取函数句柄,利用函数句
>>fh=@(x,y)y*sin(x)+x*cos(y);
>>fh(pi,2*pi)
ans=
3.1416
(18)polyfit多项式曲线拟合
x=0:
pi/10:
2*pi;
>>y=sin(x);
>>z=polyfit(x,y,3);
>>plot(x,y,'r*');
holdon
>>f=poly2sym(z);
>>ezplot(f,[0,2*pi])
>>ezplot(f,[0,2*pi]);
(19)
yi=interp1(x,y,xi,method)
其中,x、y分别为采用数据的x和y坐标,xi为待插值的位置,
method为采用的插值方法。
该语句返回函数在点xi处的插值结果。
‘nearest’
最近邻插值
‘linear’
线性插值
‘spline’
三次样条插值
‘hchip’或‘cubic’
三次插值
(20)
MATLAB中一元函数对的积分用quad和quadl实现,调用格式:
q=quad(fun,a,b),采用递归自适应方法计算fun函数在区间[a,b]上的积分。
q=quad(fun,a,b),指定允许的误差,该命令运行更快,但结果精确度低。
q=quad(fun,a,b,tol,trace),跟踪迭代过程,分别为计算机函数值的次数、当前
积分区间的左边界、步长和该区间的积分值。
[q,fcnt]=quadl(fun,a,b,…),输出函数值的同时输出计算函数值的次数。
数值积分
[q,fcnt]=quadl(fun,a,b,…),输出函数值的同时输出计算函数值的次数。
MATLAB中二重积分和三重积分分别由dblquad函数和triplequad函数来实现。
二重积分调用格式:
q=dblquad(fun,xmin,xmax,ymin,ymax),函数的参数分别为函数句柄、两个自变量的积分限,返回积分结果。
q=dblquad(fun,xmin,xmax,ymin,ymax,tol),指定积分结果的精度。
q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method),指定结果精度和积分
方法,method的取值可以是@quadl,也可以是用户自定义的积分函数句柄,
该函数的调用格式必须与quad函数的调用格式相同
>>F=@(x,y)y*sin(x)+x*cos(y);
>>Q=dblquad(F,pi,2*pi,0,pi)
Q=-9.8696
(21)有一长度为L的简支梁,荷载p1和p2随机的落在梁上,求p1到左端点的距离小于p1与p2之间距离的概率是多少。
>>%orderL=10;
L=10;
x=rand(1,1000000)*L;
y=rand(1,1000000)*L;
k=find(abs(y-x)>x);
p=length(k)/length(x)
p=
0.2493
(22)
在结构设计中,结构抵抗外部荷载的能力称为抗力,用R表示,外部荷载用L表示。
一般而言,R与L均为随机变量。
现假设R的均值为u_R=500,标准差s_R=50.;L的均值u_L=350,s_L=70.且R和L均服从正态分布。
利用Mente–Carlo样本方法编写Matlab程序求解:
(1)R (2)定义g=R-L,求g>0的概率。 >>%Matlabsolution: u_R=500; s_R=50; N=100000; R=randn(1,N)*s_R+u_R; k1=find(R p1=length(k1)/N; u_L=350; s_L=70; L=randn(1,N)*s_L+u_L; g=R-L; k2=find(g>0); p2=length(k2)/N p2= 0.9590 (23)微分方程 应用实例: 1.应用实例一: 求解微分方程: ,初值y(0)=1时,t从0至10时刻的解。 functiondydt=myode(t,y) dydt=[y (1)*2./(1+y (1).^2)]; end [t,y]=ode45(@myode,[0: 0.01: 10],[1]) 求解范德蒙方程 的解。 时间0至20,初值y(0)=2,y’(0)=0。 functiondydt=myode(t,y) dydt=[y (2);(1-y (1)^2)*y (2)-y (1)]; end [t,y]=ode45(@myode,[0: 0.01: 20],[2;0]) (24) 应用实例三: 一质点在空中飞行,所受的空气阻力方向始终与速度方向相反,大小与速度平方成正比。 求质点的飞行轨迹和飞行路程。 根据题意: 我们可以建立如下方程(vx,vy分别为质点沿x、y方向的速度,c为空气阻力系数): dx/dt=vx dy/dt=vy mdvx/dt=-cv^2cosa=-cv*vx mdvy/dt=-cv*vy-mg functiondydt=myode(t,x) c=0.01; m=1; g=9.8; dydt=[x(3);x(4);-1/m.*(c.*sqrt((x(3).^2+x(4).^2))).*x(3);-1/m.*(c.*sqrt((x(3).^2+x(4).^2))).*x(4)-g]; end [t,y]=ode45(@myode,[0: 0.01: 6],[0;0;50*cos(pi/6);50*sin(pi/6)]; (25) 利用Matlab编程时需要用的主要命令: [A]{x}={b} {x}=([A]T[A])-1{b} {x}=[A]\{b} 应用实例一: 求解: A=[1,-2,3;4,1,0;7,1,6;9,5,8] b=[1;0;1;0] x=A\b(左除法) x2=inv(A’*A)*A’*b(最小二乘法 (26) (27)应用实例二: %生成系数矩阵 t=[0,20,40,60,80,100,120,140,160,183.5]; n=[0,1153,2045,2800,3466,4068,4621,5135,5619,6152]; A=[n.^2;n]’; x=A\t; a=x (1); b=x (2); (28)应用实例三: (1)一简支梁的荷载曲线试验,如图所示。 多项式拟合系数 (2)分段线性拟合的系数(如何生成系数矩阵) 例1: 一简支梁的荷载曲线试验,如图所示. 其中p为加在跨中的荷载,d为跨中的变形。 在一系列的加载试验中,测得的p值与相应的变形d为: p=[0,10.0,20.5,30.4,39.8,49.6,60.1,70.0,79.2,90.4,100.0] d=[0,0.11,0.20,0.31,0.39,0.49,0.70,0.89,1.10,1.31,1.50] (1)若拟合p-d曲线,且假设p是d的三次函数,即p=a1*d^3+a2*d^2+a3*d+a4 根据上面所测的数据,求三次曲线的系数a1~a4. (2)若拟合p-d曲线,且假设p是d的双线性关系,即当p<=50时,p=a1*d+a2; 当p>50时,p=a3*d+a4. 根据上面所测的数据,求双直线拟合的各系数a1~a4. p=[0,10.0,20.5,30.4,39.8,49.6,60.1,70.0,79.2,90.4,100.0] d=[0,0.11,0.20,0.31,0.39,0.49,0.70,0.89,1.10,1.31,1.50] (1) A=[d.^3;d.^2;d;ones(1,length(d))]’; x=A\p; a1=x (1); a2=x (2); a3=x(3); a4=x(4); (2) A=zeros(length(d),4); A(1: 6,1)=d(1: 6)’; A(1: 6,2)=ones(6,1); A(7: 11,3)=d(7: 11)’; A(7: 11,4)=ones(5,1); x=A\p; a1=x (1); a2=x (2); a3=x(3); a4=x(4); (29) 应用实例 如图所示的弹簧-阻尼-质量系统的质量为m,刚度为k,阻尼为c。 其自由振动的微分方程可以表示为: ,其中x为任一时刻质量块离平衡位置的位移, 与 分别为位移对时间的一阶、二阶导数,分别称为速度与加速度。 若m=10,k=100,c=4。 编写Matlab程序求该质量块在初始位移为1,初始速度为0时,前20秒的位移解。 若c=8,50时,从新求解上述方程,并画出c=4,8,50时的位移曲线图(提示,先编写函数文件,再调用matlab命令求解)。 functiondydt=myode(t,x) m=10; k=100; c=4; dydt=[x (2);-c/m*x (2)-k/m*x (1)]; end [t,y]=ode45(@myode,[0: 0.01: 20],[1,0]); 通过这次论文,增强了自己的自主学习能力,充分认识到了matlab的强大,增进了自己的学习兴趣。 在这个过程中巩固和提高了自己对所学知识的掌握和理解,感受到自身能力的提高,自己还认识到了持之以恒的重要性,只要全身心的投入一项工作,每件事都可以做到自己心中的完美。 总之,业精之法在于专,读书贵在有常,只有坚定的决心,不懈的努力,顽强的斗志才能做好每一件事,就像要学好MATLAB,必须努力去学好它,才能为我们所用,用到专业上去解决问题,让自己成为一个对社会有用的人。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 论文