먼저 구간 [0,2.5] 내에서 균일한 간격의 x 점으로 구성된 벡터를 생성한 다음, 이들 점에서 erf(x)를 계산합니다.
x = (0:0.1:2.5)';
y = erf(x);
6차 근사 다항식의 계수를 확인합니다.
p = polyfit(x,y,6)
p = 1×7
0.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004
피팅이 얼마나 일치하는지 보려면, 데이터 점에서 다항식을 계산하고 데이터, 피팅, 오차를 보여주는 테이블을 생성합니다.
f = polyval(p,x);
T = table(x,y,f,y-f,'VariableNames',{'X','Y','Fit','FitError'})
T=26×4 table
X Y Fit FitError
___ _______ __________ ___________
0 0 0.00044117 -0.00044117
0.1 0.11246 0.11185 0.00060836
0.2 0.2227 0.22231 0.00039189
0.3 0.32863 0.32872 -9.7429e-05
0.4 0.42839 0.4288 -0.00040661
0.5 0.5205 0.52093 -0.00042568
0.6 0.60386 0.60408 -0.00022824
0.7 0.6778 0.67775 4.6383e-05
0.8 0.7421 0.74183 0.00026992
0.9 0.79691 0.79654 0.00036515
1 0.8427 0.84238 0.0003164
1.1 0.88021 0.88005 0.00015948
1.2 0.91031 0.91035 -3.9919e-05
1.3 0.93401 0.93422 -0.000211
1.4 0.95229 0.95258 -0.00029933
1.5 0.96611 0.96639 -0.00028097
⋮
이 구간에서, 보간된 값과 실제 값은 상당히 근사하게 일치합니다. 플롯을 만들어 이 구간 밖에서 외삽 값이 실제 데이터로부터 얼마나 빠르게 발산하는지 표시합니다.
x1 = (0:0.1:5)';
y1 = erf(x1);
f1 = polyval(p,x1);
figure
plot(x,y,'o')
hold on
plot(x1,y1,'-')
plot(x1,f1,'r--')
axis([0 5 0 2])
hold off