4 h (4)


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:

0x01 graphic
(4.68)

0x01 graphic
(4.68cd.)

gdzie:

0x01 graphic
(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

0x01 graphic

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

0x01 graphic
(4.70)

gdzie:

0x01 graphic

*

Wyprowadzenie równań wielomianowej funkcji sklejanej trzeciego stopnia, która należy do 0x01 graphic
(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:

0x01 graphic
(4.73)

0x01 graphic
(4.74)

gdzie i 0x01 graphic
są stałymi. Stałe całkowania wyznaczamy z warunków interpolacji

0x01 graphic
(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:

0x01 graphic
(4.76)

Ciągłość 0x01 graphic
i wynika z równań (4.71) oraz z równań (4.74) ÷ (4.75). Żądając natomiast ciągłości 0x01 graphic
w punktach 0x01 graphic

(4.77)

otrzymamy następujący układ równań

0x01 graphic
(4.78)

Równań (4.78) mamy 0x01 graphic
, natomiast liczba niewiadomych: wy-nosi 0x01 graphic
. 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 0x01 graphic
- 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

0x01 graphic
(4.83)

4) uogólnienie warunków pierwszego i drugiego rodzaju:

0x01 graphic
(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 0x01 graphic
oznaczono prawe strony równań (4.85), a 0x01 graphic
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:

0x01 graphic
(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:

0x01 graphic
(4.91)

0x01 graphic

0x01 graphic
(4.92)

Różniczkując (4.92) dostajemy

0x01 graphic

0x01 graphic
(4.93)

oraz

0x01 graphic
(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

0x01 graphic
(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

0x01 graphic
(4.99)

4) uogólnienie warunków (4.97) i (4.98):

0x01 graphic
(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:

0x01 graphic

0x01 graphic
(4.103)

gdzie:

0x01 graphic
0x01 graphic

*

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 0x01 graphic
.

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:

0x01 graphic
(4.104)

Po podstawieniu (4.104) do (4.101) i rozwinięciu obu stron równania w szeregi Taylora:

0x01 graphic
(4.105)

uzyskamy, po przyrównaniu współczynników przy pochodnych tego samego rzędu, następujące oszacowanie

0x01 graphic
(4.106)

W podobny sposób z (4.102) mamy

0x01 graphic
(4.107)

Wielomianowa funkcja sklejana trzeciego stopnia 0x01 graphic
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

0x01 graphic
(4.109)

gdzie

0x01 graphic

Po zróżniczkowaniu (4.109) uzyskamy oszacowania błędów aproksymacji pochodnych:

0x01 graphic
(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 0x01 graphic
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 0x01 graphic
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 0x01 graphic
,

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 0x01 graphic
.

0x01 graphic

Rys. 4.18

0x01 graphic

Rys. 4.19

W zależności od wyboru alternatywy obliczeń zbiór zadanych punktów 0x01 graphic
interpolowany jest albo za pomocą funkcji sklejanej 0x01 graphic
albo też za pomocą funkcji sklejanej 0x01 graphic
(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



Wyszukiwarka