次のように、正接関数を 0 から 1 の間で近似する多項式の係数を決定するとします。
-A は m×n のヴァンデルモンド行列です。エントリは、0 ~ 11 の m 値 (入力として指定) を使用して設定されます。
-対応するベクトル b は、正接関数を使用して計算されます。
-x は、MATLAB で x= A\b と入力して計算されます。
ここで、MATLAB を使用して、計算された x が Ax に代入されます。結果がプロットされ、正接関数に非常に近くなっています。しかし、(MATLAB で) n-1 次の polyval 関数を使用して b を計算すると、結果のプロットは元の b とは大きく異なります。これら 2 つの方法の結果にこれほど大きな違いがある理由がわかりません。
コードは次のとおりです。
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');
任意の洞察をいただければ幸いです。ありがとうございました。