多项式与插值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多项式
多项式的表达
MatLab中用按降幂排列的多项式系数组成的行向量表示多项式,如: p(x)=x^3-2x-5被表示为:
p = [1 0 –2 –5];
多项式的根
r = roots(p)
r =
2.0946
–1.0473 + 1.1359i
–1.0473 – 1.1359i
根被储存为列向量.
若要由方程的根构造多项式,则
p2 = poly(r)
p2 =
1 8.8818e-16 –
2 –5
多项式估计
可以用多项式估计出多项式在某一点的值:
polyval(p,5)
ans =
110
同样也可以估计矩阵多项式的值p(X) = X^3 – 2X – 5I,
X = [2 4 5; –1 0 3; 7 1 5];
Y = polyvalm(p,X)
Y =
377 179 439
111 81 136
490 253 639
卷积
多项式相乘是一个卷积的过程,conv()
a = [1 2 3];
b = [4 5 6];
c = conv(a,b)
c =
4 13 28 27 18
多项式相除是其逆过程,用deconv():
[q,r] = deconv(c,a)
q =
4 5 6
r =
0 0 0 0 0
多项式曲线逼近
polyfit(x,y,n)能用多项式逼近由x,y向量提供的数据,n是其阶数,如: x = [1 2 3 4 5];
y = [5.5 43.1 128 290.7 498.4];
p = polyfit(x,y,3)
p =
–0.1917 31.5821 –60.3262 35.3400
将图画出
x2 = 1:.1:5;
y2 = polyval(p,x2);
plot(x,y,’o’,x2,y2)
grid on
分式多项式分解
residue()可将分式多项式分解如下:
对于下式
分解为:
b = [–4 8];
a = [1 6 8];
[r,p,k] = residue(b,a)
r =
–12 8
p =
–4 –2
k =
[]
重载此函数可以完成分式多项式相加:
[b2,a2] = residue(r,p,k)
b2 =
–4 8
a2 =
1 6 8
插值
插值是在已知的数据列中,估计别点的函数值.
一维插值
一维插值在MatLab中有两种方法:
@ 多项式插值
@ 建立在FFT上的插值
多项式插值
yi = interp1(x,y,xi,method)
x是坐标向量,y是数据向量,xi是待估计点向量,method是插值方法, method有四种:
1.nearest 寻找最近数据点,由其得出函数值;
2.linear 线性插值(该函数的默认方法);
3.spline 样条插值,数据点处光滑--左导等于右导;
4.cubic 三次插值
以上四种方法得出的数据值一个比一个精确,而所需内存及计算时间也一个比一个要大要长.
建立在FFT上的插值
这种方法利用了快速傅立叶变换
y = interpft(x,n),其中,x含有周期性的函数值.
二维插值
ZI = interp2(X,Y,Z,XI,YI,method)
method有三种:
1.nearest 寻找最近数据点,由其得出函数值;
2.linear 二维线性插值
3.cubic 二维三次插值
下面来看看二维插值的例子:
先创造数据点:
[x,y] = meshgrid(–3:1:3);
z = peaks(x,y);
surf(x,y,z)
再比较一下不同的插值
[xi,yi] = meshgrid(–3:0.25:3);
zi1 = interp2(x,y,z,xi,yi,'nearest');
zi2 = interp2(x,y,z,xi,yi,'bilinear'); zi3 = interp2(x,y,z,xi,yi,'bicubic');
三维及多维插值
列出函数,其余从略
VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
VI = interpn(X1,X2,X3...,V,Y1,Y2,Y3,...,method)