回 帖 发 新 帖 刷新版面

主题:求助插值函数拟合

设区间[a,b],在[a,b]上取N+1个节点
使得a=X0<X1<X2<…<Xn-1<Xn=b
构造函数S(x),使得在每一个子区间[Xj-1, Xj](j=1,2,3…,N)上为二次多项式,在内结点Xj处,函数及其一阶导数连续。
S(Xj)=yj
S’(Xj)-= S’(Xj)+
构造一个二次样条函数,在区间[Xj-1, Xj](j=1,2,3…,N)上的表达式为
Sj(x)=aj+bj*[x-x(j-1)]^2+cj*(xj-x)^2_
Sj(x)’=2bj*[x-x(j-1)]+2*cj*(xj-x) 
二阶导数在子区域为常数,但不连续。
设h=xj-x(j-1),采样步长
bj=cj+[yj-y(j-1)]/h2
aj=yj-bj*h2
c(j+1)=-bj
给定边界条件
x0=0
y0=0
c1=0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%interp.m
syms x
%采样时间
x(1)=20;
x(2)=40;
x(3)=60;
x(4)=80;
x(5)=100;
x(6)=120;
x(7)=140;
x(8)=160;
x(9)=180;
x(10)=200;
%采样值
y(1)=-0.12;
y(2)=-0.02;
y(3)=0.11;
y(4)=0.20;
y(5)=0.25;
y(6)=0.34;
y(7)=0.50;
y(8)=0.61;
y(9)=0.68;
y(10)=0.74;
c(2)=0;%边界值
h=20;%采样步长
n=10;
for i=2:10
    a(1)=-0;
    b(1)=-0.0003;
    c(1)=0;
    b(2)=c(2)+(y(2)-y(1))/400;
    c(2)=0.0003;
    a(2)=y(2)-b(2)*400;
    b(i)=c(i)+((y(i)-y(i-1))/(h^2))
    a(i)=y(i)-b(i)*(h^2)
    c(i+1)=-b(i)
    yy(i)=a(i)+b(i)*((x-x(i-1))^2)+c(i)*((x(i)-x)^2)%输出二次样条插值函数
end 
我想把函数分段拟合,同时拟合出结果和曲线,如果数据很多怎么在matlab主界面输入数据呢,谢谢!!!!!!!!

回复列表 (共1个回复)

沙发


没人回啊 
继续顶啊 

我来回复

您尚未登录,请登录后再回复。点此登录或注册