matlab⼆次多项式插值,MATLAB应⽤——多项式与插值函数
数学建模是⽤数学⽅法解决各种实际问题的桥梁,它已经渗透到各个领域,⽽且发挥出越来越重要的作⽤。⾯对⾃然科学和⼯程应⽤中的难题,⼤部分⼈⽆从⼊⼿,⽽个别⼈却能短时间内给出切实可⾏的解决⽅案,其差别往往在于驾驭数学知识的能⼒不同。现代计算机技术的应⽤不仅减少了计算错误,⽽且加强了数学应⽤者解决问题的能⼒。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函数可在最⼩⼆乘意义下出⼀多项式来拟合给定的⼀组数据。其调⽤格式为
用subplot函数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('多项式曲线拟合')
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('⼆维三次曲线内插')
各位读者朋友,感谢您的阅读,您若对⼯程应⽤中的数学问题感兴趣,欢迎关注我,愿我们⼀起讨论和成长
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论