You are on page 1of 8

Karol cipniak 109745 I2.

Natural Spline App

Program przeznaczony jest do obliczania wartoci oraz wspczynnikw naturalnej funkcji sklejanej
stopnia trzeciego.

A. Wstpne zagadnienia teoretyczne:


1. Definicja funkcji sklejanej stopnia m:
Funkcj sklejan stopnia m nazywamy funkcj rzeczywist z wzami = 0 < 1 < < =
, gdy w kadym przedziale (1 , ) dla = 0,1, , + 1 (1 = , +1 = ) funkcja ta
jest wielomianem stopnia nie wyszego ni oraz gdy jest ona ciga wraz z pochodnymi do
rzdu 1 na caej osi rzeczywistej.

2. Interpolacja funkcjami sklejanymi:


Zadanie interpolacji funkcjami sklejanymi polega na wyznaczeniu funkcji , ktra dla danych
wartoci oraz ( ) speniaj warunki:
( ) = ( ), = 0,1, ,

B. rodowisko wykonawcze i uruchomieniowe:


Projekt realizowany by w jzyku Delphi w rodowisku Embacadero Delphi XE5. Obecna wersja
programu przeznaczona jest do uruchomienia na komputerach osobistych z systemem Windows
w wersji 32-bitowej lub 64-bitowej (w trybie zgodnoci). Aplikacja wykorzystuje zmodyfikowan
bibliotek IntervalArithmetic udostpnion w oryginalnej wersji na stronie profesora Andrzeja
Marciniaka.

C. Opis projektu i jego realizacji:


Program Natural Spline App oblicza zadane wartoci oraz wspczynniki zadanej funkcji sklejanej
stopnia trzeciego. Aplikacja umoliwia operowanie zarwno na arytmetyce zmiennopozycyjnej,
jak i przedziaowej. W drugiej wersji przedziay mog by tworzone automatycznie z liczby
zmiennoprzecinkowej, jak i podawane przez uytkownika.

Program wyposaony zosta rwnie w modu rysujcy wyliczone funkcje sklejane stopnia
trzeciego, dziki czemu wyniki podawane s w zdecydowanie przystpniejszej formie. Modu
rysujcy umoliwia rwnie wizualizacj rozrzutu wartoci zalene od szerokoci przedziaw
poszczeglnych wartoci w arytmetyce przedziaowej.
Aby usprawni tworzenie aplikacji, oraz uczyni kod bardziej przejrzystym, dokonano modyfikacji
biblioteki IntervalArithmetic posiada ona teraz dodatkowe funkcje uatwiajce tworzenie
zadanych przedziaw (statyczne quasi konstruktory) oraz funkcje matematyczne oparte na
przedziaach (warto absolutna, wasnoci trygonometryczne). Przede wszystkim jednak dodano
przecione operatory dla udostpnianego przez bibliotek typu interval. Teraz mona
wykonywa na nich podstawowe operacje takie, jak dodawanie, odejmowanie, mnoenie,
dzielenie oraz porwnywanie w taki sam sposb jak na wszystkich innych typach liczbowych
udostpnianych przez jzyk Delphi.

Rysunek 1: Deklaracja przecionych operatorw dla typu interval


D. Techniczny sposb realizacji funkcji naturalSplineValue() oraz naturalSplineCoeffs():
Dziki zastosowaniu przecionych operatorw dla typu interval, obie omawiane niej funkcje
maj identyczny kod rni s jedynie typem przyjmowanych argumentw extended lub
interval w zalenoci od arytmetyki na ktrej wykonuj operacje.

Z programistycznego punktu widzenia obie funkcj s do siebie bardzo podobne okoo kodu
jest identyczne w obu przypadkach zmienia si jedynie kocwka wyliczanie kocowych
danych na podstawie wynikw dostarczonych przez gwny algorytm. Pomimo tej wasnoci, aby
zachowa wiksz elastyczno uytkowania, zdecydowano si nie czy funkcji w jedn i
pozostawiono je zgodnie z zaoeniami funkcja naturalSplineValue[Normal/Interval]() oblicza
warto funkcji sklejanej w zadanym punkcie, a naturalSplineCoeffs[Normal/Interval]()
wspczynniki funkcji szeciennych w danych przedziaach.

1. NaturalSplineValue():
a) Zastosowanie:
Funkcja naturalSplineValue oblicza warto interpolujcej, naturalnej funkcji sklejanej
stopnia trzeciego w zadanym punkcie.

b) Definicja naturalnej funkcji sklejanej:


Funkcj sklejan stopnia 2 1 z wzami = 0 < 1 < < = , nazywamy
naturaln funkcj sklejan, gdy w przedziaach (, 0 ) i ( , +) dana jest
wielomianami stopnia 1 (a nie 2 1).

c) Opis metody:
Funkcj sklejan stopnia trzeciego mona w kadym z przedziaw [ , +1 ) przedstawi
w postaci
() = + + 2 + 3,
gdzie = dla [ , +1 ) dla = 0,1, , 1.
W celu okrelenia wspczynnikw , , oraz dla = 0,1, , 1, naley
najpierw rozwiza ukad rwna liniowych.
1 + 2 + +1 = dla = 0,1, , 1
Gdzie 0 = n = 0 oraz
+1
=
+1 +

= 1

6 (+1 ) ( ) ( ) (1 )
= ( )
+1 + +1
Przy czym +1 = +1 , a nastpnie wyznaczy wspczynniki na podstawie
nastpujcych wzorw:
= f(x )

(+1 ) ( ) 2 + +1
= +1
+1 6


c =
2

+1
d =
6+1
Ukad rwna liniowych rozwizuje si metod Crouta, a nastpnie okrela przedzia
[ , +1 ) zawierajcy dany punkt i dla tego przedziau wyznacza si wspczynniki
, , oraz . Nastpnie z podanego wyej wzoru na warto funkcji szeciennej
oblicza si warto funkcji sklejanej.

d) Wywoanie funkcji:
[/](, , , , )

e) Dane:
liczba wzw interpolacji minus 1 (wzy s ponumerowane od 0 do ),
wektor zawierajcy wartoci wzw,
wektor zawierajcy wartoci interpolowanej funkcji w wzach,
punkt, w ktrym naley obliczy warto naturalnej funkcji sklejanej
stopnia trzeciego.

f) Wynik:
Warto naturalnej funkcji sklejanej stopnia trzeciego w punkcie .

g) Inne parametry:
zmienna, ktrej w wyniku wykonania funkcji zostanie przypisana jedna z
nastpujcych wartoci:
1, jeeli < 1,
2, gdy istniej rwne wartoci [] i [] dla ktrych jest rne od
3, jeli dana < [0] lub > []
0, w przeciwnym przypadku
h) Typy parametrw:
Integer : ,
Extended/Interval :
TList<Extended>/TList<Interval> : ,

i) Indentyfikatory nielokalne:
Extended/Interval array [0...3] : tablica, do ktrej w kocowej fazie
algorytmu zapisywane s wspczynniki funkcji szeciennej dla przedziau, w
ktrym znajduje si .
TList<Extended>/TList<Interval> : , , - trzy wektory do ktrych zapisywane s
wspczynniki , , oraz (druga faza algorytmu)
Integer : , zmienne iteracyjne
Boolean : zmienna wykorzystywana przy znajdowaniu odpowiedniego
przedziau, gdzie znajduje si warto .
Extended/Interval : , , , kolejno zmienna pomocnicza, zmienne
trzymajce wielkoci przedziaw , +1 oraz zmienna rwnania
szeciennego, ktre jest kocowym stadium wyznaczaniem szukanej wartoci.

2. NaturalSplineCoeffs():
a) Zastosowanie:
Funkcja naturalSplineCoeffs oblicza wspczynniki przy kolejnych potgach funkcji
sklejanej trzeciego stopnia tj.
() = 0, + 1, + 2, 2 + 3, 3, = 0,1, , 1
Interpolujcej funkcj , dla ktrej znane s wartoci ( ) w wzach .

b) Definicja naturalnej funkcji sklejanej:


Funkcj sklejan stopnia 2 1 z wzami = 0 < 1 < < = , nazywamy
naturaln funkcj sklejan, gdy w przedziaach (, 0 ) i ( , +) dana jest
wielomianami stopnia 1 (a nie 2 1).

c) Opis metody:
Wspczynniki obliczane przez funkcj 0 , 1, , 2, , 3, s zwizane ze wspczynnikami
, , oraz funkcji sklejanej zapisanej w postaci:
() = + + 2 + 3,
gdzie = dla [ , +1 ) dla = 0,1, , 1.
W celu okrelenia wspczynnikw , , oraz dla = 0,1, , 1, naley
najpierw rozwiza ukad rwna liniowych.
1 + 2 + +1 = dla = 0,1, , 1
Gdzie 0 = n = 0 oraz
+1
=
+1 +

= 1

6 (+1 ) ( ) ( ) (1 )
= ( )
+1 + +1

Przy czym +1 = +1 , a nastpnie wyznaczy wspczynniki na podstawie


nastpujcych wzorw:
= f(x )

(+1 ) ( ) 2 + +1
= +1
+1 6


c =
2

+1
d =
6+1

Wspczynniki 0 , 1, , 2, , 3, s powizane ze wspczynnikami , , oraz w


nastpujcy sposb:
0, = + 2 3
1, = 2 + 3 2
2, = 2 3
3, =

d) Wywoanie funkcji:
[/](, , , , )

e) Dane:
liczba wzw interpolacji minus 1 (wzy s ponumerowane od 0 do ),
wektor zawierajcy wartoci wzw,
wektor zawierajcy wartoci interpolowanej funkcji w wzach,

f) Wynik:
a wektor wektorw (macierz) wspczynnikw funkcji sklejanej (element [, ]
zawiera warto wspczynnika przy = 0,1,2,3 dla przedziau [ , +1 ) =
0,1, , 1
g) Inne parametry:
zmienna, ktrej w wyniku wykonania funkcji zostanie przypisana jedna z
nastpujcych wartoci:
1, jeeli < 1,
2, gdy istniej rwne wartoci [] i [] dla ktrych jest rne od
0, w przeciwnym przypadku

h) Typy parametrw:
Integer : ,
TList<TList<Extended>>/TList<TList<Interval>> : zmienna referencyjna
TList<Extended>/TList<Interval> : ,

i) Indentyfikatory nielokalne:
Extended/Interval array [0...3] : tablica, do ktrej w kocowej fazie
algorytmu zapisywane s wspczynniki funkcji szeciennej dla przedziau, w
ktrym znajduje si .
TList<Extended>/TList<Interval> : , , - trzy wektory do ktrych zapisywane s
wspczynniki , , oraz (druga faza algorytmu)
Integer : , zmienne iteracyjne
Extended/Interval : , 2, 3, , , kolejno trzy zmienne
pomocnicze, zmienne trzymajce wielkoci przedziaw , +1 oraz zmienna
podstawiana do rwnania szeciennego.

c.d. uycie aplikacji - >


E. Korzystanie z programu:
Uywanie aplikacji jest intuicyjne. Na pocztku wybieramy jeden z trzech trybw pracy normal
mode (arytmetyka zmiennopozycyjna), automatic interval (przedziay tworzone automatycznie)
oraz custom interval (przedziay deklarowane przez uytkownika).

Nastpnie podajemy wsprzdne oraz wartoci kolejnych punktw (wzw) dodajc je do listy
(Add new node) punkty moemy w kadym momencie usuwa (przycisk Remove selected
node). Moliwe jest te wyczyszczenie wszystkich wprowadzonych dotd danych (Clear all).
Aplikacja wywietla zawsze aktualn liczb wzw oraz ich pozycj w ukadzie wsprzdnych
(czerwone kwadraciki). Po zdefiniowaniu wzw, naley poda jeszcze wsprzdne punktu, dla
ktrego wyliczy chcemy warto naturalnej funkcji sklejanej stopnia trzeciego. Kiedy wszystkie
dane s ju wprowadzone, wciskajc przycisk Calculate results GO! uruchamiamy gwne
procedury programu. W lewej dolnej czci okna pojawi si wyliczone wielkoci wspczynnikw
funkcji szeciennych w kadym z przedziaw oraz warto dla podanego przez nas punktu. Z
prawej strony narysowany zostaje wykres funkcji (niebieska linia) oraz szukana warto (zielony
kwadracik). Ca procedur mona powtarza dowoln ilo razy.

Rysunek 2: Program w uyciu - wyliczone wartoci dla podanych punktw wraz z wizualizacj wynikw.

You might also like