案例1 一阶线性插值
待加工零件外形根据工艺要求在一组数据(x,y)给定(如下表),用程控铣床加工时每一刀只能沿着x方向或y方向走非常小的一步,需要从已知数据得到加工步长很小的(x,y)的坐标。
下表中所给x,y数据位于机翼断面的下轮廓线上,假设需要得到x坐标改变值为0.1的y坐标,试完成加工所需数据,画出曲线,并求出x=0处曲线斜率和13≤x≤15范围内的y的最小值。
要求: (1)用分段线性插值法; (2)三次样条插值法.
插入点数据表
x |
0 |
3 |
5 |
7 |
9 |
11 |
12 |
13 |
14 |
15 |
y |
0 |
1.2 |
1.7 |
2.0 |
2.1 |
2.0 |
1.8 |
1.2 |
1.0 |
1.6 |
【符号设置】
- x0,y0 插入节点,即表1中已知数据;
- 待插数据,x=0:0.1:15;
- y 待插数据对应的纵坐标值;
- k0 表示x=0处的曲线斜率(即导数);
- Ymin 表示13≤x≤15范围内的y的最小值。
【数学模型1】线性插值公式
在x=0出的斜率的计算公式为
【模型1求解】
x0=[0 3 5 7 9 11 12 13 14 15]; y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6]; x=0:0.1:15; y=interp1(x0,y0,x); plot(x0,y0,'*',x,y,'+-') dy=diff(y); dx=diff(x); dy_dx=dy./dx; k0=dy_dx(1); x1=x(x<=15&x>=13); y1=y(x<=15&x>=13); Ymin=min(y1); yindex=find(y1==Ymin); Xmin=x1(yindex); [Xmin,Ymin,k0]
注:`dy = diff(y)` 是一个求解差分的函数,用于计算给定向量 y 的差分。
差分是指计算向量中相邻元素之间的差异。通过对 y 中的元素进行逐个相减,可以得到一个新的向量 dy,其长度比 y 少 1。换句话说,dy 中的每个元素都是 y 中相邻元素的差值。
差分常用于处理时间序列数据或离散数据,可以提供关于数据趋势、变化率和离散程度等方面的信息。通过计算差分,我们可以获得连续数据点之间的变化量,从而进行进一步的数据分析和处理。
根据计算,x=0处的斜率为k0=0.4;
当13<x<15时,y的最小值是Ymin=1,此时对应的横坐标为Xmin=14.
【数学模型2及其求解】三次样条插值
x0=[0 3 5 7 9 11 12 13 14 15]; y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6]; x=0:0.1:15; y1=interp1(x0,y0,x,'spline'); pp1=csape(x0,y0); y2=fnval(pp1,x); pp2=csape(x0,y0,'second'); y3=fnval(pp2,x); subplot(2,1,1); plot(x,y1,'*-'); title('spline'); subplot(2,1,2); plot(x,y3,'+-'); title('second'); dy=diff(y1); dx=diff(x); dy_dx=dy./dx; k0=dy_dx(1); yf=y1(131:end); xf=x(131:end); Ymin=min(yf); Xmin=xf(yf==Ymin); [Xmin,Ymin,k0]
注:`y1 = interp1(x0, y0, x, 'spline')` 和 `pp1 = csape(x0, y0)` 都是用于进行数据插值的函数,但是它们使用不同的插值方法和返回不同的结果。
`interp1` 函数使用的是插值方法中的样条插值,通过在已知数据点之间构建光滑的曲线来进行插值。在代码中,`'spline'` 是插值方法的参数,表示使用三次样条曲线进行插值。`interp1` 函数根据已知数据点 `(x0, y0)` 和待插值的自变量 `x`,计算对应的插值结果 `y1`。
`csape` 函数则使用的是样条插值的另一种形式,称为分段样条插值。它通过构建一组分段的三次多项式曲线来进行插值。在代码中,`csape` 函数的返回值 `pp1` 是一个样条插值对象,它包含了构建的分段样条曲线的相关信息。
相比较而言,`interp1` 函数使用起来更加简单,直接给出了插值结果。而 `csape` 函数则返回一个对象,需要进一步使用其他函数或方法来进行插值计算或求导等操作。使用 `csape` 函数可以更加灵活地控制插值过程,例如可以进行边界条件的设定或者选择不同的插值方法等。
根据计算,x=0处的斜率为k0=0.4986;
当13<=x<=15时,y的最小值为Ymin=0.9828,对应的横坐标Xmin=13.8.
案例2 利用插值法求积分
已知速度曲线v(t)上的四个点数据,如下表,用三次样条插值求位移S(t)。
t |
0.15 |
0.16 |
0.17 |
0.18 |
V(t) |
3.5 |
1.5 |
2.5 |
2.8 |
【符号设置】
- T 时间;
- V 速度;
- S 位移(路程);
【数学模型】
其中,v(t)函数并不知道,只能靠四个节点插值生成。
【模型求解】
(1)利用三次样条插值,得到速度函数v(t)的表达式。
(2)求位移
=0.068625