Kod programu
>> x=[1 2 3];
y=1./(x+1);
S3N=nsfit(x,y);
dx0=-1/4; dxn=-1/8;
S3=csfit(x,y,dx0,dxn);
x1=x(1):.01:x(2); y1=polyval(S3N(1,:),x1-x(1));
x2=x(2):.01:x(3); y2=polyval(S3N(2,:),x2-x(2));
fx1=1./(x1+1);
fx2=1./(x2+1);
ys1=polyval(S3(1,:),x1-x(1));
ys2=polyval(S3(2,:),x2-x(2));
E11N=abs(fx1-y1);
E12N=abs(fx2-y2);
E11=abs(fx1-ys1);
E12=abs(fx2-ys2);
subplot(3,1,1)
hh1=plot(x,y,'o',fx1,x1,fx2,x2,'k-',x1,y1,x2,y2,'r-',x1,ys1,x2,ys2,'g-');
>>
>> S3
S3 =
-0.0104 0.0937 -0.2500 0.5000
-0.0521 0.0625 -0.0938 0.3333
>> S3N
S3N =
0.0208 0 -0.1875 0.5000
-0.0208 0.0625 -0.1250 0.3333
Wykres
Wnioski
Jak widać błąd przy naturalnej funkcji sklejanej jest mniejszy niż ten przy zwykłej funkcji sklejanej. Obie funkcje dają bardzo duże przybliżenie dla rzeczywistej funkcji. Z obliczeń ręcznych i tych w programie wynika, że parametry dla funkcji sklejanych są takie same wystarczy tylko wygenerować odpowiednie równania przy obliczaniu ręcznym.
Treść zadania
7) „Funkcje sklejane” – Dla funkcji f(x)=1/(x+1) w punktach {1 2 3} wyprowadź ręcznie postać naturalnej funkcji sklejanej S3N(x). Następnie porównaj wynik z obliczeniami numerycznymi używając skryptów Matlaba. Następnie wyznacz (znów używając skryptów) postać funkcji sklejanej S3(x) stosując warunki S3’(1) = -1/4, S3’(3)=-1/8. Wykreśl za pomocą komendy plot błędy lokalne E1(x)=abs(f(x)-S3N(x)) oraz E2(x)=abs(f(x)-S3(x)) i skomentuj rezultat. Wykreśl podane punkty, przebieg wyznaczonych funkcji sklejanych i funkcji f(x) używając komendy plot. Wydruk wykresu (wraz z kodem) dołącz do sprawozdania.
bzyku151515