多项式与插值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)

相关文档
最新文档