0

우리는 다음과 같이, (1) 0 사이의 탄젠트 함수를 근사화되는 다항식의 계수를 결정한다고 가정. 입력은 0에서 11 사이의 m 값을 사용하여 채워집니다 (입력으로 제공됨).해결 최소 제곱하여 MATLAB

- 해당 벡터 b는 접선 함수를 사용하여 계산됩니다.

-x는 MATLAB에서 x = A \ b를 입력하여 계산됩니다.

이제 MATLAB을 사용하여 계산 된 x가 Ax에서 하위 순서로 표시됩니다. 결과가 플롯되고 접선 함수에 매우 가깝습니다. 그러나 b를 계산하기 위해 n-1도 (MATLAB에서)의 polyval 함수를 사용하면 결과 플롯이 원본 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'); 

: 여기

는 코드입니다. 고맙습니다.

답변

1

A= fliplr(vander(t))A 행렬 polyval가 전력 하강의 계수를 허용하기 때문에 정확하지

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

같다. A의 열을 뒤집을 필요가 없습니다.

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