第6章 MATLAB数据分析与多项式计算
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n
由此整个区间[xi,xi+1]上的插值函数为:
F ( x) 百度文库 Fi li ( x)
i 1
其中
li ( x) 定义如下:
x xi 1 x x , x [ xi 1 , xi ](i 0略去) i i 1 x xi 1 li ( x) , x [ xi , xi 1 ](i 0略去) xi xi 1 x [ xi , xi 1 ] 0,
>> P=[3,0,4,-5,-7.2,5]; >> X=roots(P) %求方程f(x)=0的根 X= -0.3046 + 1.6217i -0.3046 - 1.6217i -1.0066 + 0.0000i 1.0190 + 0.0000i 0.5967 + 0.0000i >> G=poly(X) %求多项式g(x) G= 1.0000 -0.0000 1.3333 -1.6667 -2.4000 1.6667
第6章
MATLAB数据分析与多项式计算
例6-10 已知多项式x4+8x3-10,分别取x=1.2和一个 2×3矩阵为自变量,计算该多项式的值。 命令如下:
>> A=[1,8,0,0,-10]; %4次多项式系数 >> x=1.2; %取自变量为一数值 >> y1=polyval(A,x) y1 = 5.8976 >> x=[-1,1.2,-1.4;2,-1.8,1.6]; %给出一个矩阵x >> y2=polyval(A,x) %分别计算矩阵x中各元素为自变量的多项式之值 y2 = -17.0000 5.8976 -28.1104 70.0000 -46.1584 29.3216
第6章
MATLAB数据分析与多项式计算
6.3.1 一维数据插值 如果被插值函数是一个单变量函数,则数据插值问 题称为一维插值。 在MATLAB中,实现这些插值的函数是interp1,该 命令对数据点之间进行计算内插值,它出一元函数 f(x)在中间点的数值,其中函数f(x)由所给数据决定。
第6章
MATLAB数据分析与多项式计算
第6章
MATLAB数据分析与多项式计算
6.3.1 一维数据插值 一维插值采用的方法(method)有 1、线性方法(插值点处函数值由连接其最邻近的两侧点的线性函数预测, MATLAB中interp1的默认方法) 2、最近方法(插值点处函数值取与插值点最邻近的已知点的函数值) 3、3次埃尔米特插值(三次Hermite多项式插值。可用pchip函数代替) 4、3次样条插值(样条插值:默认为三次样条插值。可用spline函数代 替)
2.多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。其中, P1、P2是两个多项式系数向量。 例6-7 求多项式x4+8x3-10与多项式2x2-x+3的乘积。 命令如下:
>> A=[1,8,0,0,-10]; >> B=[2,-1,3]; >> C=conv(A,B) C= 2 15 -5 24 -20 10 -30
6.2 多项式计算
• 多项式作为线性方程组的表现形式,在运 算及应用中具有非常重要的意义。 • 在时间序列分析和多项式插值计算中,许 多问题都涉及多项式计算,MATLAB提供 了丰富的多项式运算功能,如果把这些实 际问题转成Matlab 编程语言,将会给计算 带来很大的简化。 • MATLAB进行多项式运算的原理是将多项 式转换成向量形式,然后在向量的基础上 进行计算。
第6章
MATLAB数据分析与多项式计算
6.2.1 多项式的四则运算
1.多项式的加减运算 MATLAB没有提供专门进行多项式加减运算的函数。 事实上,多项式的加减运算就是其所对应的系数向 量的加减运算。对于次数相同的两个多项式,可直 接对多项式系数向量进行加减运算。 如果多项式的次数不同,则应该把低次的多项式系 数不足的高次项用0补足,使同式中的各多项式具有 相同的次数。
第6章
MATLAB数据分析与多项式计算
6.2 多项式计算
在MATLAB中,n次多项式用一个长度为n+1的行 向量表示,缺少的幂次项系数为0。如果n次多项式 表示为: P(x)=anxn+an-1xn-1+an-2xn-2+…+a1x+a0 = [an,an-1,an-2,…,a1,a0][xn,xn-1,xn-2,…,,x,1]T 则在MATLAB中,P(x)表达为向量形式: [an,an1,an2,…,a1,a0]。
第6章
MATLAB数据分析与多项式计算
2.矩阵多项式求值 polyvalm函数用来求矩阵多项式的值,其调用格式 与polyval相同,但含义不同。 polyvalm函数要求x为方阵,它以方阵为自变量求多 项式的值。设A为方阵,P代表多项式x3-5x2+8,那 么polyvalm(P,A)的含义是: A*A*A-5*A*A+8*eye(size(A)) 而polyval(P,A)的含义是: A.*A.*A-5*A.*A+8*ones(size(A))
第6章
MATLAB数据分析与多项式计算
若已知多项式的全部根,则可以用poly函数建立起 该多项式,其调用格式为: P=poly(x) 若x为具有n个元素的向量,则poly(x)建立以x为其 根的多项式,且将该多项式的系数赋给向量P。
第6章
MATLAB数据分析与多项式计算
例6-13 已知: f ( x) 3x 5 4x 3 5x 2 7.2x 5 ① 计算f(x)=0 的全部根。 ② 由方程f(x)=0的根构造一个多项式g(x),并与f(x) 进行对比。 命令如下:
1.Linear(分段线性插值)
它是把与插值点靠近的两个数据点用直线连接,然后在直线 上选取对应插值点的数据。它的算法是在每个小区间[xi,xi+1] 上采用简单的线性插值。在区间[xi,xi+1]上的子插值多项式为:
Fi x xi 1 x xi f ( xi ) f ( xi 1 ) xi xi 1 xi 1 xi
deconv和conv是互逆的
• >>>> conv(B,P)+r
• ans = • 1 8 0 0 -10
第6章
MATLAB数据分析与多项式计算
6.2.2 多项式的导函数 求多项式的导函数用polyder函数,其调用格式如下。 ① p=polyder(P):求多项式P的导函数。 ② p=polyder(P,Q):求P· Q的导函数。 ③ [p,q]=polyder(P,Q):求P/Q的导函数,导函数的 分子存入p,分母存入q。 上述函数调用中,参数P、Q是多项式的向量表示, 结果p、q也是多项式的向量表示。
第6章
MATLAB数据分析与多项式计算
例6-11 仍以多项式x4+8x3-10为例,以2×2矩阵为自 变量分别用polyval和polyvalm计算该多项式的值。 命令如下:
>> A=[1,8,0,0,-10]; >> x=[-1,1.2;2,-1.8]; >> y1=polyval(A,x) y1 = -17.0000 5.8976 70.0000 -46.1584 >> y2=polyvalm(A,x) y2 = -60.5840 50.6496 84.4160 -94.3504 %多项式系数 %给出一个矩阵x %计算代数多项式的值
第6章
MATLAB数据分析与多项式计算
例6-9 求有理分式的导数。 命令如下: >> P=1; >> Q=[1,0,5]; >> [p,q]=polyder(P,Q) p= -2 0 q= 1 0 10 0 25
1 f ( x) x2 5
2x f ' ( x) x 4 10x 2 25
多项式的加减运算
• 有的时候,两个相加的多项式的项数并不 明确 • function p=polyadd(a,b) • na=length(a); • nb=length(b); • p=[zeros(1,nb-na) a] + [zeros(1,na-nb) b]
第6章
MATLAB数据分析与多项式计算
执行结果得到一个6次多项式:
2x6+15x5-5x4+24x3-20x2+10x-30
第6章
MATLAB数据分析与多项式计算
3.多项式除法 函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法 运算。其中,Q返回多项式P1除以P2的商式,r返回 P1除以P2的余式。这里,Q和r仍是多项式系数向量。 deconv是conv的逆函数,即有P1=conv(P2,Q)+r。
拟合
• 拟合是指已知某函数的若干离散函数值 {f1,f2,…,fn},通 过调整该函数中若干待定 系数f(λ1, λ2,…,λ3), 使得该函数与已知点集 的 差别(最小二乘意义)最小。
插值和拟合
插值曲线要过数据点,拟合曲线整体效果更好
(未知)
g(x)
第6章
MATLAB数据分析与多项式计算
6.3 数据插值
第6章
MATLAB数据分析与多项式计算
例如,计算(x3-2x2+5x+3)+(6x-1),对于和式的后一 个多项式6x-1,它仅为1次多项式,而前面的是3次。 为确保两者次数相同,应把后者的系数向量处理成 [0,0,6,-1]。命令如下: >> a=[1,-2,5,3]; >> b=[0,0,6,-1]; >> c=a+b c= 1 -2 11 2
%计算矩阵多项式的值
第6章
MATLAB数据分析与多项式计算
6.2.4 多项式求根 n次多项式具有n个根,当然这些根可能是实根,也 可能含有若干对共轭复根。MATLAB提供的roots函 数用于求多项式的全部根,其调用格式为: x=roots(P) 其中,P为多项式的系数向量,求得的根赋给向量x, 即x(1)、x(2)、…、x(n)分别代表多项式的n个根。
如果要得到这些离散点以外的其他点的数值,就需 要根据这些已知数据进行插值。 根据被插值函数的自变量个数,插值问题分为: 一维插值、 二维插值、 多维插值;
第6章
MATLAB数据分析与多项式计算
6.3 数据插值
根据是用分段直线、多项式或样条函数来作为插值 函数,插值问题又分为: 线性插值、 多项式插值、 样条插值;
第6章
MATLAB数据分析与多项式计算
6.2.3 多项式的求值
MATLAB提供了两种求多项式值的函数:polyval与 polyvalm,它们的输入参数均为多项式系数向量P 和自变量x。 两者的区别在于前者是代数多项式求值,而后者是 矩阵多项式求值。
第6章
MATLAB数据分析与多项式计算
1.代数多项式求值 polyval函数用来求代数多项式的值,其调用格式为: Y=polyval(P,x) 若x为一数值,则求多项式在该点的值;若x为向量 或矩阵,则对向量或矩阵中的每个元素求其多项式 的值。
第6章
MATLAB数据分析与多项式计算
例6-12 求多项式x4+8x3-10的根。 命令如下: >> A=[1,8,0,0,-10]; >> x=roots(A) x= -8.0194 + 0.0000i 1.0344 + 0.0000i -0.5075 + 0.9736i -0.5075 - 0.9736i
插值和拟合
• 在工程实践与科学实验中,常常需要从一组 试验数据之中找到自变量与因变量之间的 关系,一般可用一个近似函数表示。函数 产生的办法因观测数据的要求不同而异, 数据插值与拟合是两种常用的方法。
插值
• 函数插值来源于函数的以下问题:只知道 函数在某区间有定义且已得到区间内一些 离散点的值,希望用简单的表达式近似给 出函数在此区间上的整体描述,并能与已 知离散点上的值相等。
6.3.1 一维数据插值 其调用格式为: Y1=interp1(X,Y,X1,method) 函数根据X、Y的值,计算函数在X1处的值。其中, X、Y是两个等长的已知向量,分别描述采样点和采 样值。若同一个采样点有多种采样值,则Y可以为 矩阵,Y的每一列对应一组采样。X1是一个向量或 标量,描述欲插值的点,Y1是一个与X1等长的插值 结果。
第6章
MATLAB数据分析与多项式计算
例6-8 求多项式x4+8x3-10除以多项式2x2-x+3的结果。 >> A=[1,8,0,0,-10]; >> B=[2,-1,3]; >> [P,r]=deconv(A,B) P= 0.5000 4.2500 1.3750 r= 0 0 0 -11.3750 -14.1250
由此整个区间[xi,xi+1]上的插值函数为:
F ( x) 百度文库 Fi li ( x)
i 1
其中
li ( x) 定义如下:
x xi 1 x x , x [ xi 1 , xi ](i 0略去) i i 1 x xi 1 li ( x) , x [ xi , xi 1 ](i 0略去) xi xi 1 x [ xi , xi 1 ] 0,
>> P=[3,0,4,-5,-7.2,5]; >> X=roots(P) %求方程f(x)=0的根 X= -0.3046 + 1.6217i -0.3046 - 1.6217i -1.0066 + 0.0000i 1.0190 + 0.0000i 0.5967 + 0.0000i >> G=poly(X) %求多项式g(x) G= 1.0000 -0.0000 1.3333 -1.6667 -2.4000 1.6667
第6章
MATLAB数据分析与多项式计算
例6-10 已知多项式x4+8x3-10,分别取x=1.2和一个 2×3矩阵为自变量,计算该多项式的值。 命令如下:
>> A=[1,8,0,0,-10]; %4次多项式系数 >> x=1.2; %取自变量为一数值 >> y1=polyval(A,x) y1 = 5.8976 >> x=[-1,1.2,-1.4;2,-1.8,1.6]; %给出一个矩阵x >> y2=polyval(A,x) %分别计算矩阵x中各元素为自变量的多项式之值 y2 = -17.0000 5.8976 -28.1104 70.0000 -46.1584 29.3216
第6章
MATLAB数据分析与多项式计算
6.3.1 一维数据插值 如果被插值函数是一个单变量函数,则数据插值问 题称为一维插值。 在MATLAB中,实现这些插值的函数是interp1,该 命令对数据点之间进行计算内插值,它出一元函数 f(x)在中间点的数值,其中函数f(x)由所给数据决定。
第6章
MATLAB数据分析与多项式计算
第6章
MATLAB数据分析与多项式计算
6.3.1 一维数据插值 一维插值采用的方法(method)有 1、线性方法(插值点处函数值由连接其最邻近的两侧点的线性函数预测, MATLAB中interp1的默认方法) 2、最近方法(插值点处函数值取与插值点最邻近的已知点的函数值) 3、3次埃尔米特插值(三次Hermite多项式插值。可用pchip函数代替) 4、3次样条插值(样条插值:默认为三次样条插值。可用spline函数代 替)
2.多项式乘法运算 函数conv(P1,P2)用于求多项式P1和P2的乘积。其中, P1、P2是两个多项式系数向量。 例6-7 求多项式x4+8x3-10与多项式2x2-x+3的乘积。 命令如下:
>> A=[1,8,0,0,-10]; >> B=[2,-1,3]; >> C=conv(A,B) C= 2 15 -5 24 -20 10 -30
6.2 多项式计算
• 多项式作为线性方程组的表现形式,在运 算及应用中具有非常重要的意义。 • 在时间序列分析和多项式插值计算中,许 多问题都涉及多项式计算,MATLAB提供 了丰富的多项式运算功能,如果把这些实 际问题转成Matlab 编程语言,将会给计算 带来很大的简化。 • MATLAB进行多项式运算的原理是将多项 式转换成向量形式,然后在向量的基础上 进行计算。
第6章
MATLAB数据分析与多项式计算
6.2.1 多项式的四则运算
1.多项式的加减运算 MATLAB没有提供专门进行多项式加减运算的函数。 事实上,多项式的加减运算就是其所对应的系数向 量的加减运算。对于次数相同的两个多项式,可直 接对多项式系数向量进行加减运算。 如果多项式的次数不同,则应该把低次的多项式系 数不足的高次项用0补足,使同式中的各多项式具有 相同的次数。
第6章
MATLAB数据分析与多项式计算
6.2 多项式计算
在MATLAB中,n次多项式用一个长度为n+1的行 向量表示,缺少的幂次项系数为0。如果n次多项式 表示为: P(x)=anxn+an-1xn-1+an-2xn-2+…+a1x+a0 = [an,an-1,an-2,…,a1,a0][xn,xn-1,xn-2,…,,x,1]T 则在MATLAB中,P(x)表达为向量形式: [an,an1,an2,…,a1,a0]。
第6章
MATLAB数据分析与多项式计算
2.矩阵多项式求值 polyvalm函数用来求矩阵多项式的值,其调用格式 与polyval相同,但含义不同。 polyvalm函数要求x为方阵,它以方阵为自变量求多 项式的值。设A为方阵,P代表多项式x3-5x2+8,那 么polyvalm(P,A)的含义是: A*A*A-5*A*A+8*eye(size(A)) 而polyval(P,A)的含义是: A.*A.*A-5*A.*A+8*ones(size(A))
第6章
MATLAB数据分析与多项式计算
若已知多项式的全部根,则可以用poly函数建立起 该多项式,其调用格式为: P=poly(x) 若x为具有n个元素的向量,则poly(x)建立以x为其 根的多项式,且将该多项式的系数赋给向量P。
第6章
MATLAB数据分析与多项式计算
例6-13 已知: f ( x) 3x 5 4x 3 5x 2 7.2x 5 ① 计算f(x)=0 的全部根。 ② 由方程f(x)=0的根构造一个多项式g(x),并与f(x) 进行对比。 命令如下:
1.Linear(分段线性插值)
它是把与插值点靠近的两个数据点用直线连接,然后在直线 上选取对应插值点的数据。它的算法是在每个小区间[xi,xi+1] 上采用简单的线性插值。在区间[xi,xi+1]上的子插值多项式为:
Fi x xi 1 x xi f ( xi ) f ( xi 1 ) xi xi 1 xi 1 xi
deconv和conv是互逆的
• >>>> conv(B,P)+r
• ans = • 1 8 0 0 -10
第6章
MATLAB数据分析与多项式计算
6.2.2 多项式的导函数 求多项式的导函数用polyder函数,其调用格式如下。 ① p=polyder(P):求多项式P的导函数。 ② p=polyder(P,Q):求P· Q的导函数。 ③ [p,q]=polyder(P,Q):求P/Q的导函数,导函数的 分子存入p,分母存入q。 上述函数调用中,参数P、Q是多项式的向量表示, 结果p、q也是多项式的向量表示。
第6章
MATLAB数据分析与多项式计算
例6-11 仍以多项式x4+8x3-10为例,以2×2矩阵为自 变量分别用polyval和polyvalm计算该多项式的值。 命令如下:
>> A=[1,8,0,0,-10]; >> x=[-1,1.2;2,-1.8]; >> y1=polyval(A,x) y1 = -17.0000 5.8976 70.0000 -46.1584 >> y2=polyvalm(A,x) y2 = -60.5840 50.6496 84.4160 -94.3504 %多项式系数 %给出一个矩阵x %计算代数多项式的值
第6章
MATLAB数据分析与多项式计算
例6-9 求有理分式的导数。 命令如下: >> P=1; >> Q=[1,0,5]; >> [p,q]=polyder(P,Q) p= -2 0 q= 1 0 10 0 25
1 f ( x) x2 5
2x f ' ( x) x 4 10x 2 25
多项式的加减运算
• 有的时候,两个相加的多项式的项数并不 明确 • function p=polyadd(a,b) • na=length(a); • nb=length(b); • p=[zeros(1,nb-na) a] + [zeros(1,na-nb) b]
第6章
MATLAB数据分析与多项式计算
执行结果得到一个6次多项式:
2x6+15x5-5x4+24x3-20x2+10x-30
第6章
MATLAB数据分析与多项式计算
3.多项式除法 函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法 运算。其中,Q返回多项式P1除以P2的商式,r返回 P1除以P2的余式。这里,Q和r仍是多项式系数向量。 deconv是conv的逆函数,即有P1=conv(P2,Q)+r。
拟合
• 拟合是指已知某函数的若干离散函数值 {f1,f2,…,fn},通 过调整该函数中若干待定 系数f(λ1, λ2,…,λ3), 使得该函数与已知点集 的 差别(最小二乘意义)最小。
插值和拟合
插值曲线要过数据点,拟合曲线整体效果更好
(未知)
g(x)
第6章
MATLAB数据分析与多项式计算
6.3 数据插值
第6章
MATLAB数据分析与多项式计算
例如,计算(x3-2x2+5x+3)+(6x-1),对于和式的后一 个多项式6x-1,它仅为1次多项式,而前面的是3次。 为确保两者次数相同,应把后者的系数向量处理成 [0,0,6,-1]。命令如下: >> a=[1,-2,5,3]; >> b=[0,0,6,-1]; >> c=a+b c= 1 -2 11 2
%计算矩阵多项式的值
第6章
MATLAB数据分析与多项式计算
6.2.4 多项式求根 n次多项式具有n个根,当然这些根可能是实根,也 可能含有若干对共轭复根。MATLAB提供的roots函 数用于求多项式的全部根,其调用格式为: x=roots(P) 其中,P为多项式的系数向量,求得的根赋给向量x, 即x(1)、x(2)、…、x(n)分别代表多项式的n个根。
如果要得到这些离散点以外的其他点的数值,就需 要根据这些已知数据进行插值。 根据被插值函数的自变量个数,插值问题分为: 一维插值、 二维插值、 多维插值;
第6章
MATLAB数据分析与多项式计算
6.3 数据插值
根据是用分段直线、多项式或样条函数来作为插值 函数,插值问题又分为: 线性插值、 多项式插值、 样条插值;
第6章
MATLAB数据分析与多项式计算
6.2.3 多项式的求值
MATLAB提供了两种求多项式值的函数:polyval与 polyvalm,它们的输入参数均为多项式系数向量P 和自变量x。 两者的区别在于前者是代数多项式求值,而后者是 矩阵多项式求值。
第6章
MATLAB数据分析与多项式计算
1.代数多项式求值 polyval函数用来求代数多项式的值,其调用格式为: Y=polyval(P,x) 若x为一数值,则求多项式在该点的值;若x为向量 或矩阵,则对向量或矩阵中的每个元素求其多项式 的值。
第6章
MATLAB数据分析与多项式计算
例6-12 求多项式x4+8x3-10的根。 命令如下: >> A=[1,8,0,0,-10]; >> x=roots(A) x= -8.0194 + 0.0000i 1.0344 + 0.0000i -0.5075 + 0.9736i -0.5075 - 0.9736i
插值和拟合
• 在工程实践与科学实验中,常常需要从一组 试验数据之中找到自变量与因变量之间的 关系,一般可用一个近似函数表示。函数 产生的办法因观测数据的要求不同而异, 数据插值与拟合是两种常用的方法。
插值
• 函数插值来源于函数的以下问题:只知道 函数在某区间有定义且已得到区间内一些 离散点的值,希望用简单的表达式近似给 出函数在此区间上的整体描述,并能与已 知离散点上的值相等。
6.3.1 一维数据插值 其调用格式为: Y1=interp1(X,Y,X1,method) 函数根据X、Y的值,计算函数在X1处的值。其中, X、Y是两个等长的已知向量,分别描述采样点和采 样值。若同一个采样点有多种采样值,则Y可以为 矩阵,Y的每一列对应一组采样。X1是一个向量或 标量,描述欲插值的点,Y1是一个与X1等长的插值 结果。
第6章
MATLAB数据分析与多项式计算
例6-8 求多项式x4+8x3-10除以多项式2x2-x+3的结果。 >> A=[1,8,0,0,-10]; >> B=[2,-1,3]; >> [P,r]=deconv(A,B) P= 0.5000 4.2500 1.3750 r= 0 0 0 -11.3750 -14.1250