我这有一个关于勒让德多项式作为基函数最小二乘拟合的程序,但拟合后怎么判断误差啊 我用的最佳平方误差来判断,结果每个数据的

2个回答

  • 没有对xx做数据归一化,而且有些地方有错,改成这样了

    function [p,a,F]=Legendre(xx,yy,w,n)

    %xx为拟合的横坐标数据

    %yy为拟合的纵坐标数据

    %w为权函数,可为数据出现的次数

    %n为要拟合的最高次数,最高次数小于横坐标个数

    if n>=length(xx)

    disp('n过大,超出规定');

    p=0;

    return;

    end

    syms x;

    xx=(xx*2-(max(xx)+min(xx)))/(max(xx)-min(xx));%归一化到[-1,1]

    p=cell(1,n+1); %存放勒让德多项式函数

    a=zeros(1,n+1); %系数a1 a2 a3...

    %求解勒让德多项式

    p(1)={1+0*x};

    p(2)={x};

    for i=2:n

    p(i+1)={((2*i+1)*x*p{i}-i*p{i-1})/(i+1)};

    end

    %求解系数a

    for k=1:n+1

    temp1=0;

    temp2=0;

    for i=1:length(xx)

    temp1=temp1+(w(i)*yy(i)*polyval(sym2poly(p{k}),xx(i)));

    temp2=temp2+(w(i)*polyval(sym2poly(p{k}),xx(i))^2);

    end

    a(k)=temp1/temp2;

    end

    %求最终多项式

    F=0;

    for i=1:n+1

    F=F+a(i)*p{i};

    end

    F=inline(F);

    plot(xx,yy,'-*');hold on;

    YY=F(xx); %多项式在各数据的拟合值

    plot(xx,YY,'-..');hold on;

    N=0;

    for i=1:length(xx)

    N=N+(YY(i)-yy(i))^2; %平方误差的判断

    end

    end