Professional Documents
Culture Documents
Program przeznaczony jest do obliczania wartoci oraz wspczynnikw naturalnej funkcji sklejanej
stopnia trzeciego.
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.
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.
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 .
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
(+1 ) ( ) 2 + +1
= +1
+1 6
c =
2
+1
d =
6+1
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.
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.