MATLAB中最小二乘法拟合数据

MATLAB中最小二乘法拟合数据,matlab,numerical-methods,least-squares,approximation,Matlab,Numerical Methods,Least Squares,Approximation,鉴于以下数据点 我试图用最小二乘法找到最佳拟合模型 给出了两个模型 我的方法是将to方程改写为以下内容 在哪里 及 在哪里 及 我编写了以下MATLAB代码来计算不同方程的系数a,b 对于第一个等式,我编写了以下代码来计算系数a x = [150 200 300 500 1000 2000]'; y = [2 3 4 5 6 7]'; func =@(x) (1/x-1/8); yy=arrayfun(func,y); A = 1./x; c= A\yy; yanp= A*c;

鉴于以下数据点

我试图用最小二乘法找到最佳拟合模型

给出了两个模型

  • 我的方法是将to方程改写为以下内容


  • 在哪里


  • 在哪里


    我编写了以下MATLAB代码来计算不同方程的系数a,b

    对于第一个等式,我编写了以下代码来计算系数a

    x = [150 200 300 500 1000 2000]';
    y = [2 3 4 5 6 7]';
    func =@(x) (1/x-1/8);
    yy=arrayfun(func,y);
    A = 1./x;
    c= A\yy; yanp= A*c; error = yy-yanp;
    rms(error) % Root mean square error.
    
    给我a=48.4692,均方根误差为0.0310

    对于第二个等式,我编写了以下代码来计算系数a,b

    x = [150 200 300 500 1000 2000]';
    y = [2 3 4 5 6 7]';
    yy = log(8-y);
    A = [ones(6,1) log(x)];
    c= A\yy; yanp= A*c;  error= yy-yanp;
    a = exp(c(1)); %Converting back
    b= c(2);
    rms(error)
    
    给我a=174.5247,b=-0.6640,均方根误差为0.0756

    我的结果表明,由于误差较小,第一个方程是更好的近似值,然而我的同学们声称,第二个方程的误差较小,因此是更好的近似值。我怀疑我在计算中的某个地方犯了错误,我正在寻找指导。

    在第二种情况下,您没有正确计算错误。您需要将
    yanp
    转换回“真实单位”,并与输入的
    y
    进行比较:

    error = y-(8-exp(yanp));
    

    我不知道。。。从视觉角度来看,当绘制两个回归(
    figure(),plot(x,y),hold on,plot(x,yanp),hold off;
    )时,我发现第二个更好。它应该返回一个较低的RMSE,因为预测值与观测值的偏差要小得多。。。日志转换一定出了问题。