MATLAB程序设计第五讲解析
- 格式:doc
- 大小:313.00 KB
- 文档页数:28
西南科技大学本科生课程备课教案计算机技术在安全工程中的应用——Matlab入门及应用授课教师:徐中慧班级:专业:安全技术及工程第四章课型:新授课教具:多媒体教学设备,matlab教学软件一、目标与要求掌握矩阵与数组的相关运算,及matlab中矩阵运算的相关函数,包括三角分解、正交变换、奇异值分解、特征值分解、矩阵的秩的运算等。
二、教学重点与难点本堂课教学的重点在于引导学生在编写matlab程序时能够熟练运用矩阵运算的相关函数实现相应的功能。
三、教学方法本课程主要通过讲授法、演示法、练习法等相结合的方法来引导学生掌控本堂课的学习内容。
四、教学内容一、课后习题的解说。
(1)在计算器发明(约1974年)之前,人们需要用数学用表来计算正弦、余弦和对数值。
创建正弦值数学用表的步骤如下:①创建角度矢量、范围在0~3600之间,步长为180。
②计算正弦值,用角度和计算出来的正弦值创建表格。
③分别用两个disp语句给表格加上标题和表头。
④用fprintf显示数据,要求小数点后有两位有效数字。
解:angle=0:18:360; sine=sin(angle/180*pi);disp(' SINE TABLE ')disp(' Angle Sine ')fprintf(' %4.2f %4.2e\n',[angle;sine])(2)使用搜索引擎或浏览器搜索英镑、日元、欧元和人民币对美元的汇率,并把输出结果绘制成表。
要求用disp在表格中添加标题和表头,用fprintf输出格式化数据。
①创建日元和美元的汇率表,表中共有25行,从5日元开始,步长为5日元②创建人民币和美元的汇率表,表中共有30行,从5元开始,步长为5元③创建数据表格,表中有5列,第一列是美元,第二列是欧元,第三列是英镑,第四列是人民币,第五列是日元。
计算与1到10美元等价的其它货币值。
(将结果输出到.txt文件中,此步骤属选做)解:①jpy=5:5:25*5;usd1=jpy*0.01301;disp(' JPY &USD TABLE ')disp(' JPY USD ')fprintf(' %4.2f %4.2f\n',[jpy;usd1])②cny=5:5:30*5;usd2= cny *0.1567;disp(' CNY &USD TABLE ') disp(' RMB USD ') fprintf(' %4.2f %4.2f\n',[cny;usd2])③usd=1:1:10;eur=usd* 0.7323; gbp=usd* 0.6405; cny=usd* 6.3816; jpy=usd*76.358;disp(' AS Exch')disp(' USD EUR GBP RMB JPY')fprintf(' %4.2f %4.2f %4.2f %4.2f %4.2f \n',[ usd;eur;gbp;cny;jpy])二、矩阵的相关知识掌握矩阵与数组的相关运算,及matlab 中矩阵运算的相关函数,包括三角分解、正交变换、奇异值分解、特征值分解、矩阵的秩的运算等。
机械与汽车工程学院 MATLAB程序设计第五讲 MATLAB 绘图教学目标教学重点教学内容第1页机械与汽车工程学院 MATLAB程序设计教学目标了解 MATLAB 的图形窗口l 掌握 MATLAB 基本二维图形、三维图形的绘制,及图形的基本操作 l 掌握MATLAB 特殊图形的绘制,如柱状图、饼状图 l 掌握图形注释的添加及管理 l 了解三维图形的视点控制及颜色、光照控制 l 第2页机械与汽车工程学院 MATLAB程序设计教学重点 MATLAB 基本二维图形、三维图形的绘制,及图形的基本操作 l MATLAB 特殊图形的绘制,如柱状图、饼状图 l 第3页机械与汽车工程学院 MATLAB程序设计教学内容基本图形的绘制 l 特殊图形的绘制 l 图形注释 l 三维图形的高级控制 l MATLAB 图形窗口 l 第4页机械与汽车工程学院 MATLAB程序设计基本图形的绘制二维图形的绘制 l 三维图形的绘制 l 图形的其他操作 l 第5页机械与汽车工程学院 MATLAB程序设计二维图形的绘制函数名功能在线性坐标系中绘制二维图形在对数坐标系中绘制二维图形对数图形,x 为对数坐标,y 为线性坐标对数图形,x 为线性坐标,y 为对数坐标绘制双 y 轴图形第6页 plot loglog semilogx semilogy plotyy机械与汽车工程学院 MATLAB程序设计 plot 函数 l plot 函数的调用格式为:– plot(Y – plot(X1,Y1,... – plot(X1,Y1,LineSpec,... – h = plot( (7)机械与汽车工程学院 MATLAB程序设计 plot 函数格式1 l l l l plot(Y Y 是向量:以向量索引(下标为横坐标,以向量元素值为纵坐标绘制图形,以直线段顺序连接各点; Y 是矩阵,同上,分别把每列元素用线段连接绘制; Y 是复数向量,以实部为横坐标,虚部为纵坐标, plot(Y = plot(real(Y,imag(Y (y=[1:4;2:2:8], plot(y (y=[1+3*i,2+2*i,3+5*i,4+2*i], plot(y 第8页机械与汽车工程学院 MATLAB程序设计 plot 函数格式2 l plot(x,y – x、y 均为行(列向量: 以 x 的元素为横坐标,y 的元素为纵坐标绘制图形;– x 为长度n 的向量,y 为 m×n 矩阵:以 x 的元素为横坐标,绘制 y 的 m 个 n 维向量;(x=1:10;y=[-9:0;0:9], plot(x,y – x、y 均为 m×n 矩阵:以 x 的各列为横坐标,以y 的对应列为纵坐标绘制 (x=[0:9;1:10], y=[-9:0;0:9], plot(x,y 第9页机械与汽车工程学院 MATLAB程序设计 plot 函数格式3 l lplot(x,y, ’LineSpec’ Li neSpec(字符串:图像控制,包括线条的形状、颜色和线型颜色符号含义数据点型 b . 蓝色 g x 绿色 r + 红色 c h 篮绿色 m * 紫红色 y s 黄色 k d 黑色含义• r É Y ¶ ¨ ¯ 线型 : -. -空格含义实线点线点划线虚线不画线第10页机械与汽车工程学院 MATLAB程序设计 >> x= 0:0.01:10; >> y=tan(x; >>plot(x,y >> 第11页机械与汽车工程学院 MATLAB程序设计三维图形的绘制 l 三维图形包括:–三维曲线图:plot3 –三维曲面图: mesh 和surf 第12页机械与汽车工程学院 MATLAB程序设计 Plot3 格式 l l plot3(X,Y,Z – X、Y、Z 为长度相同的向量,分别以 X、Y、Z 为横、纵、竖坐标绘制空间曲线;– X、Y、Z 皆为m×n矩阵,以每个矩阵的对应列为三坐标绘制出m条空间曲线(t=~eye(3;x=zeros(2,3;y=x;z=x;x(2,:=t(3,:,y(2,:=t(2,:, z(2,:=t(1,:,plot3(x,y,zplot3(X1,Y1,Z1,LineSpec 第13页机械与汽车工程学院 MATLAB程序设计 >> % 该程序用于绘制三维的螺旋曲线图 >> t = 0:pi/50:20*pi; >> plot3(sin(t,cos(2*t,sin(t+cos(t 第14页机械与汽车工程学院 MATLAB程序设计 mesh 、 surf 函数 mesh :绘制出在某一区间内完整的网格曲面 l surf :绘制曲面图 l – mesh/surf (X,Y,Z:绘制一个网格曲面图,颜色取决 Z :即颜色∝高度。
第五讲非线性方程求根及其MATLAB实现一、引言在数学和工程领域中,非线性方程的求解是一项基本任务。
非线性方程通常不具备直接求解的方法,因此需要采用迭代方法来逼近其解。
本讲将介绍几种常用的非线性方程求根方法,并给出MATLAB实现的示例。
二、二分法二分法是一种简单但有效的求根方法。
其基本思想是将方程的根所在的区间进行逐步划分,并选择其中点作为迭代的点,直到满足精度要求。
具体实现如下:```matlabfunction x = bisection(f, a, b, tol)if f(a) * f(b) >= 0error('f(a)和f(b)符号相同');endwhile (b - a) / 2 > tolx=(a+b)/2;if f(x) == 0break;elseif f(a) * f(x) < 0b=x;elsea=x;endendend```三、牛顿法牛顿法是一种基于方程导数的迭代方法,其基本思想是使用方程的切线来逼近其根。
具体实现如下:```matlabfunction x = newton(f, df, x0, tol)while abs(f(x0)) > tolx0 = x0 - f(x0) / df(x0);endx=x0;end```四、割线法割线法是一种类似于牛顿法的迭代方法,其基本思想是用两个迭代点的连线来逼近方程的根。
具体实现如下:```matlabfunction x = secant(f, x0, x1, tol)while abs(f(x1)) > tolx=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));x0=x1;x1=x;endend```五、MATLAB实现示例下面是一些使用上述非线性方程求根方法的MATLAB示例:```matlab% 示例1:求方程sin(x) = 0的根a=0;b = 2 * pi;tol = 1e-6;x = bisection(f, a, b, tol);disp(['二分法求解的根为:', num2str(x)]);disp(['牛顿法求解的根为:', num2str(x)]);x = secant(f, a, b, tol);disp(['割线法求解的根为:', num2str(x)]);%示例2:求方程x^2-2=0的根x0=1;tol = 1e-6;x = newton(f, df, x0, tol);disp(['牛顿法求解的根为:', num2str(x)]);```六、总结本讲介绍了几种常用的非线性方程求根方法,并给出了MATLAB的实现示例。
Matlab程序设计教程(第二版)刘卫国课后参考答案解析第二章1 求下列表达式的值。
(1)w=sqrt(2)*(1+0.34245*10^(-6))(2)a=3.5;b=5;c=-9.8;x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a(3)a=3.32;b=-7.9;y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a](4)t=[2,1-3*i;5,-0.65];z=1/2*exp(2*t)*log(t+sqrt(1+t^(2)))2 求下列表达式A=[-1,5,-4;0,7,8;3,61,7];B=[8,3,-1;2,5,3;-3,2,0];(1)A+6*B A^2-B+eye(2)A*B A.*B B.*A(3)A/B B\A(4)[A,B] [A([1,3],:);B^2]3 根据已知,完成下列操作(1)A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14];K=find(A>10&A<25);A(K)(2)A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14];B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C(3)E<="">第三章1 从键盘输入一个3位数,将它反向输出,如输入639,出数936。
f=input('输入一个数:','s');f(end :-1:1)2 用if语句score=input('请输入成绩:');if score>=90&&score<=100disp('A');elseif score>=80&&score<=89disp('B');elseif score>=70&&score<=79disp('C');elseif score>=60&&score<=69;disp('D');elseif score<60&&score>=0;disp('E');elsedisp('出错');end用switch语句score=input('请输入成绩:');switch fix(score/10)case {9,10}disp('A');case {8}disp('B');case {7}disp('C');case {6}disp('D');case {0,1,2,3,4,5}disp('E');otherwisedisp('出错');end第四章1题1) X=0:10;Y=x-x.^3/6;P lot(x,y)2) t=0:0.01:2*pi;x=8.*cos(t);y=4*sqrt(2).*sin(t);plot(x,y)2题M文件:t=-pi:pi/10:pi;y=1./(1+exp(-t));subplot(2,2,1);bar(t,y,'b');title('bar(t,y,''b'')');axis([-5,5,-3,3]); subplot(2,2,2);stairs(t,y,'k');title('stairs (t,y,''k'')');axis([-5,5,-3,3]); subplot(2,2,3);stem(t,y,'m');title('stem (t,y,''m'')');axis([-5,5,-3,3]); subplot(2,2,4);loglog(t,y,'g');title('loglog(t,y,''g'')');axis([-5,5,-3,3]);3题1)t=0:pi/100:2*pi;y=5*cos(t)+4;polar(t,y,'-*')2)t=-pi/3:pi/100:pi/3;r=5*sin(t).^2./cos(t);polar(t,r,'-*')4题1)t=0:pi/100:2*pi;x=exp(-t/20).*cos(t);y=exp(-t/20).*sin(t);z=t;plot3(x,y,z)第五章:1题A=randn(10,5)1) X=mean(A)Y=std(A,0,1)2) max(max(A))min(min(A))3) B=sum(A,2)sum(B)4) sort(A);sort(A,2,'descend')2题1)t=0:15:90;x1=[0,0.2588,0.5000,0.7071,0.8660,0.9659,1.0000];a1=0:1:90;y1=interp1(t,x1,a1,'spline')x2=[0,0.2679,0.5774,1.0000,1.7320,3.7320,NaN]; a2=0:1:75; y2= interp1(t,x2,a2,'spline')p1=polyfit(t,x1,5);z1=polyval(p1,a1)p2=polyfit(t,x2,5);z2=polyval(p2,a2)4题P=[2,-3,5,13];Q=[1,5,8];p=polyder(P)p1=polyder(P,Q)[p,q]= polyder(P,Q)5题P1=[1,2,4,0,5];P2=[1,0];P3=[1,2,3];1) P4=conv(P2,P3)P4=[0,1,2,3,0];P=P1+P42) x=roots(P)3) A=[-1,1.2,-1.4;0.75,2,3.5;0,5,2.5];Y=polyval(P,A)4) Z=polyvalm(P,A)第8章1.分解因式. (2)factor(sym(‘5135’))(1)syms A x y;A=x^4-y^4;factor(A)2.求函数的极限(1)syms x; (2)syms x;limit((x-2)/(x^2-4),x,2)f=(sqrt(pi)-sqrt(acos(x)))/sqrt(x+1);limit(f,x,-1,'right')3.求函数的符号导数。
MATLAB程序设计杨凯2010 . 11内容回顾一、二维绘图关键命令关键命令::plot 二、三维绘图关键命令关键命令::三维曲线三维曲线::plot3三维曲面三维曲面::meshgird;mesh;surf主要内容——数据分析与计算一、数据统计处理二、数据插值三、曲线拟合四、离散傅立叶变换五、多项式计算一、数据统计处理1.1最大值和最小值MATLAB 提供的求数据序列的最大值和最小值的函数分别为max 和min ,两个函数的调用格式和操作过程类似数的调用格式和操作过程类似。
1、求向量的最大值和最小值求一个向量X 的最大值的函数有两种调用格式格式,,分别是分别是::(1 y=max(X:返回向量X 的最大值存入y ,如果X 中包含复数元素中包含复数元素,,则按模取最大值则按模取最大值。
(2 [y,I]=max(X:返回向量X 的最大值存入y ,最大值的序号存入I ,如果X 中包含复数元素中包含复数元素,,则按模取最大值取最大值。
求向量X 的最小值的函数是min(X,用法和max(X完全相同完全相同。
例:求向量x 的最大值的最大值。
命令如下命令如下::x=[-43,72,9,16,23,47];y=max(x %求向量x 中的最大值[y,l]=max(x %求向量x 中的最大值及其该元素的位置2.求矩阵的最大值和最小值求矩阵A 的最大值的函数有3种调用格式种调用格式,,分别是分别是::(1 max(A:返回一个行向量返回一个行向量,,向量的第i 个元素是矩阵A 的第i 列上的最大值列上的最大值。
(2 [Y,U]=max(A:返回行向量Y 和U ,Y 向量记录A 的每列的最大值的每列的最大值,,U 向量记录每列最大值的行号大值的行号。
(3 max(A,[],dim:dim取1或2。
dim取1时,该函数;dim取2时,该函数返回一个和max(A完全相同完全相同;行上的最大值。
,其第i个元素是A矩阵的第i行上的最大值列向量,列向量完全相同。
求最小值的函数是min,其用法和max完全相同例:分别求3×4矩阵x中各列和各行元素中的最大。
值,并求整个矩阵的最大值和最小值并求整个矩阵的最大值和最小值。
3.两个向量或矩阵对应元素的比较函数max 和min 还能对两个同型的向量或矩阵进行比较进行比较,,调用格式为调用格式为::(1 U=max(A,B:A,B 是两个同型的向量或矩阵是两个同型的向量或矩阵,,结果U 是与A,B 同型的向量或矩阵同型的向量或矩阵,,U 的每个元素等于A,B 对应元素的较大者对应元素的较大者。
(2 U=max(A,n:n 是一个标量是一个标量,,结果U 是与A 同型的向量或矩阵的向量或矩阵,,U 的每个元素等于A 对应元素和n 中的较大者中的较大者。
min 函数的用法和max 完全相同完全相同。
例:求两个2×3矩阵x, y 所有同一位置上的较大元素构成的新矩阵p 。
1.2 求和与求积数据序列求和与求积的函数是sum和是一个向量,,其使用方法类似。
设X是一个向量prod,其使用方法类似是一个矩阵,,函数的调用格式为函数的调用格式为::A是一个矩阵各元素的和。
sum(X:返回向量X各元素的和各元素的乘积。
prod(X:返回向量X各元素的乘积返回一个行向量,,其第i个元素是A sum(A:返回一个行向量。
的第i列的元素和列的元素和。
prod(A:返回一个行向量返回一个行向量,,其第i 个元素是A 的第i 列的元素乘积的元素乘积。
sum(A,dim:当dim 为1时,该函数等同于sum(A;当dim 为2时,返回一个列向量返回一个列向量,,其第i 个元素是A 的第i 行的各元素之和行的各元素之和。
prod(A,dim:当dim 为1时,该函数等同于prod(A;当dim 为2时,返回一个列向量返回一个列向量,,其第i 个元素是A 的第i 行的各元素乘积行的各元素乘积。
例: 求矩阵A 的每行元素的乘积和全部元素的乘积的每行元素的乘积和全部元素的乘积。
1.3 平均值和中值求数据序列平均值的函数是mean ,求数据序列中值的函数是median 。
两个函数的调用格式为两个函数的调用格式为::mean(X:返回向量X 的算术平均值的算术平均值。
median(X:返回向量X 的中值的中值。
mean(A:返回一个行向量返回一个行向量,,其第i 个元素是A 的第I 列的算术平均值列的算术平均值。
median(A:返回一个行向量返回一个行向量,,其第i 个元素是A 的第i 列的中值列的中值。
mean(A,dim:当dim 为1时,该函数等同于mean(A;当dim 为2时,返回一个列向量返回一个列向量,,其第i 个元素是A 的第I 行的算术平均值行的算术平均值。
当为时,等同于;当median(A,dim:dim 1median(Adim 为2时,返回一个列向量返回一个列向量,,其第i 个元素是A 的第i 行的中值的中值。
例:分别求向量x 与y 的平均值和中值的平均值和中值。
1.4 标准方差与相关系数1.求标准方差在MATLAB 中,提供了计算数据序列的标准方差的函数std 。
对于向量X ,std(X返回一个标准方差方差。
对于矩阵A ,std(A返回一个行向量返回一个行向量,,它的各个元素便是矩阵A 各列或各行的标准方差各列或各行的标准方差。
std 函数的一般调用格式为的一般调用格式为::Y=std(A,flag,dim其中dim 取1或2。
当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差则求各行元素的标准方差。
flag 取0或1例: 对二维矩阵x ,从不同维方向求出其标准方差从不同维方向求出其标准方差。
2、排序MATLAB 中对向量X 是排序函数是sort(X,函数返回一个对X 中的元素按升序排列的新向量中的元素按升序排列的新向量。
sort 函数也可以对矩阵A 的各列或各行重新排序,其调用格式为其调用格式为::[Y,I]=sort(A,dim其中dim 指明对A 的列还是行进行排序的列还是行进行排序。
若dim=1,则按列排则按列排;;若dim=2,则按行排则按行排。
Y 是排序后的矩阵后的矩阵,,而I 记录Y 中的元素在A 中位置中位置。
例:对二维矩阵做各种排序对二维矩阵做各种排序。
自学其他部分统计函数((自学3.其他部分统计函数(1累计和cumsum(2累积积sumprod(3相关系数corrcoef这些函数调用的参数与操作方式都与MEDIAN因此不作详细的介绍。
,因此不作详细的介绍函数基本上一样(中值中值函数基本上一样,二、数据插值插值的定义——是对某些集合给定的数据点之间函数的估值方法数的估值方法。
当不能很快地求出所需中间点的函数时当不能很快地求出所需中间点的函数时,,插值是一个非常有价值的工具个非常有价值的工具。
2.1 一维数据插值在MATLAB 中,实现这些插值的函数是interp1,其调用格式为其调用格式为::Y1=interp1(X,Y,X1,'method'函数根据X,Y 的值的值,,计算函数在X1处的值处的值。
X,Y 是两个等长的已知向量是两个等长的已知向量,,分别描述采样点和样本值分别描述采样点和样本值。
Y1=interp1(X,Y,X1,'method'X1是一个向量或标量是一个向量或标量,,描述欲插值的点描述欲插值的点,,Y1是一个与X1等长的插值结果等长的插值结果。
method 是插值方法是插值方法,,允许的取值有许的取值有‘‘linear’、‘nearest’、‘cubic’、‘spline’。
注意注意::X1的取值范围不能超出X 的给定范围的给定范围,,否则,会给出会给出““NaN”错误错误。
MATLAB 中有一个专门的3次样条插值函数Y1=spline(X,Y,X1,其功能及使用方法与函数Y1=interp1(X,Y,X1,‘spline’完全相同完全相同。
例:插值在车轮外形曲线检测中的应用车轮曲线特点车轮曲线特点::多段圆弧状曲线拼接而成基本原理基本原理::磁爬式系统组成系统组成::(1两个旋转编码器两个旋转编码器;;(2磁性小球磁性小球;;θ1θ2O 1O 2O 3(3机械支架机械支架;;测量曲线:(测量曲线例:某观测站测得某日6:00时至18:00时之间每隔2小时的室内外温度(℃,用3次样条插值分别求得该日室内外6:30至17:30时之间每隔2小时各点的近似温度(℃。
h =6:2:18;t=[18,20,22,25,30,28,24;15,19,24,28,34,32,30]';设时间变量h 为一行向量为一行向量,,温度变量t 为一个两列矩阵矩阵,,其中第一列存放室内温度其中第一列存放室内温度,,第二列储存室外温度温度。
命令如下命令如下::XI =6.5:2:17.5YI=interp1(h,t,XI,‘spline’ %用3次样条插值计算2.2 二维数据插值在MATLAB 中,提供了解决二维插值问题的函数interp2,其调用格式为其调用格式为::Z1=interp2(X,Y,Z,X1,Y1,'method'其中X,Y 是两个向量是两个向量,,分别描述两个参数的采样点样点,,Z 是与参数采样点对应的函数值是与参数采样点对应的函数值,,X1,Y1是两个向量或标量个向量或标量,,描述欲插值的点描述欲插值的点。
Z1是根据相应的插值方法得到的插值结果插值方法得到的插值结果。
method 的取值与一维插值函数相同值函数相同。
X,Y,Z 也可以是矩阵形式也可以是矩阵形式。
同样同样,,X1,Y1的取值范围不能超出X,Y 的给定范围范围,,否则否则,,会给出会给出““NaN”错误错误。
三、曲线拟合在MATLAB 中,用polyfit 函数来求得最小二乘拟合多项式的系数拟合多项式的系数,,再用polyval 函数按所得的多项式计算所给出的点上的函数近似值式计算所给出的点上的函数近似值。
polyfit 函数的调用格式为函数的调用格式为::[P,S]=polyfit(X,Y,m函数根据采样点X 和采样点函数值Y ,产生一个m 次多项式P 及其在采样点的误差向量S 。
其中X,Y 是两个等长的向量是两个等长的向量,,P 是一个长度为m+1的向量的向量,,P 的元素为多项式系数的元素为多项式系数。
polyval 函数的功能是按多项式的系数计算x 点多项式的值polyval 函数用来求代数多项式的值数多项式的值,,其调用格式为:Y=polyval(P,x若x 为一数值为一数值,,则求多项式在该点的值则求多项式在该点的值;;若x 为向量或矩阵为向量或矩阵,,则对向量或矩阵中的每个元素求其多项式的值其多项式的值。