对于 n = 2 ...11 设置大小为 m × n 的范德蒙德矩阵 A,并且对于每个给定数据集 a.



我被赋予了 50 个数据点的集合,值为 {a^(i),b^(i)} 表示 i=1,...,50 存储在数组 A 和 B 中。 我知道范德蒙德矩阵 A 的大小为 m x n,其中 n = 2 ...11 和 m 是数组 a 的大小。

我想用次数多项式 (n − 1) 拟合数据,因为 n = 2,...,11。要为每个 n 执行此操作,我必须设置大小为 m × n 的范德蒙德矩阵 A。

范德蒙德矩阵 A 求解以下等式:A^T*A*x = A^T*b

其中 A^T 是转置矩阵,我已经给出了 b。 我们也知道 j = 1,...,n 的Aij = (a^(i))^(j−1), 让我感到困惑的是,如何为 n = 2,..,11 设置矩阵。

我的想法是: 我m = length(a);这将设置 m = 50;

n = 11;

然后A=ones(m,n);这将创建一个矩阵 A,其中填充了具有正确大小的矩阵。

但是我不确定如何填充矩阵。 我写了下面的 for 循环,我认为它会填充矩阵:

for n = 2:11
j=n;
for i = 1:50
A(i,n) = (a^(i))^(j-1);
end
end

你能帮我设置矩阵吗?

您应该使用vander函数。但是,vander将返回一个 m x m 矩阵,该矩阵通常用于将数据拟合到次数多项式 (m-1)。由于您想要拟合到次数多项式 (n-1),因此只需要该矩阵的最后 n 列。

代码如下:

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

相关内容

最新更新