równanie (4.65) możemy przekształcić do postaci
(4.67)
określającej hiperboliczne funkcje sklejane (nazywane w literaturze anglojęzycznej „splines in tension”).
Zarówno wielomianowe funkcje sklejane, jak i hiperboliczne funkcje sklejane są przykładami algebraicznych funkcji sklejanych. W ostatnich latach rozwijany jest również drugi kierunek badań, w którym przez funkcje sklejane rozumie się takie elementy przestrzeni Sobolewa, które minimalizują określone funkcjonały - wynikające z ekstremalnych własności funkcji sklejanych, a szczególnie z własności minimalnej normy. Najczęściej są jednak wykorzystywane wielomianowe funkcje sklejane do stopnia trzeciego włącznie, ze względu na łatwość wyznaczania parametrów tych funkcji i możliwość uzyskiwania rozwiązań o wystarczającej w praktyce gładkości. Mogą one być stosowane do rozwiązywania różnych zagadnień numerycznych - począwszy od interpolacji, a skończywszy na przybliżonym rozwiązywaniu zagadnień opisywanych równaniami różniczkowymi cząstkowymi i całkowymi.
4.8. Wielomianowe funkcje sklejane trzeciego stopnia
Przedstawimy najpierw funkcję sklejaną Hermite'a (z defektem dwa), która charakteryzuje się następującymi własnościami:
- w każdym podprzedziale jest wielomianem trzeciego stopnia,
- jest klasy ; co oznacza, że zarówno funkcja , jak i jej pochodna są funkcjami ciągłymi,
- spełnia warunki interpolacji, czyli ,
- przybiera we wszystkich węzłach interpolacji zadane wartości pierwszych pochodnych, tzn.
Niezbędne wartości pierwszych pochodnych we wszystkich węzłach , obliczymy przyjmując, że są one równe odpowiednim pochodnym wielomianów drugiego stopnia, przechodzących przez trzy kolejne punkty: (rys. 4.17); wyrażają się one poprzez następujące ilorazy różnicowe:
(4.68)
(4.68cd.)
gdzie:
(4.69)
Ilorazy różnicowe (4.68) - (4.69) są drugiego rzędu dokładności, o czym łatwo można się przekonać po podstawieniu do nich rozwinięć i w szeregi Taylora względem punktu
Rys. 4.17
Dla zadanych we wszystkich węzłach wartości i wielomianowa funkcja sklejana Hermite'a trzeciego stopnia jest w każdym podprzedziale określona wzorem
(4.70)
gdzie:
*
Wyprowadzenie równań wielomianowej funkcji sklejanej trzeciego stopnia, która należy do
(z defektem jeden) opiera się na zależności (4.58)
(4.71)
po wprowadzeniu oznaczenia
(4.72)
Całkując dwukrotnie obie części równania (4.71) uzyskujemy:
(4.73)
(4.74)
gdzie i
są stałymi. Stałe całkowania wyznaczamy z warunków interpolacji
(4.75)
Pełne zdefiniowanie funkcji sklejanej wymaga jeszcze określenia wielkości W tym celu z równań (4.73) i (4.75a) obliczamy granice jednostronne:
(4.76)
Ciągłość
i wynika z równań (4.71) oraz z równań (4.74) ÷ (4.75). Żądając natomiast ciągłości
w punktach
(4.77)
otrzymamy następujący układ równań
(4.78)
Równań (4.78) mamy
, natomiast liczba niewiadomych: wy-nosi
. Do tego układu należy dołączyć więc dwa dodatkowe równania. Dla okresowej funkcji sklejanej
(4.79)
równania te wynikają z warunków okresowości:
(4.80)
a dla nieokresowej funkcji sklejanej dołączamy dwa równania z następujących warunków brzegowych:
1) zadane pierwsze pochodne oraz
- na początku i końcu przedziału. Z równań (4.76) mamy:
(4.81)
2) zadane drugie pochodne:
(4.82)
3) ciągłość trzecich pochodnych w węzłach i oraz
(4.83)
4) uogólnienie warunków pierwszego i drugiego rodzaju:
(4.84)
w których przyjmuje się zwykle oraz
Przy wykorzystaniu oznaczeń (4.69) układ równań (4.78) można zapisać w postaci:
(4.85)
i następnie, po uwzględnieniu dodatkowych równań wynikających z warunków brzegowych (4.76) ÷ (4.84), otrzymujemy następujące równanie macierzowe:
(4.86)
W równaniu (4.86) przez
oznaczono prawe strony równań (4.85), a
są modyfikacjami współczynników , wynikającymi z uwz-ględnienia warunków brzegowych. Przykładowo, dla warunków (4.83) i dla brzegu wstawiając zależności: do równania
po przekształceniach uzyskujemy:
(4.87)
Podobnie można zapisać w postaci macierzowej równania okresowej funkcji sklejanej:
(4.88)
przy czym na mocy (4.80) jest:
*
W zastosowaniach praktycznych potrzebna jest jeszcze często zależność typu (4.78) wiążąca wartości pierwszych pochodnych funkcji sklejanej z zadanymi wartościami funkcji. Czasami jest też wygodniej używać równań z pierwszymi pochodnymi, zamiast z drugimi.
Wprowadzamy, analogicznie do (4.72), oznaczenie
(4.89)
Z równań (4.76) mamy:
(4.90)
Po rozwiązaniu układu równań (4.90) względem wielkości oraz i wsta-wieniu ich do (4.73) ÷ (4.75) otrzymamy:
(4.91)
(4.92)
Różniczkując (4.92) dostajemy
(4.93)
oraz
(4.94)
Spełnienie warunków ciągłości drugiej pochodnej wielomianowej funkcji sklejanej w punktach wymaga rozwiązania układu równań
(4.95)
który - po wykorzystaniu oznaczeń (4.69) - można zapisać następująco
(4.96)
Powyższe układy równań musimy, jak poprzednio, uzupełnić dwoma dodatkowymi równaniami. Dla okresowej funkcji sklejanej równania te wynikają z warunków okresowości.
Dla nieokresowej funkcji sklejanej stosujemy warunki (4.81) - (4.84) zapisane z użyciem pochodnych Kolejno mamy:
1) zadane pierwsze pochodne:
(4.97)
2) zadane drugie pochodne:
(4.98)
3) ciągłość trzecich pochodnych w węzłach
(4.99)
4) uogólnienie warunków (4.97) i (4.98):
(4.100)
Układ (4.96) można zapisać również w postaci macierzowej, analogicznej do (4.86) i (4.88).
*
Często w obliczeniach numerycznych stosujemy podział równomierny wtedy układy równań (4.78) i (4.95) przyjmują prostsze postacie:
(4.101)
(4.102)
W niektórych zastosowaniach praktycznych wygodniej jest też korzystać z rów-nań (4.74) ÷ (4.75) oraz (4.91) przedstawionych w innych, równoważnych postaciach np. przekształcone równania (4.74) - (4.75) można zapisać następująco:
(4.103)
gdzie:
*
W przypadku zarówno układu równań (4.88), jak i układów równań (4.86) i (4.96) przy prawidłowo dobranych warunkach dodatkowych (4.81) ÷ (4.84) lub (4.97) ÷ (4.100) macierze współczynników są macierzami silnie diagonalnie dominującymi, gdyż moduły elementów leżących na głównych przekątnych są większe od sumy modułów pozostałych elementów leżących w tym samym wierszu. Stąd wynika wniosek, że te układy równań mają jednoznaczne rozwiązanie, co oznacza tym samym, że istnieje dokładnie jedna interpolacyjna wielomianowa funkcja sklejana trzeciego stopnia
.
Proste wyrażenia zezwalające na ocenę błędu interpolacji otrzymamy przy założeniu podziału równomiernego. Szukamy rozwiązania układu (4.101) przyjmując, że wielkości mogą być przedstawione w postaci:
(4.104)
Po podstawieniu (4.104) do (4.101) i rozwinięciu obu stron równania w szeregi Taylora:
(4.105)
uzyskamy, po przyrównaniu współczynników przy pochodnych tego samego rzędu, następujące oszacowanie
(4.106)
W podobny sposób z (4.102) mamy
(4.107)
Wielomianowa funkcja sklejana trzeciego stopnia
może być w przedziale zapisana w postaci [20]
(4.108)
gdzie
Wykorzystując oszacowanie (4.106) i rozwinięcia: oraz i w szeregi Taylora względem punktu otrzymujemy
(4.109)
gdzie
Po zróżniczkowaniu (4.109) uzyskamy oszacowania błędów aproksymacji pochodnych:
(4.110)
*
Obecnie przedstawiamy program komputerowy przeznaczony do wyznaczania omówionych wielomianowych funkcji sklejanych trzeciego stopnia, działający podobnie jak programy 4.1 ÷ 4.4.
{Program 4.5}
unit Obliczenia;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Buttons, OleCtnrs, ExtCtrls;
type
Tabl1 = array[0..100] of Real;
Tabl2 = array[1..1000] of Real;
. . . . . . . . . . . . . . . . .
var
Form3: TForm3;
fun,i,j,K,n,m,utw0,utwn,X0,Y0,ZX,ZY: Integer;
a,b,bl,h,x,y,y1,y2: Real;
der1,der2,xw,yw: Tabl1;
xx,yy,Xekr,Yekr: Tabl2;
plik,plik1: Text;
implementation
uses Ustawienia, Informacje, Grafika, Podglad;
{$R *.DFM}
function f(x: Real): Real;
begin
if Form3.RadioButton3.Checked then
f:=100*x*x*Exp(-10*x);
if Form3.RadioButton4.Checked then
f:=1/(1+25*x*x);
if Form3.RadioButton5.Checked then
f:=16*x*x*(x-1)*(x-1);
end;
procedure Pochodne1(n: Integer; xw,yw: Tabl1; var der1: Tabl1);
var
i: Integer;
dy1,dy2,h1,h2,mi,la: Real;
begin
for i:=1 to n-1 do begin
h1:=xw[i]-xw[i-1]; h2:=xw[i+1]-xw[i];
dy1:=yw[i]-yw[i-1]; dy2:=yw[i+1]-yw[i];
mi:=h1/(h1+h2); la:=1-mi;
der1[i]:=la*dy1/h1+mi*dy2/h2;
if i=1 then der1[0]:=(1+mi)*dy1/h1-mi*dy2/h2;
if i=n-1 then der1[n]:=-la*dy1/h1+(1+la)*dy2/h2;
end;
end;
procedure FunSklej1(n: Integer; x: Real; var y: Real;
xw,yw,der1: Tabl1);
var
i,j: Integer;
A,B,dy,h,t: Real;
label omin;
begin
for j:=1 to n do begin
i:=j; A:=x-xw[i-1]; B:=xw[i]-x;
if (A>=0) and (B>=0) then goto omin;
end;
omin:
h:=xw[i]-xw[i-1];
t:=(x-xw[i-1])/h;
dy:=yw[i]-yw[i-1];
A:=-2*dy/h+(der1[i-1]+der1[i]);
B:=-A+dy/h-der1[i-1];
y:=yw[i-1]+(x-xw[i-1])*(der1[i-1]+t*(B+t*A));
end;
procedure Pochodne2(n: Integer; xw,yw: Tabl1; var der2: Tabl1;
utw0,utwn: Integer; al0,aln,der0,dern,la0,
min,d0,dn: Real);
var
i,n1: Integer;
a0,an,dx1,dx2,dy1,dy2,h,p: Real;
a,c,d,q,u: Tabl1;
begin
n1:=n-1;
for i:=1 to n1 do begin
dx1:=xw[i+1]-xw[i];
dx2:=xw[i]-xw[i-1];
dy1:=yw[i+1]-yw[i];
dy2:=yw[i]-yw[i-1];
p:=xw[i+1]-xw[i-1];
c[i]:=dx1/p; a[i]:=1-c[i];
d[i]:=6*(dy1/dx1-dy2/dx2)/p;
end;
if utw0=0 then begin
dx1:=(xw[1]-xw[0])/(xw[2]-xw[1]);
p:=1+a[1]*(1+dx1)/2;
c[1]:=(c[1]-a[1]*dx1)/p;
d[1]:=d[1]/p;
end;
if utwn=0 then begin
dx2:=(xw[n]-xw[n1])/(xw[n1]-xw[n-2]);
p:=1+c[n1]*(1+dx2)/2;
a[n1]:=(a[n1]-c[n1]*dx2)/p;
d[n1]:=d[n1]/p;
end;
if utw0=1 then begin
a0:=al0*Pi/180;
a0:=Sin(a0)/Cos(a0);
h:=1/(xw[1]-xw[0]);
p:=1/(1-0.25*a[1]);
dx1:=3*h*((yw[1]-yw[0])*h-a0);
c[1]:=c[1]*p;
d[1]:=(d[1]-a[1]*dx1)*p;
end;
if utwn=1 then begin
an:=aln*Pi/180;
an:=Sin(an)/Cos(an);
h:=1/(xw[n]-xw[n1]);
p:=1/(1-0.25*c[n1]);
dx2:=3*h*(an-(yw[n]-yw[n1])*h);
a[n1]:=a[n1]*p;
d[n1]:=(d[n1]-c[n1]*dx2)*p;
end;
if utw0=2 then d[1]:=d[1]-a[1]*der0;
if utwn=2 then d[n1]:=d[n1]-c[n1]*dern;
if utw0=3 then begin
p:=1/(1-0.25*a[1]*la0);
dy1:=a[1]*d0/2; c[1]:=c[1]*p;
d[1]:=(d[1]-dy1)*p;
end;
if utwn=3 then begin
p:=1/(1-0.25*c[n1]*min);
dy2:=c[n1]*dn/2; a[n1]:=a[n1]*p;
d[n1]:=(d[n1]-dy2)*p;
end;
q[1]:=-0.5*c[1]; u[1]:= 0.5*d[1];
for i:=2 to n1 do begin
p:=1/(2+a[i]*q[i-1]);
q[i]:=-c[i]*p;
u[i]:=(d[i]-a[i]*u[i-1])*p;
end;
der2[n1]:=u[n1];
for i:=n1-1 downto 1 do
der2[i]:=der2[i+1]*q[i]+u[i];
if utw0=0 then der2[0]:=(1+dx1)*der2[1]-dx1*der2[2];
if utwn=0 then der2[n]:=(1+dx2)*der2[n1]-dx2*der2[n-2];
if utw0=1 then der2[0]:=dx1-0.5*der2[1];
if utwn=1 then der2[n]:=dx2-0.5*der2[n1];
if utw0=2 then der2[0]:=der0;
if utwn=2 then der2[n]:=dern;
if utw0=3 then der2[0]:=d0/2-la0*der2[1]/2;
if utwn=3 then der2[n]:=dn/2-min*der2[n1]/2;
end;
Procedure FunSklej2(n:Integer; x:Real; var y,y1,y2: Real;
xw,yw,der2: Tabl1);
var
i,j: Integer;
A,B,h,h1,h2: Real;
label omin;
begin
for j:=1 to n do begin
i:=j; h1:=x-xw[i-1]; h2:=xw[i]-x;
if (h1>=0) and (h2>=0) then goto omin;
end;
omin:
h:=xw[i]-xw[i-1];
y2:=(der2[i]*h1+der2[i-1]*h2)/h;
A:=(yw[i]-yw[i-1])/h-h*(der2[i]-der2[i-1])/6;
B:=yw[i-1]-h*h*der2[i-1]/6;
y1:=0.5*(der2[i]*h1*h1-der2[i-1]*h2*h2)/h+A;
y:=(der2[i]*h1*h1*h1+der2[i-1]*h2*h2*h2)/h/6+A*h1+B;
end;
. . . . . . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn1Click(Sender: TObject);
begin
Form2.Show;
AssignFile(plik,Edit6.Text);
AssignFile(plik1,Edit5.Text);
Rewrite(plik); Rewrite(plik1);
if RadioButton1.Checked then fun:=1;
if RadioButton2.Checked then fun:=2;
a:=StrtoFloat(Edit1.Text); b:=StrtoFloat(Edit2.Text);
n:=StrtoInt(Edit3.Text); m:=StrtoInt(Edit4.Text);
Writeln(plik,'PROGRAM 4.5.');
Writeln(plik,'Interpolacja funkcji jednej zmiennej.');
case fun of
1: Writeln(plik,'Funkcja sklejana Hermite''a
trzeciego stopnia.');
2: Writeln(plik,'Funkcja sklejana trzeciego stopnia.');
end;
Writeln(plik,'');
Writeln(plik,'Początek przedziału: a = ',a:13);
Writeln(plik,'Koniec przedziału: b = ',b:13);
Writeln(plik,'Liczba węzłów: n = ',n:3);
Writeln(plik,'Liczba punktów wykresu: m = ',m:3);
Writeln(plik1,n:3); Writeln(plik1,m:3);
Writeln(plik);
h:=(b-a)/n;
for i:=0 to n do begin
x:=a+i*h; y:=f(x);
xw[i]:=x; yw[i]:=y;
xx[i+1]:=x; yy[i+1]:=y;
end;
xx[n+2]:=0; yy[n+2]:=0; K:=n+2;
Writeln(plik,'Wyniki interpolacji funkcji:');
Writeln(plik,' i x[i] y[i]
błąd');
case fun of
1: Pochodne1(n,xw,yw,der1);
2: Pochodne2(n,xw,yw,der2,0,0,0,0,0,0,0,0,0,0);
end;
h:=(b-a)/m;
for i:=0 to m do begin
x:=a+i*h;
case fun of
1: FunSklej1(n,x,y,xw,yw,der1);
2: FunSklej2(n,x,y,y1,y2,xw,yw,der2);
end;
bl:=f(x)-y;
Writeln(plik,i:3,' ',x:13,' ',y:16,' ',bl:13);
K:=K+1; xx[K]:=x; yy[K]:=y;
end;
for i:=1 to m+n+3 do
Writeln(plik1,xx[i]:13,' ',yy[i]:13);
CloseFile(plik); CloseFile(plik1);
Form2.Wyniki.Lines.LoadFromFile(Edit6.Text);
end;
. . . . . . . . . . . . . . . . . . . . . . .
procedure TForm3.BitBtn3Click(Sender: TObject);
begin
Close;
end;
end.
W programie 4.5 wykorzystywane są cztery następujące procedury:
- Pochodne1(n,xw,yw,der1), przeznaczona do obliczania pochodnych (4.68),
- FunSklej1(n,x,y,xw,yw,der1), której zadaniem jest obliczanie wartości wielomianowej funkcji sklejanej (4.70),
- Pochodne2(n,xw,yw,der2,utw0,utwn,al0,aln,der0,dern,la0,min, d0,dn), w której rozwiązywany jest układ równań (4.86) przy wykorzystaniu algorytmu (2.78) - (2.79),
- FunSklej2(n,x,y,y1,y2,xw,yw,der2), obliczająca wartości wielomianowej funkcji sklejanej
oraz jej pochodnych ze wzorów (4.71) ÷ (4.75).
Znaczenie parametrów formalnych wszystkich procedur jest następujące:
n - liczba węzłów,
xw,yw[0..n] - tablice zawierające odcięte i rzędne punktów wyznaczających interpolowaną funkcję,
der1[0..n] - tablica zawierająca obliczane wartości pochodnych (4.68),
x,y - zmienne zawierające wartości zadanej odciętej
i obliczanych wartości funkcji sklejanych (4.70) lub (4.74) ÷ (4.75),
der2[0..n] - tablica zawierająca wartości drugich pochodnych (4.72) funkcji sklejanej
,
utw0,utwn - zmienne typu całkowitego określające rodzaj warunków brzegowych; dla zadanych wartości tych zmiennych wynoszących 0, 1, 2 lub 3 korzysta się, odpowiednio, z warunków (4.83), (4.81), (4.82) lub (4.84),
al0,aln - zadane kąty nachylenia stycznych (w stopniach dla x = a oraz x = b, jeśli korzystamy z warunków brzegowych (4.81),
der0,dern - zadane drugie pochodne dla x = a oraz x = b, jeśli korzystamy z warunków (4.82),
la0,min,d0,dn - zmienne te mają identyczne znaczenie ze znaczeniem parametrów występujących w warunkach (4.84),
y1,y2 - obliczane wartości pierwszej i drugiej pochodnej funkcji
.
Rys. 4.18
Rys. 4.19
W zależności od wyboru alternatywy obliczeń zbiór zadanych punktów
interpolowany jest albo za pomocą funkcji sklejanej
albo też za pomocą funkcji sklejanej
(rys. 4.18).
Wyniki obliczeń dotyczące interpolowania funkcji (4.32) zawierają załączone tabulogramy komputerowe oraz są przedstawione na rysunku 4.19.
PROGRAM 4.5.
Interpolacja funkcji jednej zmiennej.
Funkcja sklejana Hermite'a trzeciego stopnia.
Początek przedziału: a = -1.0000E+0000
Koniec przedziału: b = 1.0000E+0000
Liczba węzłów: n = 20
Liczba punktów wykresu: m = 100
Wyniki interpolacji funkcji:
i x[i] y[i] błąd
0 -1.0000E+0000 3.8461538E-0002 0.0000E+0000
1 -9.8000E-0001 3.9927602E-0002 5.6405E-0005
2 -9.6000E-0001 4.1520362E-0002 7.6976E-0005
3 -9.4000E-0001 4.3239819E-0002 6.8973E-0005
4 -9.2000E-0001 4.5085973E-0002 4.0381E-0005
5 -9.0000E-0001 4.7058824E-0002 0.0000E+0000
6 -8.8000E-0001 4.9130914E-0002 -1.5000E-0005
7 -8.6000E-0001 5.1302245E-0002 6.1179E-0006
8 -8.4000E-0001 5.3614002E-0002 3.4067E-0005
9 -8.2000E-0001 5.6107368E-0002 4.0863E-0005
10 -8.0000E-0001 5.8823529E-0002 0.0000E+0000
11 -7.8000E-0001 6.1714539E-0002 -2.4225E-0005
12 -7.6000E-0001 6.4752941E-0002 1.3898E-0005
13 -7.4000E-0001 6.8010655E-0002 6.2865E-0005
14 -7.2000E-0001 7.1559600E-0002 7.3637E-0005
15 -7.0000E-0001 7.5471698E-0002 0.0000E+0000
16 -6.8000E-0001 7.9658586E-0002 -4.0752E-0005
17 -6.6000E-0001 8.4072318E-0002 3.1971E-0005
18 -6.4000E-0001 8.8845436E-0002 1.2254E-0004
19 -6.2000E-0001 9.4110483E-0002 1.4022E-0004
20 -6.0000E-0001 1.0000000E-0001 0.0000E+0000
21 -5.8000E-0001 1.0634222E-0001 -7.2300E-0005
22 -5.6000E-0001 1.1304879E-0001 7.3376E-0005
23 -5.4000E-0001 1.2037735E-0001 2.4990E-0004
24 -5.2000E-0001 1.2858556E-0001 2.8042E-0004
25 -5.0000E-0001 1.3793103E-0001 0.0000E+0000
26 -4.8000E-0001 1.4807003E-0001 -1.4103E-0004
27 -4.6000E-0001 1.5883077E-0001 1.5174E-0004
28 -4.4000E-0001 1.7072891E-0001 5.0396E-0004
29 -4.2000E-0001 1.8428011E-0001 5.6278E-0004
30 -4.0000E-0001 2.0000000E-0001 0.0000E+0000
31 -3.8000E-0001 2.1726472E-0001 -3.4498E-0004
32 -3.6000E-0001 2.3573050E-0001 1.1855E-0004
33 -3.4000E-0001 2.5633316E-0001 7.3625E-0004
34 -3.2000E-0001 2.8000849E-0001 8.9039E-0004
35 -3.0000E-0001 3.0769231E-0001 0.0000E+0000
36 -2.8000E-0001 3.3901538E-0001 -1.1775E-0003
37 -2.6000E-0001 3.7335385E-0001 -1.6066E-0003
38 -2.4000E-0001 4.1126154E-0001 -1.4254E-0003
39 -2.2000E-0001 4.5329231E-0001 -8.0362E-0004
40 -2.0000E-0001 5.0000000E-0001 -9.0949E-0013
41 -1.8000E-0001 5.5470769E-0001 -2.2215E-0003
42 -1.6000E-0001 6.1704615E-0001 -7.2901E-0003
43 -1.4000E-0001 6.8203077E-0001 -1.0889E-0002
44 -1.2000E-0001 7.4467692E-0001 -9.3828E-0003
45 -1.0000E-0001 8.0000000E-0001 -9.0949E-0013
46 -8.0000E-0002 8.5280000E-0001 9.2690E-0003
47 -6.0000E-0002 9.0640000E-0001 1.1031E-0002
48 -4.0000E-0002 9.5360000E-0001 7.9385E-0003
49 -2.0000E-0002 9.8720000E-0001 2.8990E-0003
50 5.1159E-0013 1.0000000E+0000 0.0000E+0000
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
PROGRAM 4.5.
Interpolacja funkcji jednej zmiennej.
Funkcja sklejana trzeciego stopnia.
Początek przedziału: a = -1.0000E+0000
Koniec przedziału: b = 1.0000E+0000
Liczba węzłów: n = 20
Liczba punktów wykresu: m = 100
Wyniki interpolacji funkcji:
i x[i] y[i] błąd
0 -1.0000E+0000 3.8461538E-0002 0.0000E+0000
1 -9.8000E-0001 3.9999382E-0002 -1.5375E-0005
2 -9.6000E-0001 4.1616069E-0002 -1.8731E-0005
3 -9.4000E-0001 4.3323562E-0002 -1.4770E-0005
4 -9.2000E-0001 4.5133826E-0002 -7.4724E-0006
5 -9.0000E-0001 4.7058824E-0002 0.0000E+0000
6 -8.8000E-0001 4.9110518E-0002 5.3958E-0006
7 -8.6000E-0001 5.1300872E-0002 7.4912E-0006
8 -8.4000E-0001 5.3641850E-0002 6.2188E-0006
9 -8.2000E-0001 5.6145415E-0002 2.8167E-0006
10 -8.0000E-0001 5.8823529E-0002 5.6843E-0014
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
35 -3.0000E-0001 3.0769231E-0001 0.0000E+0000
36 -2.8000E-0001 3.3752249E-0001 3.1535E-0004
37 -2.6000E-0001 3.7106670E-0001 6.8051E-0004
38 -2.4000E-0001 4.0892659E-0001 9.0948E-0004
39 -2.2000E-0001 4.5170380E-0001 7.8489E-0004
40 -2.0000E-0001 5.0000000E-0001 -9.0949E-0013
41 -1.8000E-0001 5.5405424E-0001 -1.5680E-0003
42 -1.6000E-0001 6.1265524E-0001 -2.8991E-0003
43 -1.4000E-0001 6.7422912E-0001 -3.0882E-0003
44 -1.2000E-0001 7.3720200E-0001 -1.9079E-0003
45 -1.0000E-0001 8.0000000E-0001 -9.0949E-0013
46 -8.0000E-0002 8.6059900E-0001 1.4699E-0003
47 -6.0000E-0002 9.1517388E-0001 2.2573E-0003
48 -4.0000E-0002 9.5944925E-0001 2.0892E-0003
49 -2.0000E-0002 9.8914975E-0001 9.4926E-0004
50 5.1159E-0013 1.0000000E+0000 9.0949E-0013
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
218 4. Interpolacja
4.8. Wielomianowe funkcje sklejane trzeciego stopnia 217