我的任务是找到自然三次样条函数S来对我给出的一组数据进行插值。我得到了11个数据点。本质上,这意味着我必须在这些点之间放置一个三次方函数,这样我才能有10个三次方函数一起流入看起来像1个函数的东西。
我已经完成了。我是MatLab的新手,所以我不确定如何在此绘图上放置点。
由于必须要粘合在一起的10个函数的性质,我发现了一个称为分段的函数,可以很好地实现此目的。这是我定义分段函数的方式:
syms S(t)
S(t) = piecewise(x(1)<t<x(2), (longExpression1), x(2)<t<x(3), (longExpression2), ... x(10)<t<x(11), (longExpression10));
然后我使用fplot()绘制函数并定义要查看其图的域:
fplot(S(t), [0,100]);
我需要在该图上绘制13个点。 我需要绘制的前11个点是位于每个分段末端的点。我需要绘制的最后2个点不是端点,而是两个不同分段段中间的某个点。
这11个数据点具有以下x和y值:
x = [0 10 20 30 40 50 60 70 80 90 100];
y = [75.995 91.972 105.711 123.203 131.669 150.697 179.323 203.212 226.505 249.633 281.422];
答案 0 :(得分:1)
您可以尝试以下操作:
fplot(S(t), [0,100]);
hold on % This will prevent the new plot from erasing the result of fplot
plot(x,y,'or'); % 'ok' is a format identifier, the points will be plot as red(r) circles(o)
plot([x1,X2],[S(x1),S(x2)],'or'); %Plot the two extra points