首页 > 代码库 > 三次样条4点权重

三次样条4点权重

clear
clc

syms x0 x1 x2 x3 h x
syms y0 y1 y2 y3

h0=h;%x1-x0;
h1=h;%x2-x1;
h2=h;%x3-x2;

d0=(y1-y0)/(x1-x0);
d1=(y2-y1)/(x2-x1);
d2=(y3-y2)/(x3-x2);

d0=(y1-y0)/h;
d1=(y2-y1)/h;
d2=(y3-y2)/h;

A=[1      0     0      0;
   h    4*h     h      0;
   0      h   4*h      h;
   0      0     0      1 ]
b=[0;
   6*(d1-d0);
   6*(d2-d1);
   0];

m=A\b;

m0=m(1);
m1=m(2);
m2=m(3);
m3=m(4);

s10=y1;
s11=d1-h/6*(2*m1+m2);
s12=m1/2;
s13=(m2-m1)/6/h;

s=s10+s11*(x-x1)+s12*(x-x1)^2+s13*(x-x1)^3;

ss=s;

s=ss;
s=subs(s,y1,0);
s=subs(s,y2,0);
s=subs(s,y3,0);
cc=collect(s,y0);
simplify(cc);
pretty(cc)

s=ss;
s=subs(s,y0,0);
s=subs(s,y2,0);
s=subs(s,y3,0);
cc=collect(s,y1);
simplify(cc);
pretty(cc)

s=ss;
s=subs(s,y0,0);
s=subs(s,y1,0);
s=subs(s,y3,0);
cc=collect(s,y2);
simplify(cc);
pretty(cc)

s=ss;
s=subs(s,y0,0);
s=subs(s,y1,0);
s=subs(s,y2,0);
cc=collect(s,y3);
simplify(cc);
pretty(cc)

 

三次样条4点权重