第06章_MATLAB数值计算_例题源程序汇总
- 格式:doc
- 大小:174.50 KB
- 文档页数:15
第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。
13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。
也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。
也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。
A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。
也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。
X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。
x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。
X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。
185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -⎰e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。
第6讲MATLAB的数值计算MATLAB(Matrix Laboratory)是一种使用高级编程语言和环境的数值计算软件。
它的设计初衷是为了简化科学和工程的数值计算过程,提供了许多功能强大的工具和函数,可以用于解决各种数学问题。
在本讲中,我们将介绍MATLAB的数值计算功能以及如何使用它进行数据分析和数值模拟。
首先,MATLAB提供了丰富的数学函数,可以用于计算各种数学运算,如基本的加减乘除、三角函数、指数函数等。
这些函数可以直接调用,无需编写复杂的程序来实现。
例如,计算一个数的平方可以使用`sqrt(`函数,计算两个数的和可以使用`sum(`函数,计算一个矩阵的逆可以使用`inv(`函数。
此外,MATLAB还提供了一些特殊的数学函数,如贝塞尔函数、Gamma函数等,可以用于更复杂的数学计算。
其次,MATLAB提供了强大的矩阵和向量计算功能。
在MATLAB中,矩阵和向量是一种基本的数据类型,可以进行各种矩阵运算。
MATLAB提供了许多矩阵运算的函数,如矩阵乘法`*`、矩阵加法`+`、矩阵转置`'`等。
此外,MATLAB还提供了一些专门用于矩阵和向量计算的函数,如求矩阵的行列式`det(`、求矩阵的特征值`eig(`、求矩阵的秩`rank(`等。
这些函数可以帮助我们进行复杂的矩阵运算,如矩阵的特征分解、矩阵的奇异值分解等。
再次,MATLAB提供了丰富的数据分析和统计工具。
在MATLAB中,我们可以使用各种函数来对数据进行处理和分析。
例如,我们可以使用`mean(`函数来计算数据的平均值,使用`std(`函数来计算数据的标准差,使用`histogram(`函数来绘制数据的直方图等。
此外,MATLAB还提供了一些专门用于数据分析和统计的工具箱,如统计工具箱、数据拟合工具箱等。
这些工具箱提供了许多高级的数据分析方法和算法,可以帮助我们进行更深入的数据分析。
最后,MATLAB还可以用于数值模拟和求解各种数学模型。
matlab的数值运算当使用MATLAB 进行数值运算时,可以使用各种内置函数和运算符进行计算。
下面是一些常见的数值运算操作的详细说明:基本数学运算:加法:使用"+" 运算符进行两个数的相加。
例如,计算2 和3 的和:2 + 3。
减法:使用"-" 运算符进行两个数的相减。
例如,计算5 减去2 的结果:5 - 2。
乘法:使用"*" 运算符进行两个数的相乘。
例如,计算4 乘以3 的结果:4 * 3。
除法:使用"/" 运算符进行两个数的相除。
例如,计算10 除以2 的结果:10 / 2。
取余数:使用"mod" 函数或"%" 运算符计算两个数的余数。
例如,计算11 除以3 的余数:mod(11, 3) 或11 % 3。
幂运算:使用"^" 运算符进行幂运算。
例如,计算2 的3 次幂:2^3。
数学函数:MATLAB 提供了许多内置的数学函数,可以进行各种数值计算和分析操作。
这些函数包括但不限于:abs(x):返回x 的绝对值。
sin(x):返回x 的正弦值。
cos(x):返回x 的余弦值。
exp(x):返回e 的x 次幂,其中e 是自然对数的底数。
log(x):返回x 的自然对数。
sqrt(x):返回x 的平方根。
round(x):返回x 的四舍五入值。
floor(x):返回不大于x 的最大整数。
ceil(x):返回不小于x 的最小整数。
max(x, y):返回x 和y 中的较大值。
min(x, y):返回x 和y 中的较小值。
数组运算:MATLAB 中的数值计算通常涉及数组操作。
可以对向量、矩阵和多维数组执行各种运算,例如:矩阵相加:使用"+" 运算符对两个相同大小的矩阵进行元素级别的相加。
矩阵相乘:使用"" 运算符对两个矩阵进行乘法运算。
数值计算实例MATLAB实现附带详细源码1.在化学反应中,A 的一个分子和 B 的一个分子结合形成物质 C 的分子。
若在时刻t 时,物质 C 的浓度为() y t ,则其是下述初值问题的解()()() ,00y k a y b y y '=--=其中k 为正常数,a 和 b 分别表示 A 和 B 的初始浓度。
假设k = 0.01, a =70毫摩/升, b = 50 毫摩/升. 该方程的真解为0.20.2350(1)()75t te y t e---=- (1)自己编写程序,使用四阶经典Runge-Kutta (龙格-库塔法),以步长为0.5h =,在区间[0, 20]上给出() y t 的近似解; (2)列表给出真解和近似解的比较;(3)讨论当t →∞时,近似解的变化趋势,并分析该数值结果。
解:数学原理:四阶经典Runge-Kutta (龙格-库塔法)112341213243(22)6(,)(,)22(,)22(,)m m m m m m m m m m hu u k k k k k f t u h hk f t u k h hk f t u k k f t h u hk +=++++==++=++=++程序设计见附录 结果如下表:(3)近似解变化趋势当t→∞时,由以下极限方程可知:0.20.2350(1)()75lim()tttey tey t--→∞⎧-=-⎪⎨⎪⎩随着t→∞,近似值越来越接近真实值,极限的真实值为50,lim()50ty t→∞=,变化趋势也可由一下曲线图表示:感想:四阶Runge-Kutta法计算的结果精度非常好,其结果与真实解误差不大。
2.考虑定义在闭区间[−5, 5]上的函数()2112()5f x x -=+ ;(1)利用等距节点构造次数分别为 n = 4,8,16, 32 的插值多项式()n p x ,并分别画()()()()481632,,,p x p x p x p x ;(2)利用chebyshev 零点构造次数分别为 n = 4,8,16, 32 的插值多项式()n pp x()()()()481632,,,pp x pp x pp x pp x ;(3)画出当 n = 32 时,两种插值多项式的比较图,误差图,并给出相应的误差估计;(4)在这个问题中能观察到龙格现象吗? 解:数学原理:拉格朗日插值多项式:001122()()()()()n n n L x l x y l x y l x y l x y =+++011011()()()()(),0,1,2,()()()()k k n k k k k k k k n x x x x x x x x l x k n x x x x x x x x -+-+----==----0()()()nn n in k k k k k j k jj kx x L x l x y y x x ===≠-==-∑∑∏程序设计见附录(1) 利用等距节点构造次数分别为 n = 4,8,16, 32 的插值多项式如下: ()43240.00160.00.0640.60061400p x x x x x ++=++()876542830.00280.00640.02500.02500.00640.00260.000168.001p x x x x x x x x x ++++++=++()1615141312161110987654320.00210.00280.00410.0064 60.01120.02500.09290.09290.02050 0.01120.00640.00410.002.00160180.021.000p x x x x x x x x x x x x x x x x x ++++++++++++++=++()3231302928272632252423222120191817160001600018000210002400028000340004100050006400083001120016100250004350092902906029p x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x x .=+++++++++++++++++151413121110987654320600929004350025000161001120008300064000500041000340002800024000210001800016x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .+++++++++++++++(2)利用chebyshev 零点构造次数分别为 n = 4,8,16, 32 的插值多项式如下:()43240.00160.00320.00320.0016x x p x x p x =++++()87654328+0.00190.00320.01080.01080.00320.00196=0.0.0106001pp x x x x x x x x x +++++++()161514131211109168765432=0.0016 0.0017 0.0019 0.00230.00320.00520.01080.0403 1.00000.04030.01080.00520.00320.00230.0019 0.0017 0.0016 pp x x x x x x x x x x x x x x x x x ++++++++++++++++()323130292827263225242322212019181700016000160001700017000190002100023000270003200040000520007100108001860040301428pp x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .x x =+++++++++++++++++16151413121110987654320142800403001860010800071000520004000320002700023000210001900017000170001600016.x .x .x .x .x .x .x .x .x .x .x .x .x .x .x .+++++++++++++++++(3)两种插值多项式的比较误差图如下(a)等距插值误差 (b) chebyshev零点插值误差(4) 等距插值在高次插值中能观察到龙格现象,而chebyshev零点插值观察不到龙格现象。
第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。
13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。
也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。
也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。
A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。
也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。
X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。
x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。
X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。
185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -⎰e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。
MATLAB软件介绍本节主要介绍一款进行微积分运算的数学软件—MATLAB(MATrix LABoratory)。
本节主要介绍Matlab操作桌面,重点介绍指令窗功能及操作注意事项。
一、Desktop操作桌面简介MATLAB R2006a版的Desktop操作桌面,是一个高度集成的MATLAB工作界面。
其默认形式,如图1.2-1所示。
该桌面的上层铺放着三个最常用的界面:指令窗(Command Window)、当前目录(Current Directory)浏览器、历史指令(Command History)窗。
图1-19 Desktop操作桌面的默认外貌指令窗该窗是进行各种MATLAB操作的最主要窗口。
“>>”是Matlab指令符,使用者可在其后键入各种送给MATLAB运作的指令、函数、表达式,显示除图形外的所有运算结果,运行错误时,给出相关的出错提示。
历史指令窗该窗记录已经运作过的指令,及它们运行的日期、时间。
该窗中的所有指令、文字都允许复制、重运行及用于产生M文件。
当前目录浏览器在该浏览器中,展示着子目录、M文件、MAT文件和MDL文件等。
对该界面上的M文件,可直接进行复制、编辑和运行;界面上的MAT数据文件,可直接送入MATLAB工作内存。
此外,对该界面上的子目录,可进行Windows平台的各种标准操作。
工作空间浏览器该浏览器默认地位于当前目录浏览器的后台。
该窗口罗列出MATLAB工作空间中所有的变量名、大小、字节数;在该窗中,可对变量进行观察、图示、编辑、提取和保存。
二、Command Window指令窗简介MATLAB指令窗默认地位于MATLAB桌面的右方。
在Matlab指令符“>>”后键入各种送给MATLAB运作的指令、函数、表达式,显示除图形外的所有运算结果,指令运行错误时,给出相关的出错提示;Matlab命令输入后直接回车,系统将执行该命令并给出运算结果,如果键入指令以分号结尾,系统将只执行命令但不显示运行结果。
实验五 MATLAB 数值运算一、实验目的掌握 MATLAB 的数值运算及其运算中所用到的函数,掌握结构数组和细胞数组的操作。
二、实验内容:(1) 多项式运算。
(2) 多项式插值和拟合。
(3) 数值微积分。
(4) 离散傅里叶变换。
三、实验步骤:1. 多项式运算(1) 多项式表示。
在MATLAB 中,多项式表示成向量的形式。
如:在MATLAB 中表示为>>S=[ 1 3 -5 0 9](2) 多项式的加减法相当于向量的加减法,但须注意阶次要相同。
如不同,低阶的要补0。
如多项式与多项式相加。
>>S1=[0 0 2 3 11 ]>>S2=[1 3 -5 4 7 ]>>S3=S1+S2(3) 多项式的乘、除法分别用函数conv 和deconv 实现>>S1=[ 2 3 11 ]>>S2=[1 3 -5 4 7 ]>>S3=conv(S1,S2)>>S4=deconv(S3,S1)(4) 多项式求根用函数roots>> S1=[ 2 4 2 ]>> roots(S1)(5) 多项式求值用函数polyval>> S1=[ 2 4 1 -3 ]>> polyval(S1,3) %计算x=3 时多项式的值>> x=1:10>> y=ployval(S1,x) %计算x 向量对应的值得到y 向量练习:2. 多项式插值和拟合有一组实验数据如附表1-1 所示。
请分别用拟合(二阶至三阶)和插值(线性和三次样条)的方法来估测 X=9.5 时Y 的值。
以下是实现一阶拟合的语句。
>>x=1:10>>y=[16 32 70 142 260 436 682 1010 1432 1960]>>p1=ployfit(x,y,1) %一阶拟合>>y1=ployval(p1,9.5) %计算多项式p1 在x=9.5 时的值3. 数值微积分(1) 差分使用diff 函数实现。
课程名称:Matlab语言开设时间:2016—2017学年第 2 学期专业班级:学生学号:学生姓名:实验名称:实验二、MATLAB的数值运算和程序实验成绩:指导教师:批改时间:一、实验目的和要求1)掌握基本的矩阵运算及常用的函数。
2)掌握MATLAB函数的编写及调试方法。
3)掌握MATLAB常用的数值运算函数。
二、实验仪器和设备计算机一台三、实验过程1、一维数组在命令窗口执行下面指令,观察输出结果,体味数组创建和寻访方法,%号后面的为注释,不用输入。
rand('state',0) % 把均匀分布伪随机发生器置为0 状态x=rand(1,5) % 产生(1*5)的均布随机数组x(3) % 寻访数组x 的第三个元素。
x([1 2 5]) % 寻访数组x 的第一、二、五个元素组成的子数组。
x(1:3) % 寻访前三个元素组成的子数组x(3:end) % 寻访除前2 个元素外的全部其他元素。
end 是最后一个元素的下标。
x(3:-1:1) % 由前三个元素倒排构成的子数组x(find(x>0.5)) % 由大于0.5 的元素构成的子数组x([1 2 3 4 4 3 2 1]) % 对元素可以重复寻访,使所得数组长度允许大于原数组。
x(3) = 0 % 把上例中的第三个元素重新赋值为0。
x([1 4])=[1 1] % 把当前x 数组的第一、四个元素都赋值为1。
x[3]=[] % 空数组的赋值操作2、在命令窗口执行下面指令,观察输出结果a=2.7358; b=33/79; % 这两条指令分别给变量 a , b 赋值。
C=[1,2*a+i*b,b*sqrt(a);sin(pi/4),a+5*b,3.5+i] % 这指令用于创建二维组C M_r=[1,2,3;4,5,6],M_i=[11,12,13;14,15,16] % 创建复数数组的另一种方法 CN=M_r+i*M_i % 由实部、虚部数组构成复数数组3. 记录下面题目的程序和运行后的结果。
第一讲Matlab 基本数值计算一、矩阵在Matlab中,一个矩阵可以使数学意义上的矩阵,也可以是标量或者向量。
对于一个标量(一个数)可以将之作为11⨯的矩阵,而向量(一行或一列)则可以认为是1n⨯⨯或者1n⨯的矩阵。
另外,一个00矩阵在Matlab中被认为是空矩阵,用“[]”表示。
1、矩阵的创建矩阵的创建可以有以下几种形式⑴直接输入>> A=[1 2 3;4 3 7;2 4 1]注意:每行间的元素用逗号或空格分开,行与行之间用分号或回车分开,矩阵标示是一对中括号[ ]。
也可以采用数组编辑器(Array Editor)像在Excel电子表格中据那样输入数据。
⑵通过语句和函数产生常用的特殊矩阵:zeros:全零矩阵,ones:全1矩阵,eye:单位矩阵,rand:随机矩阵,diag:对角阵等。
例:>> A=ones(3,4)>> E=eye(3)>> D=diag([3 5 2])⑶对矩阵进行裁剪或拼接⑷从外部文件装入数据外部数据文件可以是以保存的Matlab工作空间,也可以是文本(.txt)文件,或者是电子表格创建的文件(.xls).例:已知一个文本格式的数据文件E:\Mathmodel\data1.txt>> load e:\Mathmodel\data1.txt得到一个变量名与文件名相同的矩阵(data1)。
注意:文件的扩展名不能省略。
例:已知一个Excel文件的路径为E:\Mathmodel\data2.xlsa. 缺省操作:>> NUMBER=xlsread('E:\Mathmodel\data2.xls')>>[NUMBER,TXT]=xlsread('E:\Mathmodel\data2.xls')默认操作是从第一个工作表(sheet1)中提取数据。
b. 从指定的工作表(而不是第一个)中提取数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls','S2')或者>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2)c.从指定的工作表中读取指定区域的数据:>> NUMBER=xlsread('E:\Mathmodel\data2.xls',2,'g3:i8')2、Matlab的矩阵运算⑴基本运算矩阵的加(+)、减(-)、乘(*)、乘方(^)运算法则与代数中的定义完全一致。
第6章 MATLAB 数值计算例6.1 求矩阵A 的每行及每列的最大和最小元素,并求整个矩阵的最大和最小元素。
13567825632357825563101-⎡⎤⎢⎥-⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A,[],2) %求每行最大元素 min(A,[],2) %求每行最小元素 max(A) %求每列最大元素 min(A) %求每列最小元素max(max(A)) %求整个矩阵的最大元素。
也可使用命令:max(A(:)) min(min(A)) %求整个矩阵的最小元素。
也可使用命令:min(A(:))例6.2 求矩阵A 的每行元素的乘积和全部元素的乘积。
A=[1,2,3,4;5,6,7,8;9,10,11,12]; S=prod(A,2)prod(S) %求A 的全部元素的乘积。
也可以使用命令prod(A(:))例6.3 求向量X =(1!,2!,3!,…,10!)。
X=cumprod(1:10)例6.4 对二维矩阵x ,从不同维方向求出其标准方差。
x=[4,5,6;1,4,8] %产生一个二维矩阵x y1=std(x,0,1) y2=std(x,1,1) y3=std(x,0,2) y4=std(x,1,2)例6.5 生成满足正态分布的10000×5随机矩阵,然后求各列元素的均值和标准方差,再求这5列随机数据的相关系数矩阵。
X=randn(10000,5); M=mean(X) D=std(X) R=corrcoef(X)例6.6 对下列矩阵做各种排序。
185412613713-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦A A=[1,-8,5;4,12,6;13,7,-13];sort(A) %对A 的每列按升序排序 -sort(-A,2) %对A 的每行按降序排序[X,I]=sort(A) %对A 按列排序,并将每个元素所在行号送矩阵I例6.7 给出概率积分2(d xx f x x -e的数据表如表6.1所示,用不同的插值方法计算f (0.472)。
x=0.46:0.01:0.49; %给出x ,f(x) f=[0.4846555,0.4937542,0.5027498,0.5116683]; format longinterp1(x,f,0.472) %用默认方法,即线性插值方法计算f(x) interp1(x,f,0.472,'nearest') %用最近点插值方法计算f(x) interp1(x,f,0.472,'spline') %用3次样条插值方法计算f(x) interp1(x,f,0.472,'cubic') %用3次多项式插值方法计算f(x) format short例6.8 某检测参数f 随时间t 的采样结果如表6.2,用数据插值法计算t =2,7,12,17,22,17,32,37,42,47,52,57时的f 值。
T=0:5:65; X=2:5:57;F=[3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,...6725.3,6848.3,6403.5,6824.7,7328.5,7857.6];F1=interp1(T,F,X) %用线性插值方法插值F1=interp1(T,F,X,'nearest') %用最近点插值方法插值F1=interp1(T,F,X,'spline') %用3次样条插值方法插值F1=interp1(T,F,X,'cubic') %用3次多项式插值方法插值例6.9设z=x2+y2,对z函数在[0,1]×[0,2]区域内进行插值。
x=0:0.1:1;y=0:0.2:2;[X,Y]=meshgrid(x,y); %产生自变量网格坐标Z=X.^2+Y.^2; %求对应的函数值interp2(x,y,Z,0.5,0.5) %在(0.5,0.5)点插值interp2(x,y,Z,[0.5 0.6],0.4) %在(0.5,0.4)点和(0.6,0.4)点插值interp2(x,y,Z,[0.5 0.6],[0.4 0.5]) %在(0.5,0.4)点和(0.6,0.5)点插值%下一命令在(0.5,0.4),(0.6,0.4),(0.5,0.5)和(0.6,0.5)各点插值interp2(x,y,Z,[0.5 0.6]',[0.4 0.5])例6.10某实验对一根长10米的钢轨进行热源的温度传播测试。
用x表示测量点(米),用h表示测量时间(秒),用T表示测得各点的温度(℃),测量结果如表6.2所示。
试用3次多项式插值求出在一分钟内每隔10秒、钢轨每隔0.5米处的温度。
x=0:2.5:10;h=[0:30:60]';T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];xi=[0:0.5:10];hi=[0:10:60]';temps=interp2(x,h,T,xi,hi,'cubic');mesh(xi,hi,temps);例6.11 用一个3次多项式在区间[0,2π]内逼近函数x sin 。
X=linspace(0,2*pi,50); Y=sin(X);P=polyfit(X,Y,3) %得到3次多项式的系数和误差 X=linspace(0,2*pi,20); Y=sin(X); Y1=polyval(P,X) plot(X,Y,':o',X,Y1,'-*')例6.12 设54322()352756()353f x x x x x xg x x x =-+-++=+-(1) 求f (x )+g (x )、f (x )-g (x )。
(2) 求f (x )×g (x )、f (x )/g (x )。
f=[3,-5,2,-7,5,6];g=[3,5,-3];g1=[0,0,0,g]; f+g1 %求f(x)+g(x) f-g1 %求f(x)-g(x) conv(f,g) %求f(x)*g(x)[Q,r]=deconv(f,g) %求f(x)/g(x),商式送Q ,余式送r 。
例6.13 求有理分式的导数。
5421096323585()10567100x x x x f x x x x x x +-+-=+++-- P=[3,5,0,-8,1,-5];Q=[10,5,0,0,6,0,0,7,-1,0,-100]; [p,q]=polyder(P,Q)例6.14 已知多项式x 4+8x 3-10,分别取x =1.2和一个2×3矩阵为自变量计算该多项式的值。
A=[1,8,0,0,-10]; %4次多项式系数 x=1.2; %取自变量为一数值 y1=polyval(A,x)x=[-1,1.2,-1.4;2,-1.8,1.6] %给出一个矩阵xy2=polyval(A,x) % 分别计算矩阵x 中各元素为自变量的多项式之值例6.15 仍以多项式x 4+8x 3-10为例,取一个2×2矩阵为自变量分别用polyval 和polyvalm计算该多项式的值。
A=[1,8,0,0,-10]; %多项式系数 x=[-1,1.2;2,-1.8] %给出一个矩阵x y1=polyval(A,x) %计算代数多项式的值 y2=polyvalm(A,x) %计算矩阵多项式的值例6.16 求多项式x 4+8x 3-10的根。
A=[1,8,0,0,-10]; x=roots(A)例6.17 已知52.7543)(235+--+=x x x x x f(1) 计算f (x )=0的全部根。
(2) 由方程f (x )=0的根构造一个多项式g (x ),并与f (x )进行对比。
P=[3,0,4,-5,-7.2,5];X=roots(P) %求方程f(x)=0的根 G=poly(X) %求多项式g(x)例6.18 设x 由[0,2π]间均匀分布的10个点组成,求x sin 的1~3阶差分。
X=linspace(0,2*pi,10); Y=sin(X);DY=diff(Y); %计算Y 的一阶差分D2Y=diff(Y,2); %计算Y 的二阶差分,也可用命令diff(DY)计算 D3Y=diff(Y,3); %计算Y 的三阶差分,也可用diff(D2Y)或diff(DY,2)例6.19 设255122)(623+++++-+=x x x x x x f用不同的方法求函数f (x )的数值导数,并在同一个坐标系中做出f '(x )的图像。
f=inline('sqrt(x.^3+2*x.^2-x+12)+(x+5).^(1/6)+5*x+2');g=inline('(3*x.^2+4*x-1)./sqrt(x.^3+2*x.^2-x+12)/2+1/6./(x+5).^(5/6)+5'); x=-3:0.01:3;p=polyfit(x,f(x),5); %用5次多项式p 拟合f(x) dp=polyder(p); %对拟合多项式p 求导数dp dpx=polyval(dp,x); %求dp 在假设点的函数值 dx=diff(f([x,3.01]))/0.01; %直接对f(x)求数值导数gx=g(x); %求函数f 的导函数g 在假设点的导数plot(x,dpx,x,dx,'.',x,gx,'-'); %作图例6.20 用两种不同的方法求:210e d x I x -=⎰先建立一个函数文件ex.m :function ex=ex(x) ex=exp(-x.^2);然后在MATLAB 命令窗口,输入命令:format longI=quad('ex',0,1) %注意函数名应加字符引号 I=quadl('ex',0,1)例6.21 用trapz 函数计算:210ed x I x -=⎰X=0:0.01:1; Y=exp(-X.^2); trapz(X,Y)例6.22 计算二重定积分212/2212e sin()d d xI x y x y ---=+⎰⎰(1) 建立一个函数文件fxy.m :function f=fxy(x,y) global ki;ki=ki+1; %ki 用于统计被积函数的调用次数 f=exp(-x.^2/2).*sin(x.^2+y); (2) 调用dblquad 函数求解。