Sprawozdanie z ćwiczenia laboratoryjnego
z Metod Numerycznych.
Wyznaczanie wartości funkcji
Sekcja:
•
Piotr Nowak
•
Mateusz Malinowski
Termin wykonania ćwiczenia:
23.02.2009r.
Sprawozdanie będzie zawierać komentarze do kolejnych zadań podanych w
komentarzach
do
sprawozdania
z
ćwiczenia
2
(http://platforma.polsl.pl/rau1/course/view.php?id=55).
1. W celu przeanalizowania czasu wyznaczania wartości wielomianu w zadanym punkcie na podstawie klasycznej forumły i schematu Hornera, przetestowaliśmy nasz program (listing nr 1) trzema różnymi wielomianami:
•
W
=4
8 x =3⋅ x 8−7⋅ x 7 44⋅ x 6 0⋅ x 5 0⋅ x 4−73⋅ x 37⋅ x 20⋅ x0
dla pkt. x 0
t =0,002051 ms
k
t =0,000078 ms
h
•
W x = x 2−8⋅ x31
=4
2
dla pkt. x 0
t =0,000679 ms
k
t =0,000024 ms
h
•
W x =2
=4
0
dla pkt. x 0
t =0,000210 ms
k
t =0,000008 ms
h
Wnioski:
•
program wyznacza wartość wilomianu w zadanym punkcie według schematu hornera ok. 26-28 razy szybciej. Jest to niesamowita różnica, która dla przeciętnego człowieka nic nie znaczy, a od której w automatyce mogą zależeć losy eksperymentu.
- 1 -
Dla podanych wieomianów czas dowolnej operacji wzrasta/maleje 3-ktrotnie.
Zastanawiające jest, że nawet dla wielomianu stopnia zerowego wyznaczanie wartości funkcji w zadanym punkcie trwa dłużej metodą klasyczną niż schematem Hornera dla wielomianu stopnia ósmego. Niewątpliwie jest to zasługa funkcji potęgującej pow();
2. Aby dokładnie przeanalizować wpływ stopnia i pierwiastków wielomianu na przedział zawierający wszystkie pierwiastki rzeczywiste wielomianu, postanowiliśmy postępować zgodznie z podpunktami komentarzy umieszczonych na platformie. Naturalnie napisany przez nas program zbombardowaliśmy wieloma przykładami (listing nr 2).
a) Analiza w zależności od kroku Δx, z którym są przeprowadzane obliczenia
•
W x = x−5⋅ x5⋅ x−1⋅ x1⋅ x −2⋅ x2= x 6−30⋅ x 4129⋅ x 2−100
6
Δx=0,1⇒ −5,5 ; 5,5
Δ = Δ =0,5
1
2
Δx=0,01 ⇒−5,48 ; 5,48
Δ = Δ =0,48
1
2
Δx=0,001 ⇒−5,4778 ; 5,4778
Δ = Δ =0,4778
1
2
Δx=0,0001 ⇒−5,4773 ; 5,4773
Δ = Δ =0,4773
1
2
•
W x = x⋅ x−1⋅ x2⋅ x5⋅ x−3= x 53⋅ x 4−16⋅ x 3−19⋅ x 230⋅ x 5
Δx=0,1 ⇒−5,8 ; 3,4
Δ =0,8
Δ =0,4
1
2
Δx=0,01 ⇒−5,78 ; 3,39
Δ =0,78
Δ =0,39
1
2
Δx=0,001 ⇒−5,7728 ; 3,3859
Δ =0,7728
Δ =0,3859
1
2
Δx=0,0001 ⇒−5,7721 ; 3,3850
Δ =0,7721
Δ =0,3850
1
2
•
W 6 x = x⋅ x−1⋅ x4⋅ x−2⋅ x3⋅ x1= x 65⋅ x 5−3⋅ x 4−29⋅ x 32⋅ x 224⋅ x Δx=0,1 ⇒−5,6 ; 2,3
Δ =1,6
Δ =0,3
1
2
Δx=0,01 ⇒−5,55 ; 2,23
Δ =1,55
Δ =0,23
1
2
Δx=0,001 ⇒−5,5418 ; 2,223
Δ =1,5418
Δ =0,223
1
2
Δx=0,0001 ⇒−5,5415 ; 2,2223
Δ =1,5415
Δ =0,2223
1
2
Wnioski:
•
Dla wielomianów parzystych granice przedziału mają tą samą wartość co do modułu.
•
Błędy Δ i Δ
1
2
są mniejsze od jedności, gdy ilość pierwiastków jest równa po obu stronach zera, natomiast wzrasta wraz ze wzrostem liczby pierwiastków po danej stronie (w przypadku trzeciego wielomianu mam trzy pierwiastki ujemne przy dwóch dodatnich, zatem błąd granice lewostronnej przedziału jest jużwiększy od jedności) b) Analiza rozkładu pierwiastków wielomianu na osi rzeczywistej dla Δx=0,01
I. pierwiastki symetryczne względem zera
•
W 4 x= x−1⋅ x1⋅ x−2⋅ x2= x 4−5⋅ x 24
przedział: −2,24 ; 2,24
- 2 -
W 4 x= x−1⋅ x1⋅ x−5⋅ x5= x 4−26⋅ x 225
przedział: −5,1 ; 5,1
•
W 6 x = x−1⋅ x1⋅ x−2⋅ x2⋅ x −5⋅ x5= x 6−30⋅ x 4129⋅ x 2−100
przedział: −5,48 ; 5,48
1
1
21
21
•
W x = x−1⋅ x1⋅ x−2⋅ x2⋅ x − ⋅ x = x 6−
⋅ x 4
⋅ x 2−1
6
2
2
4
4
przedział: −2,3 ; 2,3
Wniosek:
Wartości granic przedziałów po zaokrągleniu do jedności są równe skrajnym pierwiastkom wielomianu. W rzeczywistości przediał jest szerszy, a jego szerokość zależy od stopnia wielomianu. Po dwóch pierwszych próbach doszliśmy do wniosku, iż granica będzie w bliskim otoczeniu skrajnych wartości, jednakże zwiększenie stopnia wielomianu zweryfikowało ten pogląd. Im wyższy jest stopień, tym szersza jest granica przedziału.
II. pierwiastki asymetryczne względem zera
•
W x = x1⋅ x3⋅ x−1⋅ x−2⋅ x−5⋅ x−6
6
=
= x 6−10⋅ x 512⋅ x 4106⋅ x 3−193⋅ x 2−96⋅ x 180
przedział: −3,15 ; 10
•
W x = x−1⋅ x−3⋅ x1⋅ x2⋅ x5⋅ x6
6
=
= x 610⋅ x 512⋅ x 4−106⋅ x 3−193⋅ x 296⋅ x 180
przedział: −10 ; 3,15
•
W x =2⋅ x 2⋅ x3⋅ x−1⋅ x−2⋅ x −5⋅ x−6
6
=
= 2⋅ x 6−18⋅ x 52⋅ x 4258⋅ x 3−220⋅ x 2−744⋅ x720
przedział: −3,54 ; 9
•
W 5 x = x1⋅ x3⋅ x−5⋅ x−6⋅ x−7= x 5⋅−14⋅ x 458⋅ x 3184⋅ x 2−519⋅ x−630
przedział: −3,14 ; 14
•
W x = x1⋅ x2⋅ x −7⋅ x−8⋅ x−9
5
=
= x 5−21⋅ x 4121⋅ x 3741⋅ x 2−410⋅ x−1008
przedział: −3,89 ; 21
•
W x =2⋅ x1⋅ x2⋅ x−7⋅ x−8⋅ x−9
5
=
= 2⋅ x 5−42⋅ x 4242⋅ x 31482⋅ x 2−820⋅ x −2016
przedział: −3,89 ; 21
Wnioski:
•
Można łatwo oszacować granicę przedziału od strony większej liczby pierwiastków.
Jest to współczynnik przy potędzie n-1 wzięty z przeciwnym znakiem i podzielony przez współczynnik przy n-tej potędze.
•
Granica przedziału od strony mniejszej liczby pierwiastków również jest zależna od odległości większej liczby pierwiastków, ale owa zależność nie jest aż tak widoczna.
III. pierwiastki wielokrotne
•
W 4 x= x⋅ x−1⋅ x5⋅ x2= x 46⋅ x 33⋅ x 2−10⋅ x przedział: −6 ; 1,01
- 3 -
W 5 x = x⋅ x−12⋅ x5⋅ x2= x 55⋅ x 4−3⋅ x 3−13⋅ x 210⋅ x przedział: −5,55 ; 1,65
•
W 6 x = x⋅ x−13⋅ x5⋅ x2= x 64⋅ x 5−8⋅ x 4−8⋅ x 323⋅ x 2−10⋅ x przedział: −5,47 ; 2,01
•
W 5 x = x⋅ x−1⋅ x52⋅ x2= x 511⋅ x 433⋅ x 35⋅ x 2−50⋅ x przedział: −11 ; 1,01
•
W 6 x = x⋅ x−1⋅ x53⋅ x2= x 616⋅ x 588⋅ x 4170⋅ x 3−25⋅ x 2−250⋅ x przedział: −16 ; 1,01
Wnioski:
•
Wraz ze wzrostem krotności najdalszego pierwiastka, oddala się granica przedziału zawierającego wartości rzeczywiste wielomianu.
•
Dla rozpatrywanych krotności pierwiastka x=−5 granice przedziału można oszacować poprzez iloraz współczynnika przy n-1 potędze przez współczynnik przy n-tej potędze. Wynik naturalnie musi być wzięty z przeciwnym znakiem.
•
Dla rozpatrywanych krotności pierwiastka x=1 powyższa zależność nie zachodzi.
Jest to zapewne zwiazane z faktem, iż po stronie dodatniej osi rzeczywistej znajdowała się mniejsza (docelowo) liczba pierwiastków. Granice oczywiście powiększały się, jednakże nie tak widocznie jak w powyższym przypadku.
IV. pierwiastki jednakowego znaku
•
W 4 x= x−12⋅ x−2⋅ x−3= x 4−7⋅ x 317⋅ x 2−17⋅ x6
przedział: 0 ; 7
•
W 4 x= x−1⋅ x−2⋅ x−3⋅ x−4= x 4−10⋅ x 335⋅ x 2−50⋅ x24 przedział:
0 ; 10
•
W 4 x= x12⋅ x22= x 46⋅ x 313⋅ x 212⋅ x4
przedział: −6 ; 0
Wnioski:
•
Granica przedziału od strony, od któej nie ma pierwiastków wynosi 0.
•
Granica przedziału od strony, od której występują pierwiastki jest wyliczana poprzez iloraz współczynnika przy n-1 potędze do współczynnika przy n-tej potędze wzięty z przeciwnym znakiem.
•
Bez utraty ogólności można przyjąć, że granice od strony, gdzie występuje większa ilość pierwiastków, można oszacować poprzez zsumowanie wszystkich pierwiastków wielomianu.
3. Gdy współczynnik przy najwyższej potędze będzie liczbą ujemną, tak skonstruowany program dla schematu Hornera nie zadziała. Program się zapętli, ponieważ rządamy, aby wszystkie wpółczynniki b , dla i=1,2 , ... , n−1
i
były nieujemne, co jest niemożliwe do osiągnięcia przy ujemnym współczynniku an . Na szczęście algorytm będzie liczył poprawnie, gdy zminimy żądanie, aby współczynniki
b , dla i=1,2 , ... , n−1
i
były niedodatnie (program w listingu nr 2
nie jest zmodyfikowany).
- 4 -
4. Dokonaliśmy implementacji programu wyznaczającego wartość funkcji na podstawie szeregu Taylora w dwóch, wymaganych, wariantach (listing nr 3).
Oto tabela pomiarowa:
Dokładność
Argument
-12.61
-9.54
-1.57
10
12.61
0.0001
18 / -0.072146 / -0.072669
17 / 0.11503 / 0.114937
6 / -1 / -1
18 / -0.544062 / -0.543997 18 / 0.072146 / 0.072669
0.001
18 / -0.072146 / -0.072669 16 / 0.115054 / 0.114961 5 / -1.000003 / -1.000003 17 / -0.544062 / -0.543997 18 / 0.072146 / 0.072669
0.01
18 / -0.072146 / -0.072669 16 / 0.114772 / 0.114679 4 / -0.999843 / -0.999843 16 / -0.544178 / -0.544112 18 / 0.072146 / 0.072669
0.1
18 / -0.072146 / -0.072669 14 / 0.117658 / 0.117565 3 / -1.004509 / -1.004509 14 / -0.554271 / -0.554206 18 / 0.072146 / 0.072669
Wnioski:
•
Nie potrafiliśmy osiągnać wartości większych, co do modułu, od 12,61.
Jest to związane najprawdopodobniej z tym, iż w programie wykorzystaliśmy zmienne typu float, przez co mógł się wyczerpać ich zakres, w wyniku czego w wartości funkcji otrzymywaliśmy wyrazy nieokreślone.
•
Implementacja pokazuje poprawne wyniki tylko dla argumentów bliskich 0, ze względu na punkt x =0
0
, wokół którego stworzyliśmy szereg Taylora ( w tym
wypadku MacLaurina). Jeszcze dla wartości x=10 mamy poprawny wynik dla obranej dokładności, jednakże dla x=±12,61 rad wartość funkcji sinus różni się od poprawnej aż o ok. (0,028 – 0,029), co dlawartości funkcji trygonometrycznych może być znaczącą różnicą.
Załączniki:
•
kody źródłowe 3 programów
- 5 -