实验三 MATLAB 数值计算(2)
时间:2025-07-08
时间:2025-07-08
MATLAB 数值计算(2)
实验三 MATLAB 数值计算
一、实验目的:
熟悉MATLAB多项式的运用。
(1) 多项式的求值、求根和部分分式展开
(2) 多项式的乘除法和微积分
(3) 多项式拟合和插值
二、实验内容和步骤:
1. 多项式求值
函数polyval可以用来计算多项式在给定变量时的值,是按数组运算规则进行计算的。 语法:
polyval(p,s)
说明:p为多项式, s为给定矩阵。
【例1】 计算p(x)= 3x2+2x+1多项式的值。
p = [3 2 1];
polyval(p,2) %计算x=2时多项式的值
ans =
17
x=0:0.5:3;
polyval(p,x) %计算x为向量时多项式的值
ans =
1.0000 2.7500 6.0000 10.7500 17.0000 24.7500 34.0000
2. 多项式求根
roots用来计算多项式的根。
语法:
r=roots(p)
说明:p为多项式;r为计算的多项式的根,以列向量的形式保存。
与函数roots相反,根据多项式的根来计算多项式的系数可以用poly函数来实现。 语法:
p=poly (r)
【例2】 计算多项式p(x)= x3-6x2-72x-27的根以及由多项式的根得出系数。
p = [1 -6 -72 -27]
roots(p) %计算多项式的根
ans =
12.1229
-5.7345
-0.3884
poly([ 12.1229;-5.7345;-0.3884]) %计算多项式的系数
MATLAB 数值计算(2)
ans =
1.0000 -6.0000 -72.0000 -27.0011
3. 特征多项式
对于一个方阵s,可以用函数poly来计算矩阵的特征多项式的系数。特征多项式的根即为特征值,用roots函数来计算。
语法:
p=poly (s)
说明:s必须为方阵;p为特征多项式。
【例3】 根据矩阵来计算的特征多项式系数。
A =[1 2 3;4 5 6;7 8 0]
p = poly(A)
A =
1 2 3
4 5 6
7 8 0
p =
1.0000 -6.0000 -72.0000 -27.0000
r = roots(p)
r =
12.1229
-5.7345
-0.3884
程序分析:p= x3-6x2-72x-27为矩阵A的特征多项式,12.1229, -5.7345和-0.3884为矩阵s的特征根。
4. 部分分式展开
用residue函数来实现将分式表达式进行多项式的部分分式展开。
rrrB(s) 1 2 n k(s) A(s)s p1s p2s pn
语法:
[r,p,k]=residue(b,a)
说明:b和a分别是分子和分母多项式系数行向量;r是[r1 r2 …rn]留数行向量;p为[p1 p2 …pn]极点行向量;k为直项行向量。
【例4】 将表达式
b = [ 5 3 -2 7]
a = [-4 0 8 3] 进行部分分式展开。
MATLAB 数值计算(2)
[r, p, k] = residue(b,a)
b =
5 3 -2 7
a =
-4 0 8 3
r =
-1.4167
-0.6653
1.3320
p =
1.5737
-1.1644
-0.4093
k =
-1.2500
程序分析:表达
式
1.4167
s-1.5737 0.6653
s 1.1644 1.3320
s 0.4093 1.2500。
2.多项式的乘除法和微积分
1. 多项式的乘法和除法
多项式的乘法
语法:
p=conv(pl,p2)
说明:p是多项式p1和p2的乘积多项式。
多项式的除法
语法: 展开结果为
MATLAB 数值计算(2)
[q,r]=deconv(pl,p2)
说明:除法不一定会除尽,会有余子式。多项式p1被p2除的商为多项式q,而余子式是r。
【例5】 计算表达式(x3+2x2+3x+4)(10x2+20x+30)。
u = [1 2 3 4]
v = [10 20 30]
c = conv(u,v)
c =
10 40 100 160 170 120
[q,r] = deconv(c,u)
q =
10 20 30
r =
0 0 0 0 0 0
2. 多项式的微分和积分
多项式的微分由polyder函数实现。
MATLAB没有专门的多项式积分函数,但可以用[p./length(p):-1:1,k]的方法来完成积分, k为常数。
【例6】 求多项式(3x2+6x+9) (x2+2x)的微分和积分.
a = [3 6 9];
b = [1 2 0];
k = polyder(a,b)
k =
12 36 42 18
s=length(k):-1:1
s =
4 3 2 1
p1=[k./s,0] %多项式积分,常数k=0
p1 =
3 12 21 18 0
3多项式拟合和插值
1. 多项式拟合
MATLAB 数值计算(2)
多项式曲线拟合是用一个多项式来逼近一组给定的数据,使用polyfit函数来实现。拟合的准则是最小二乘法,即找出使 f(x
i 1n2i) yi最小的f(x)。
语法:
p=polyfit(x,y,n)
说明:x、y向量分别为N个数据点的横、纵坐标;n是用来拟合的多项式阶次;p为拟合的多项式,p为n+1个系数构成的行向量。
【例7】 对多项式y=2x3-x2+5x+10曲线拟合。经过一阶、二阶和三阶拟合的曲线如图2
所示。
图 一阶、阶和三阶拟合曲线
x=1:10;
p=2 -1 5 10];
y1=polyval(p,x)
y1 =
Columns 1 through 7
16 32 70 142
682
Columns 8 through 10
1010 1432 1960
p1=polyfit(x,y1,1) %一阶拟合
p1 =
204.8000 -522.4000
p2=polyfit(x,y1,2) %二阶拟合
p2 = 260 436
MATLAB 数值计算(2)
32.0000 -147.2000 181.6000
p3=polyfit(x,y1,3) %三阶拟合
p3 =
2.0000 -1.0000 5.0000 10.0000
2. 插值运算
插值运算是根据数据点的规律,找到一个多项式 …… 此处隐藏:1491字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:难忘的第一次(已修改)