Matlab 第四章
MATLAB-第4章

v
i 1
n
2 i
。
max { vi } 。
1 ≤i ≤n
设 A 是一个 m ×n 的矩阵,矩阵的 3 种常用范数如下。 1-范数: A 1 max { aij } 。
1 ≤ j ≤n i 1 m
2-范数: A 2 1 ,其中 λ 1 为 A'A 最大特征值。 ∞-范数: A max { aij } 。
【例4.6】先建立5 × 5矩阵A,然后将A的第一行元素乘以1, 第二行乘以2,…,第五行乘以5。 用一个对角矩阵左乘一个矩阵时,相当于用对角阵的第一个 元素乘以该矩阵的第一行,用对角阵的第二个元素乘以该 矩阵的第二行……依此类推,因此,只需按要求构造一个 对角矩阵D,并用D左乘A即可。命令如下: A=[1:5;2:6;3:7;4:8;5:9] D=diag(1:5); D*A %用D左乘A,对A的每行乘以一个指定常数
(2)构造对角矩阵 设V为具有m个元素的向量,diag(V,k)的功能是产生一个 n × n(n = m + k|)对角阵,其第k条对角线的元素即为 向量V的元素。 例如: diag(1:3,-1) ans = 0 0 0 0 1 0 0 0 0 2 0 0 0 0 3 0 省略k时,相当于k为0,其主对角线元素即为向量V的元素。
2.矩阵的秩与迹 (1)矩阵的秩 rank(A) (2)矩阵的迹 矩阵的迹即矩阵的对角线元素之和。 trace(A)。
3.向量和矩阵的范数
设向量 V = (v1 ,v2 ,…,vn ),向量的 3 种常用范数如下。 1-范数: V 2-范数: V ? -范数: V
1
vi 。
i 1
n
2
3.矩阵的转置 所谓转置,即把源矩阵的第一行变成目标矩阵第一列,第二 行变成第二列……依此类推。显然,一个m行n列的矩阵 经过转置运算后,变成一个n行m列的矩阵。MATLAB中, 转置运算符是单撇号(')。
matlab讲义第四章

图4.11 函数PEAKS的带洞孔曲面图
MATLAB的surf也有两个同种函数:surfc,它画出具有 基本等值线的曲面图。surfl,它画出一个有亮度的曲面 图。例如:
» [X,Y,Z]=peaks(30); » surfc(X,Y,Z) % surf plot with contour plot » grid,xlabel('x-axis'),ylabel('yaxis'),zlabel('z-axis') » title('SURFC of PEAKS')
图4.3 正弦曲线图
利用在x-y平面的矩形网格点上的z轴坐标值,MATLAB 定义了一个网格曲面。MATLAB通过将邻接的点用直线连接起 来形成网状曲面 ,其结果好象在数据点有结点的鱼网。例 如,用MATLAB的函数peaks可以画一个简单的曲面。 » [X,Y,Z]=peaks(30); » mesh(X,Y,Z) » grid on » xlabel('x-axis'),ylabel('y-axis'),zlabel('zaxis') » title('MESH of PEAKS')
图4.4 函数PEAKS的网格图
在显示器上要注意到线的颜色与网格的高度有关。一般情况下, 函数mesh有可选的参量来控制绘图中所用的颜色。关于MATLAB如何 使用、改变颜色在下面讨论。在任何情况下,由于颜色用于增加图 形有效的第四维,这样使用的颜色被称做伪彩色。 上图所示,网格线条之间的区域是不透明的。MATLAB命令 hidden控制网格图的这个特性。例如,用MATLAB的函数sphere产生 两个球面如下: » [X,Y,Z]=sphere(12); » subplot(1,2,1) » mesh(X,Y,Z),title('Opaque') » hidden on; » axis off; » subplot(1,2,2),title('Transparent'); » mesh(X,Y,Z); » hidden off; » axis off;
matlab第四章课件

4.1.1 M文件的分类
M文件是由若干 Matlab 命令组合在一起构成的,它可 以完成某些操作,也可以实现某种算法
事实上,Matlab 提供的内部函数以及各种工具箱,都是利用 Matlab 语言编写的 M文件 用户也可以结合自己的工作需要,开发自己的程序或工具箱
M文件根据调用方式的不同可以分为两类: Script file:命令文件/脚本文件 Function file:函数文件
例2 输入x,y的值,并将它们的值互换后输出(swap.m)。 x=input('Input x please.'); y=input('Input y please.'); z=x; x=y; y=z; disp(x); disp(y); 例3 求一元二次方程ax2 +bx+c=0的根(root.m)。 a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)]; disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);
例如:
s=0; a=[12 13 14;15 16 17;18 19 20;21 22 23] for k=a s=s+k; end disp(s); 该程序的功能是求矩阵各行元素之和,执行结果是: 39 48 57 66
while语句
while expr (条件) statement(循环体语句) end 若expr成立,则执行循环体的内容,执行后 再判断条件是否为真,如果不成立则跳出循环体。
控制系统仿真及MATLAB语言--第四章 连续系统的离散化方法

t2 0.2, y2 y1 1 0.1y1 0.9 0.91 0.819 t10 1.0, y10 y9 1 0.1y9 0.4628
t3 0.3, y3 y2 1 0.1y2 0.8191 0.1 0.819 0.7519
状态方程的四阶龙格-库塔公式如下:
h xk +1 xk (K 1 2K 2 2K 3 K 4 ) 6 K 1 Axk Bu (tk ) K 2 A(xk h K 1 ) Bu (tk h ) 2 2 K A (x h K ) Bu (t h ) k 2 k 3 2 2 K A(x hK ) Bu (t h) k 3 k 4 y k +1 Cxk +1
41常微分方程的数值解法数值求解的基本概念设微分方程为则求解方程中函数xt问题的常微分方程初值问题所谓数值求解就是要在时间区间ab中取若干离散点求出微分方程在这些时刻的近似值这种方法的几何意义就是把ftx在区间tk1内的曲边面积用矩形面积近似代替
第四章 连续系统的离散化方法
4.1
常微分方程的数值解法
h xk 1 xk h f k ( ftk ' f xk ' f k ) 2!
f 'tk f 'xk 等各阶导数不易计算,用下式中 ki的线性组合代替
xk 1 xk h ai ki
i 1
r
线性组合
r为精度阶次,ai为待定系数,由精度确定;ki用下 式表示 i 1
ki f (tk b1h, xk hb2 k j ) , i 2,3
将 f tk b1h,xk hb2k1 在点 tk , xk 展成Taylor级数
matlab数值分析第四章

在图4-2中,用‘x’标记了上述解对应的点(ξ,J0(ξ))。
在MATLAB第6版中,可以使用feval对函数参数求值。表达式 feval(F,x,...) 等价于F(x,...) 它们的区别在于,使用feval时,允许F作为一个被传递来的参 数。在MATLAB第7版中,feval就丌再需要了。 fzerotx秳序开始的一段注释内容如下:
y = bessj0(x); plot(z,zeros(1,10),'o',x,y,'-') line([0 10*pi],[0 0],'color','black') axis([0 10*pi -0.5 1.0])
从图中可以看出,J0 (x)的图形很像是cos (x)的幅值和频率经 过调制后的版本,相邻 两个零解的距离近似等 于π。
• 第一段代码对定义搜索区间的变量a、b和c初始化,在初 始区间的端点处对函数F求值。
• 下面是主循环的开始。在每次迭代步的开始,先对a、b和 c重新排列,使它们满足zeroin算法中描述的条件。
• 返部分是收敛条件判断,并可能从循环中退出。
• 下部分代码是在二分法和两种基于揑值的方法间迕行选择。
第一类的零阶贝塞尔函数J0(x)
• 第一类贝塞尔函数(Bessel function of the first kind), 又称贝塞尔函数(Bessel function),简称为J函数, 记作Jα。 • 第一类α阶贝塞尔函数Jα(x)是贝塞尔方秳当α为整数戒 α非负时的解,须满足在x = 0 时有限。另一种定义方 法是通过它在x = 0 点的泰勒级数展开(戒者更一般地 通过幂级数展开,返适用于α为非整数):
Байду номын сангаас
MATLAB数学实验 第四章 函数和方程

2 ( y f ( c , x )) i i i 0 n
• 当f关于c是线性函数,问题转化为一个线性方程组求解。 • 如果f关于c是非线性函数,问题转化为函数极值问题
3387/1943*x^2-7637646031980105/4503599627370496*x+4886217849135065/4503599627370496
• >> vpa(fun,5) ans = 1.7432*x^2-1.6959*x+1.0850
• >> xi=-0.2:0.01:0.3; • >> yi=polyval(p,xi); • >> plot(x,y,‘ro’,xi,yi)%拟合效果作图
c= lsqnonlin (Fun,c0) non-linear least squares problems.
使用迭代法搜索最优参数c. 其中Fun是以参数c(可 以是向量)为自变量的函数,表示误差向量yf(c,x)(x, y为数据),c0为参数c的近似初值(与c同 维向量),具体使请看帮助文件。
c=lsqcurvefit(Fun2,c0, x, y) 从外部输入数据, 这里Fun2为两变量c和x的函数 f(c, x)
的调用格式
x= -3 y= -2.7183
• (3) • >> fun3=inline('100*(v(2)-v(1)^2)^2+(1-v(1))^2','v') fun3 = Inline function: fun3(v) = 100*(v(2)-v(1)^2)^2+(1-v(1))^2 • >> [v,fv]=fminsearch(fun3,[1 1]) v= 1 1 fv = 0
第四章_MATLAB的数值计算功能

第四章MATLAB 的数值计算功能Chapter 4: Numerical computation of MATLAB数值计算是MATLAB最基本、最重要的功能,是MATLAB最具代表性的特点。
MATLAB在数值计算过程中以数组和矩阵为基础。
数组是MATLAB运算中的重要数据组织形式。
前面章节对数组、矩阵的特征及其创建与基本运算规则等相关知识已作了较详尽的介绍,本章重点介绍常用的数值计算方法。
一、多项式(Polynomial)`多项式在众多学科的计算中具有重要的作用,许多方程和定理都是多项式的形式。
MATLAB提供了标准多项式运算的函数,如多项式的求根、求值和微分,还提供了一些用于更高级运算的函数,如曲线拟合和多项式展开等。
1.多项式的表达与创建(Expression and Creating of polynomial)(1) 多项式的表达(expression of polynomial)_Matlab用行矢量表达多项式系数(Coefficient)和根,系数矢量中各元素按变量的降幂顺序排列,如多项式为:P(x)=a0x n+a1x n-1+a2x n-2…a n-1x+a n则其系数矢量(V ector of coefficient)为:P=[a0 a1… a n-1 a n]如将根矢量(V ector of root)表示为:ar=[ ar1 ar2… ar n]则根矢量与系数矢量之间关系为:(x-ar1)(x- ar2) … (x- ar n)= a0x n+a1x n-1+a2x n-2…a n-1x+a n(2)多项式的创建(polynomial creating)a,系数矢量的直接输入法利用poly2sym函数直接输入多项式的系数矢量,就可方便的建立符号形式的多项式。
例1:创建给定的多项式x3-4x2+3x+2poly2sym([1 -4 3 2])ans =x^3-4*x^2+3*x+2也可以用poly2str.求一个方阵对应的符号形式的多项式。
matlab第4章

行向量元素为按降幂排列的多项式系数。
1.多项式乘法函数 conv ( )
格式:C= conv (A, B) %求多项式A和B的乘积
A、B是两个多项式的系数向量,按降幂排列。 conv( ) 把两个多项式相乘合并成一个多项式。
2
p1 2s 3;
2
p2 s 2 4
3 2
A (2s 3)(s 4) 2s 3s 8s 12
x:操作点处的状态向量
u:操作点处的输入向量
x,u缺省值为0。
20
( s 1)(s 2 2s 6) 2 【例4.4】 求传递函数 G(s) 2 s (s 3)(s 3 2s 2 3s 4)
的分子和分母多项式,并求传递函数的特征 根。
21
% num 分子多项式 % conv( ) 采用嵌套形式
G (s)
5s 3 s 3 6 s 2 11s 6
13
3.部分分式展开函数residue ( ) 功能:对两个多项式的比进行部分展开。 格式:[r, p, k]=residue(b, a) 求B(s)/A(s)的部分分式展开式 向量b和a是按s降幂排列的多项式系数。
14
B( s) bn s n bn1s n1 ...b0 F ( s) A( s) an s n an1s n1 ...a0
38
2.并联 G(s)=G1(s)+G2(s) 模型并联函数 parallel 格式:[num, den]=parallel(num1, den1, num2, den2) num1, den1:G1(s) 的分子、分母多项式 num2, den2:G2(s)的分子、分母多项式 num, den:G(s) 的分子、分母多项式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%多项式相乘
p1_divide_p2 =deconv(p1,p2);
%多项式除法
p1=poly2sym(p1)
%显示多项式p1
p2=poly2sym(p2)
%显示多项式p2
p1_plus_p2=poly2sym(p1_plus_p2)
p1_minus_p2=poly2sym(p1_minus_p2)
度是否相等
p1_plus_p2=p1+p2;
%多项式相加
p1_minus_p2=p1-p2;
%多项式相减
elseif length_of_p1<length_of_p2
temp_p1=[zeros(length_of_p2-length_of_p1) p1];
p1_plus_p2= temp_p1+p2;
多项式的表示 在MATLAB中,多项式用一个行向量表示,向量中的元素为
该多项式的系数,按照降序排列。如多项式9+7+4x+3可以表示 为向量p=[9 7 4 3]。用户可用创建 向量的方式创建多项式,再 将其显示为多项式,如: >> p=[9 ,7,4,3]; >> y=poly2sym(p) y= 9*x^3 + 7*x^2 + 4*x + 3
2
例4-1 编写脚本文件,实现多项式的四则运算。
>> %polynomial operation
>> p1=[1,2,1];
%定义多项式
>> p2=[1,1];
>> length_of_p1=length(p1);
>> length_of_p2=length(p2);
>> if length_of_p1==length_of_p2 %判断两个多项式的长
功能 多项式求根 多项式求值 矩阵多项式求值 多项式求导 求矩阵的特征多项式;或者求一个多项 式,其根为指定的数值 多项式曲线拟合 求解余项
5
有时不仅多项式运算,还需要根据已知数据推断未知数据,即需 要数据插值。MATLAB提供了对数组的任意一维进行插值的工具, 这些工具大多需要用到多维数组的操作。一维插值在曲线拟合和数 据分析中具有重要的地位。在MATLAB中,一维插值主要是用interp 函数实现。该函数的调用格式:
8
例4-2 dblquad函数积分应用。
>> F=@(x,y)y*sin(x)+x*cos(y); >> Q=dblquad(F,pi,2*pi,0,pi)
Q= -9.8696
9
Hale Waihona Puke 题例4-1 一个抛射物的高度和速率。以速率v。、水平夹 角A投掷的哟个抛射物(例如一个球),其高度和速率为:
h(t)= tsinA-0.5g v(t)= 其中,g是重力加速度。当h(t)=0时,抛射物将撞击到 地面,并由此可以得到撞击时间: = 2(。假设A= 、 =20m/s和g= 9.81m/。使用MATLAB关系运算符和逻辑 运算符找出当高度低于6米并且在速率不大于16m/s时 的撞击时间
1
四则运算
因为多项式可以用向量来表示,多项式的四则运算也可以转 化为向量的运算。多项式的加减对应项系数的加减,即向量的 加减。但向量加减之前必须保证两个向量需要有相同的长度, 因此在进行多项式加减时,需要将短的向量前面补0。多项式的 乘法运算就是多项式系数向量之间的卷积运算,即用conv函数。 多项式的除法运算时乘法的逆运算,可以通过反卷积函数 deconv()来实现。
11
Thank you!
对应方法 最近邻插值 线性插值 三次样条插值 三次插值
6
fzero函数可以用来寻找一元函数的零点,要先指定一个初
始点或者一个区间。该函数调用格式如下: x=fzero(fun,x0), x=fzero(fun,[x1,x2]):用来寻找x0附近或者 区间内fun的零点,返回该点的x坐标。 x=fzero(fun,x0,options), x=fzero(fun,[x1,x2],options):设置options参数。 [x,fval]=fzero(…):返回零点的同时返回该点的函数值。 [x,fval,exitflag]=fzero(…):返回零点、该点的函数值及程序退 出的标志。 [x,fval,exitflag,output]=fzero(…):返回零点、该点的函数值、 程序退出的标志及选定的输出结果。
10
例题
%Set the values for initial speed, gravity,and angle.(设置初始速率、重力加 速度、角度的值) v0=20;g=9.81;A=40*pi/180; %Compute the time to hit.(计算碰撞时间) t_hit=2*v0*sin(A)/g; %Compute the arrays containing time,height,and speed.(计算包含时间、 高度和速率的数组) t=[0:t_hit/100:t_hit]; h=v0*t*sin(A)-0.5*g*t.^2; v=sqrt(v0^2-2*v0*g*sin(A)*t+g^2*t.^2); %Determine when the height is no less than 6,(确定当高度低于6米) %and the speed is no greater than 16.(并且速度不大于16) u=find(h>=6&v<=16); %Compute the corresponding times.(计算对应的时间) t_1=(u(1)-1)*(t_hit/100); t_2=u(length(u)-1)*(t_hit/100) 结果是t1= 0.8649和t2= 1.7560。在这两个时间之间,h>=6m和v<=16m/s。
p1_multiply_p2=poly2sym(p1_multiply_p2)
p1_divide_p2 =poly2sym(p1_divide_p2)
4
除了四则运算之外,其他一些函数名称和功能如下表:
函数 roots polyval polyvalm polyder poly
polyfit residue
Matlab 程序设计及在土木工程中的应用
主讲人:张静 副教授 合肥工业大学土木与水利学院桥梁工程系
2015.09
第四章 MATLAB的数学运算
本章主要内容
4.1 多项式与插值 4.2 条件语句 4.3 Switch 结构 4.4 循环结构
4.1 多项式与插值
现在MATLAB中专门用于处理多项式的函数能够解决很多工程 和应用经常遇到的问题,用户可以应用这些函数对多项式进行 操作。MATLAB中对多项式的操作包括多项式求根、多项式的 四则运算及多项式的微积分。
yi=interp1(x,y,xi,method)
其 中 , x 、 y 分 别 为 采 用 数 据 的 x 和 y 坐 标 , xi 为 待 插 值 的 位 置 , method为采用的插值方法。该语句返回函数在点xi处的插值结果。 参数method可以选择的方法如表:
参数 ‘nearest’ ‘linear’ ‘spline’ ‘hchip’或 ‘cubic’
7
4.2 数值积分
这里主要讲的是一元函数积分、二重积分和三重积分。
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,…),输出函数值的同时输出计算函数值的次数。 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函数的调用格式相同。
p1_minus_p2= temp_p1-p2;
else
3
temp_p2=[zeros(length_of_p1-length_of_p2) p2];
p1_plus_p2=p1+ temp_p2;
p1_minus_p2=p1- temp_p2;
end
p1_multiply_p2=conv(p1,p2);