matlab学习笔记7 插值方法与求解微分方程

发布时间 2023-04-04 18:02:46作者: wxk123

插值法

拉格朗日插值

分段插值

由于高次函数往往拟合的情况反而不好,所以用两点之间的直线代替其值进行插值
image
image

三次样条插值

更加光滑,节点处二阶可导

代码汇总

interp1(x0,y0,x,'cubic')%分段三次多项式插值,第三个参数不写则为普通分段插值
interp1(x0,y0,x,'spline')%三次样条插值,子区间使用三次多项式,节点处二阶可导
interp1(x0,y0,x,'nearest')%就近插值,使某点处的值为最近的点的值

示例:

x0=linspace(-5,5,20);
y0=x0.^2.*sin(x0);
x=linspace(-5,5,1000);
y1=interp1(x0,y0,x);
y2=interp1(x0,y0,x,'cubic');
y3=interp1(x0,y0,x,'spline');
plot(x,y1,x,y2,x,y3)
legend("线性插值","分段三次插值","三次样条插值");

二维插值

%二维插值
%method使用方式同一维情况
%整齐
interp2(x0,y0,z0,x,y,'method')
%散乱时
griddata(x0,y0,z0,x,y,'method')
%示例:
x=0:2.5:10;
h=[0:30:60]';
T=[95,14,0,0,0;88,48,32,12,6;67,64,54,48,41];
mesh(x,h,T)%网格图
xi=0:10;
hi=[0:2:50]';
Ti=interp2(x,h,T,xi,hi,'linar');
mesh(xi,hi,Ti)
插值方式 效果 适用情况
分段插值 较平滑 大多数

微分方程

syms x(t) t;
eq=diff(x,t)==-4*x+sin(2*t);
x(t)=dsolve(eq)

image
添加约束条件
image