。以下是对代码的解释: % X3 c2 y8 x* N# }2 n1 s& ~+ W- T* ]3 x" P+ W
1.函数定义:# p T8 L+ x# k0 j% f& A3 W
Z8 ~# l+ Q2 E- g: o l1 z x = -1:0.01:1;& u- c: B7 K1 N2 S+ n& C
y = 1./(1+25*x.^2); ; }. ~ u, c0 n F$ ]- Y y1 = -50./(1+25.*x.^2).^2.*x; % y 的导数 ( _. C: I0 g* y2 S n = length(x); 8 R: b: A% o8 o x1 = -0.9:0.1:0.9; $ `. _# m. e, A3 u+ B* U m = length(x1);5 I# ?; Z; b1 h' U$ Q, k1 G
: ?$ Z6 q. h. D. _这里定义了原始函数 y 和它的导数 y1,以及需要进行插值的点 x1。, @ `8 o# u3 B5 [9 I6 r& z
3 z' L* h4 J( x4 n2.三次样条插值: 6 \, G/ m3 D* Q( U5 F$ K9 B7 N6 r& n$ n# \- C5 f& q7 s2 a
for k = 1:m 1 A2 l; T4 D$ P; Y% F! J for i = 1:n-1 ' O3 h9 U2 {9 j. c% ? if (x1(k) >= x(i) && x1(k) <= x(i+1))! u) U: F, b9 ^ `4 x
h(i) = x(i+1) - x(i); 8 `) n, `4 ^7 L( V9 W t = (x1(k) - x(i)) / h(i);& T/ ` r% ?. z3 r- b' F
u1 = (1+2*t)*(t-1)^2; , ^) q! K C% d, ] u2 = t*(t-1)^2;0 y( U. W7 U( X! o9 r3 n) t
u3 = t^2*(3-2*t); 6 g* @6 F0 J8 Y) f3 P5 P u4 = t^2*(t-1);% O* {3 Z6 q6 \( M; W- F* u, J
hm(k) = y(i)*u1 + h(i)*y1(i)*u2 + y(i+1)*u3 + h(i)*y1(i+1)*u4;% \6 G6 e- q5 G2 R+ B; n9 h
end + [' t( [. T1 U' N1 Y2 U* Y5 B end ) J# t7 e8 O& d. W( } end# [# ^: |) e' i