【问题标题】:Solving Least square using MATLAB使用 MATLAB 求解最小二乘
【发布时间】:2016-09-24 00:50:13
【问题描述】:

假设我们要确定一个多项式方程的系数,该多项式方程在 0 到 1 之间逼近正切函数,如下所示:

-A 是 m×n 范德蒙矩阵。条目使用 0 到 11 之间的 m 值填充(作为输入给出)。

-使用正切函数计算对应的向量b。

-x 是通过在 MATLAB 中键入 x= A\b 来计算的。

现在,使用 MATLAB,将计算得到的 x 代入 Ax。结果被绘制出来,它非常接近正切函数。但是如果我使用 n−1 度的 polyval 函数(在 MATLAB 中)来计算 b,则结果图与原始 b 有很大不同。我无法理解这两种方法的结果之间存在如此显着差异的原因。

代码如下:

clear all;
format long;
m = 60;
n = 11;
t = linspace(0,1,m);
A= fliplr(vander(t));
A=A(:,1:n);
b=tan(t');
x= A\b;
y=polyval(x, t);
plot(t,y,'r')
y2= A*x
hold on;
plot(t,y2,'g.');
hold on;
plot(t,tan(t),'--b');

任何见解将不胜感激。谢谢。

【问题讨论】:

    标签: matlab plot data-fitting approximation polynomial-approximations


    【解决方案1】:

    A= fliplr(vander(t)) 之后,A 矩阵等于

    1 t(1) t(1)^2 ...
    1 t(2) t(2)^2 ...
    ...
    1 t(m) t(m)^2 ...
    

    这是不正确的,因为polyval 接受降幂的系数。 A的列不用翻转:

    A= vander(t);
    A= A(:,end-n+1:end);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-13
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2018-05-16
      • 2019-02-25
      相关资源
      最近更新 更多