matlab二次多项式插值,MATLAB应用——多项式与插值函数

matlab二次多项式插值,MATLAB应用——多项式与插值函数_第1张图片

数学建模是用数学方法解决各种实际问题的桥梁,它已经渗透到各个领域,而且发挥出越来越重要的作用。面对自然科学和工程应用中的难题,大部分人无从入手,而个别人却能短时间内给出切实可行的解决方案,其差别往往在于驾驭数学知识的能力不同。现代计算机技术的应用不仅减少了计算错误,而且加强了数学应用者解决问题的能力。MATLAB是一款常用的数据处理软件,为了更好的应用MATLAB软件,我将整理好的MATLAB函数分享到今日头条上,以利己利人查阅。

本文详细介绍了MATLAB中的多项式与插值函数,涉及:多项式表式、多项式求根、特征多项式、多项式计算、卷积和去卷积运算、多项式求导、多项式曲线拟合、一维和二维插值函数。

1、多项式表示

在MATLAB中,多项式可用行矢量表示,其元素按幂指数降序排列,例如:

p(x)=x3-2x-5

可表示成

p=[1 0 -2 -5];

2、多项式的根

为求得多项式的根,即p(x)=0的解,可利用roots函数

p=[1 0 -2 -5];

r=roots(p)

r = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i

利用poly函数可从多项式的根中恢复出多项式

p2=poly(r)

p2 = 1.0000 0 -2.0000 -5.0000

3、特征多项式

poly函数还可以用于计算矩阵的特征多项式系数

A=[ 1 2 -1;3 4 5; -1 9 2];

poly(A)

ans = 1.0000 -7.0000 -38.0000 90.0000

4、多项式计算

polyval函数可计算出多项式在指定点处的值,例如:

y1=polyval(p,4)

y1 = 51

5、卷积和去卷积

多项式的乘和除对应于卷积和去卷积操作,这可由函数conv和deconv实现。例如,a(s)=s2+2s+3,b(s)=4s2+5s+6,则求c(s)=a(s)*b(s)时可输入

a=[1 2 3];

b=[4 5 6];

c=conv(a,b)

c = 4 13 28 27 18

通过多项式除法,可以得到c(s)/b(s)=q(s)+r(s)/b(s),这可由deconv函数求出

[q,r]=deconv(c, b)

q = 1 2 3

r = 0 0 0 0 0

6、多项式求导

polyder函数可用于求出单个多项式的导数,也可用于求两个多项式之积或之比的导数,这可由下列示例说明:

p=[1 0 -2 -5];

q=polyder(p)

q = 3 0 -2

a=[1 3 5];b=[2 4 6];

c=polyder(a,b)

c = 8 30 56 38

[q,r]=polyder(a,b)

q = -2 -8 -2

r = 4 16 40 48 36

最后求出了q(s)/r(s)为a(s)/b(s)的导数。

7、多项式曲线拟合

polyfit函数可在最小二乘意义下找出一多项式来拟合给定的一组数据。其调用格式为

p=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);

x2=1:.1:5;

y2=polyval(p,x2);

figure(1)

plot(x,y,'o',x2,y2)

grid on

title('多项式曲线拟合')

matlab二次多项式插值,MATLAB应用——多项式与插值函数_第2张图片

8、一维内插

1)多项式内插

interpl函数可完成一维内插,其调用格式为

yi=interp1(x, y, xi, method)

其中,x,y为给定的数据对,xi为要内插的点矢量,method用于指定内插方法,可取

● ?nearest (最邻近内插):将内插点设置成最接近于已有数据点的值。

● ?1inear (线性内插):连接已有数据点作线性逼近。这是interpl函数的缺省设置。

● ?spline (三次样条内插):利用一系列样条函数获得内插数据点,从而确定已有数据点之间的函数。

● ?cubic(三次曲线内插):通过y拟合三次曲线函数,从而确定内插点的值。

以上这四种方法都要求x中的数据为单调,每种方法不要求x为均匀间隔,但如果x已经为均匀间隔,则在method之前加上*,可使执行速度加快。

这四种方法对执行速度、内存要求及得到的平滑度是不同的。总的说来,按nearest、linear、cubic、spline顺序,内存要求从小到大,执行速度由快到慢,平滑度由差到好。

2)基于FFT的内插

interpft完成基于FFT的一维内插,其调用格式为

y=interpft(x, n)

其中,x中包含等间隔取样的周期函数值,n为要求得到的点数。

9、二维内插

interp2函数用于完成二维内插,其调用格式为

Z1=interp2(X, Y, Z, XI, YI, method)

其中,method用于指定内插方法,可取nearest (最邻近内插)、bilinear (双线性内插)、spline (三次样条内插)、bicubic(二维三次曲线内插)。

为说明各种内插方法的效果,先产生一个7×7的数据矩阵,然后采用这三种方法进行内插,最后比较得到的结果。

% 产生低分辨率峰值函数

[x,y]=meshgrid(-3:1:3);

z=peaks(x,y);

% 定义内插点

[xi,yi]=meshgrid(-3:.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');

% 绘出曲面图进行比较

figure(1)

subplot(2,2,1)

surf(x,y,z),title('原始数据曲线')

subplot(2,2,2)

surf(xi,yi,zi1),title('最邻近内插')

subplot(2,2,3)

surf(xi,yi,zi2),title('双线性内插')

subplot(2,2,4)

surf(xi,yi,zi3),title('二维三次曲线内插')

% 绘制轮廓图进行比较

figure(2)

subplot(2,2,1)

contour(x,y,z),title('原始数据曲线')

subplot(2,2,2)

contour(xi,yi,zi1),title('最邻近内插')

subplot(2,2,3)

contour(xi,yi,zi2),title('双线性内插')

subplot(2,2,4)

contour(xi,yi,zi3),title('二维三次曲线内插')

matlab二次多项式插值,MATLAB应用——多项式与插值函数_第3张图片

matlab二次多项式插值,MATLAB应用——多项式与插值函数_第4张图片

各位读者朋友,感谢您的阅读,您若对工程应用中的数学问题感兴趣,欢迎关注我,愿我们一起讨论和成长!!!

你可能感兴趣的:(matlab二次多项式插值)