data 05.06.2013
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
Ć
wiczenie nr
5
Temat:
Numeryczne rozwiązywanie równań i układów
równań nieliniowych
Wydział: EEiA
rok akademicki: 2012/2013 semestr: IV
Grupa: 4C5
Dzień: czwartek godz. 14
15
-16
00
Kubiak Łukasz 171367
Leśnik Przemysław 171374
Zadanie 1
-m-funkcja realizująca metodę bisekcji:
function
[x0,x1,n]=bisekcja(F,xa,xb,e)
x0=xa;
x1=xb;
for
n=1:25
x=.5*(x0+x1);
a=sign(feval(F,x0)*feval(F,x));
f=feval(F,x);
if
a<0
x1=x;
else
x0=x;
end
if
f==0
x0=x;
x1=x0;
break
end
warunek=abs(x0-x1);
if
warunek<(2*e)
break
end
end
-m-funkcja realizująca metodę siecznych:
function
[xo,n]=sieczna(F,x0,x1,e)
x=[1:27];
x=0;
x(1,1)=x0;
x(1,2)=x1;
for
n=2:26
x(n+1)=((feval(F,x(n)))*x(n-1)-(feval(F,x(n-1)))*x(n))/((feval(F,x(n)))-
(feval(F,x(n-1))));
warunek=abs(x(n)-x(n-1));
if
warunek<e
break
end
end
xo=x;
-m-funkcja realizująca metodę Newtona:
function
[xo,n]=newton(F,Fd,x0,e)
x=[1:26];
x=0;
x(1,1)=x0;
for
n=2:26
x(n)=x(n-1)-(feval(F,x(n-1))/feval(Fd,x(n-1)));
warunek=abs(x(n)-x(n-1));
if
warunek<e
break
end
end
xo=x;
funkcja: f(x)=xe
x-2
-x
2
/2;
x’=2
metoda Newtona: x
0
=2,5 , przyjmuję
ε
=1e-16
uzyskane przybliżenia:
n
x
|x-x'|
f(x)
f'(x)
0 2.500000000000000 0.500000000000000 -0.066419745478745
-1.502248391294711
1 2.005786442599216 0.005786442599216 -0.006738658879160
-1.187348607914774
2 2.000111058946732 0.000111058946732 -0.000126833406758
-1.142480927818234
3 2.000000043170740 0.000000043170740 -0.000000049283407
-1.141592998955683
4 2.000000000000007 0.000000000000007 -0.000000000000008
-1.141592653589849
5 2.000000000000000
0
0 -1.141592653589793
6 2.000000000000000
0
0 -1.141592653589793
metoda siecznych: x
0
=2.5 ,x
1
=2.4 ; przyjmuję
ε
=1e-16
uzyskane przybliżenia:
n
X
|x-x'|
f(x)
f'(x)
0 2.500000000000000 0.500000000000000 -0.066419745478745
-1.502248391294711
1 2.400000000000000 0.400000000000000 -0.051724668485651
-1.436272053316942
2 2.254801362721704 0.254801362721704 -0.005572822484048
-1.179634772750672
3 2.110551137124541 0.110551137124541 -0.000630388208170
-1.145996890563825
4 2.000049037432576 0.000049037432576 -0.000010317393333
-1.141664951743598
5 2.000000717405163 0.000000717405163 -0.000000019869607
-1.141592792831092
6 2.000000000013551 0.000000000013551 -0.000000000000629
-1.141592653594201
7 2.000000000000273 0.000000000000273 -0.000000000000114
-1.141592653589793
8 2.000000000000000
0
0 -1.141592653589793
9 2.000000000000000
0
0 -1.141592653589793
metoda bisekcji: x
a
=1,8 ,x
b
=2,5 ; przyjmuję
ε
=1e-16
n
xa
Xb
|~x-x'|
f(x)
f'(x)
0 1.800000000000000 2.500000000000000
0.012500000000000
-0.014884498997154
-1.239095626241398
1 1.825000000000000 2.492500000000000
0.006250000000000
0.006977402250884
-1.090967853846121
2 1.843750000000000 2.472500000000000
0.003125000000000
-0.003606376789602
-1.166436415645190
3 1.843750000000000 2.463125000000000
0.001562500000000
0.001773952551422
-1.129053591857516
4 1.848437500000000 2.453125000000000
0.000781250000000
-0.000894308123743
-1.147832888012328
5 1.848437500000000 2.450781250000000
0.000390625000000
0.000445323960855
-1.138465212186528
6 1.849609375000000 2.444781250000000
0.000195312500000
-0.000223119863308
-1.143154543238417
7 1.849609375000000 2.425195312500000
0.000097656250000
0.000111445505637
-1.140811251001914
8 1.849902343750000 2.366195312500000
0.000048828125000
-0.000055751364911
-1.141983240442821
9 1.849902343750000 2.310048828125000
0.000024414062500
0.000027868530131
-1.141397331553050
10 1.849975585937500 2.250448828125000
0.000012207031250
-0.000013936053234
-1.141690307455607
11 1.849975585937500 2.216012207031250
0.000006103515625
0.000006967579586
-1.141543824868747
12 1.889993896484375 2.177512207031250
0.000003051757813
-0.000003483901553
-1.141617067503286
13 1.889993896484375 2.113503051757813
0.000001525878906
0.000001741922836
-1.141580446521292
14 1.949998474121094 2.055433051757813
0.000000762939454
-0.000000870968404
-1.141598757096112
15 1.949998474121094 2.001431162939453
0.000000381469726
0.000000435482455
-1.141589601829657
16 1.959999618530273 2.000789762939453
0.000000190734863
-0.000000217741664
-1.141594179468115
17 1.969999618530273 2.000056190734863
0.000000095367432
0.000000108870723
-1.141591890650192
18 1.979999904632568 2.000003590734863
0.000000047683716
-0.000000054435389
-1.141593035059485
19 1.99987904632568
2.000000547683716
0.000000023841858
0.000000027217688
-1.141592462854920
20 1.999999976158142 2.000000247683716
0.000000011920929
-0.000000013608845
-1.141592748957223
21 1.999879676158142 2.000000011920929
0.000000005960464
0.000000006804422
-1.141592605906080
22 1.999994894039536 2.000000011920929
0.000000002980233
-0.000000003402212
-1.141592677431657
23 1.999999784039536 2.000000002980232
0.000000001490116
0.000000001701106
-1.141592641668865
24 1.999999858509884 2.000000002980232
0.000000000745058
-0.000000000850553
-1.141592659550257
25 1.999999998509884 2.000000000745058
0.000000000372529
0.000000000425276
-1.141592650609561
funkcja: f(x)=cos(
ππππ
x)-
ππππ
(x+0.5);
x’=-0,5
metoda Newtona: x
0
=-0,3, przyjmuję
ε
=1e-16
uzyskane przybliżenia:
n
x
|x-x'|
f(x)
f'(x)
0 -0.300000000000000 0.2000000000000000 -0.001290335278517 0.077356437479629
1 -0.316680386539998 0,1833196134600020 -0.000382111660873 0.034391643997409
2 -0.342790982500501 0,1572090174994990 -0.000113190686121 0.015287346930514
3 -0.375195189825382 0,1248048101746180 -0.000033534352015 0.006794805237289
4 -0.390130482426739 0,1098695175732610 -0.000009935626597 0.003019998129124
5 -0.421342042706784 0,0786579572932160 -0.000002943826466 0.001342238118304
6 -0.455613649267198 0,0443863507328020 -0.000000872236597 0.000596553578924
7 -0.477075775432463 0,0229242245675370 -0.000000258439383 0.000265135576713
8 -0.492050519697216 0,0079494803027840 -0.000000076574488 0.000117838163002
9 -0.497700347275429 0,0022996527245710 -0.000000022688718 0.000052372542505
10 -0.499133565090996 0,0008664349090040 -0.000000006722581 0.000023276690589
11 -0.499422376796791 0,0005776232032090 -0.000000001991876 0.000010345196878
12 -0.499614917893583 0,0003850821064170 -0.000000000590185 0.000004597865287
13 -0.499743278599523 0,0002567214004770 -0.000000000174869 0.000002043495761
14 -0.499828852279481 0,0001711477205190 -0.000000000051813 0.000000908221641
15 -0.499885901371951 0,0001140986280490 -0.000000000015352 0.000000403655113
16 -0.499923934245793 0,0000760657542070 -0.000000000004549 0.000000179402284
17 -0.499949289585043 0,0000507104149570 -0.000000000001348 0.000000079734073
18 -0.499966193409300 0,0000338065907000 -0.000000000000399 0.000000035436626
19 -0.499977459611641 0,0000225403883590 -0.000000000000118 0.000000015753331
20 -0.499984958199031 0,0000150418009690 -0.000000000000035 0.000000007015349
21 -0.499989959097294 0,0000100409027060 -0.000000000000010 0.000000003126044
22 -0.499993226501977 0,0000067734980230 -0.000000000000003 0.000000001422577
23 -0.499995411708876 0,0000045882911240 -0.000000000000001 0.000000000652757
24 -0.499996772366019 0,0000032276339810 -0.000000000000000 0.000000000323012
25 -0.499998147204819 0,0000018527951810
0 0.000000000106440
metoda siecznych: x
0
=-0,3 x
1
=-0,35; przyjmuję
ε
=1e-16
uzyskane przybliżenia:
n
x
|x-x'|
f(x)
f'(x)
0 -0.300000000000000 0,2000000000000000 -0.001290335278517
0.077356437479629
1 -0.350000000000000 0,1500000000000000 -0.000660945158575
0.049544792843595
2 -0.370501358976451 0,1294986410235490 -0.000265184354049
0.026961422066286
3 -0.387537922640549 0,1124620773594510 -0.000117103529977
0.015637568603226
4 -0.403102494887798 0,0968975051122020 -0.000049858008814
0.008851009379184
5 -0.421228249099303 0,0787717509006970 -0.000021530034370
0.005056991595440
6 -0.439363934997220 0,0606360650027800 -0.000009247144119
0.002878829160364
7 -0.452724628516264 0,0472753714837360 -0.000003979995123
0.001641122721624
8 -0.464508430094395 0,0354915699056050 -0.000001711636146
0.000935043636232
9 -0.485854433654728 0,0141455663452720 -0.000000736336434
0.000532857667445
10 -0.491870645850358 0,0081293541496420 -0.000000316730882
0.000303637600244
11 -0.497637713356012 0,0023622866439880 -0.000000136246373
0.000173026576073
12 -0.498216766742610 0,0017832332573900 -0.000000058607359
0.000098597247835
13 -0.498653876738543 0,0013461232614570 -0.000000025210558
0.000056184772796
14 -0.498983842088467 0,0010161579115330 -0.000000010844555
0.000032016337901
15 -0.499232925106367 0,0007670748936330 -0.000000004664891
0.000018244205060
16 -0.499420952349224 0,0005790476507760 -0.000000002006648
0.000010396283318
17 -0.499562889856111 0,0004371101438890 -0.000000000863179
0.000005924221939
18 -0.499670035375249 0,0003299646247510 -0.000000000371305
0.000003375859343
19 -0.499750917060414 0,0002490829395860 -0.000000000159720
0.000001923700957
20 -0.499811972762683 0,0001880272373170 -0.000000000068705
0.000001096203377
21 -0.499858062149737 0,0001419378502630 -0.000000000029554
0.000000624663396
22 -0.499892853990803 0,0001071460091970 -0.000000000012713
0.000000355960340
23 -0.499919117367494 0,0000808826325060 -0.000000000005469
0.000000202843069
24 -0.499938942489823 0,0000610575101770 -0.000000000002352
0.000000115592005
25 -0.499953908098057 0,0000460919019430 -0.000000000001012
0.000000065871700
26 -0.499965209165375 0,0000347908346250 -0.000000000000435
0.000000037530065
Metoda bisekcji: x
a
=-0,3,x
b
=-0,6 ; przyjmuję
ε
=1e-16
uzyskany przedział zawierający poszukiwany pierwiastek:
n
xa
xb
x
|x-x'|
f(x)
f'(x)
0 -0.300000000000000
-0,600000000000000
-0,450000000000000 0,050000000000000
0.161441223800018e-3 0.019368963394949
1 -0.320000000000000
-0,575000000000000
-0,447500000000000 0,052500000000000
-0.020184821607483e-3 0.004844108164658
2 -0.337500000000000
-0,545000000000000
-0,441250000000000 0,058750000000000
0.002523248615827e-3
0.001211143770909
3 -0.357500000000000
-0,506250000000000
-0,431875000000000 0,068125000000000
-0.000315410636720e-3 0.000302793238688
4 -0.366875000000000
-0,506250000000000
-0,436562500000000 0,063437500000000
0.000039426472309e-3
0.000075698765674
5 -0.386875000000000
-0,501562500000000
-0,444218750000000 0,055781250000000
-0.000004928313313e-3 0.000018924719919
6 -0.399218750000000
-0,501562500000000
-0,450390625000000 0,049609375000000
0.000000616039664e-3
0.000004731181761
7 -0.419218750000000
-0,500390625000000
-0,459804687500000 0,040195312500000
-0.000000077004625e-3 0.000001182795551
8 -0.449804687500000
-0,500390625000000
-0,475097656250000 0,024902343750000
0.000000009625634e-3
0.000000295698895
9 -0.469804687500000
-0,500097656250000
-0,484951171875000 0,015048828125000
-0.000000001203038e-3 0.000000073924724
10 -0.489951171875000
-0,500097656250000
-0,495024414062500 0,004975585937500
0.000000000150546e-3
0.000000018481181
11 -0.499951171875000
-0,500024414062500
-0,499987792968750 0,000012207031250
-0.000000000018652e-3 0.000000004620295
12 -0.499987792968750
-0,500024414062500
-0,500006103515625 0,000006103515625
0.000000000002665e-3
0.000000001155074
13 -0.499987792968750
-0,500006103515625
-0,499996948242188 0,000003051757812
0 0.000000000288768
14 -0.499996948242188
-0,500006103515625
-0,500001525878907 0,000001525878907
0 0.000000000072192
15 -0.499996948242188
-0,499996948242188
-0,499996948242188 0,000003051757812
0 0.000000000288768
2 Zadanie
zastępuję funkcje f(x) wyrażeniem g(x)=f(x)/f’(x)
g(x)=((cos(
π
x)-
π
(x+0.5))/( -π (1+sin(π x))))
metoda Newtona: x
0
=-0,3,
uzyskane przybliżenia:
n
x
|x-x'|
g(x)
g'(x)
0 -0.300000000000000
0.200000000000000
-0.016680386539998
0.334157009709169
1 -0.499917811254403
-8.218874559701161e-005
-2.739630712961191e-005
0.333331913401343
2 -0.500000000525901
0.000000000525901
-
-
Metoda siecznych: x
0
=-0.3,x
1
=-0,35
uzyskane przybliżenia:
n
x
|x-x'|
g(x)
g'(x)
0 -0.300000000000000
0.200000000000000 -0.016680386539998
0.334157009709169
1 -0.350000000000000
0.150000000000000 -0.013340355678978
0.333860207376031
2 -0.459940815621398
0,040059184378602 -1.972893933885572e-005
0.333305857416946
3 -0.499999971241020
0,000000028758980 0
1
4 -0.499999971241020
0,000000028758980 0
1
3. Funkcja fzero
f(x)=xe
x-2
-x
2
/2
a = fzero(@(a) a*exp(a-2)-a^2*0.5, 1.8)
a =
2
f(x)=cos(
ππππ
x)-
ππππ
(x+0.5)
a = fzero(@(a) cos(pi*a)-pi*(a+0.5), -0.6)
a =
-0.5000
Wyniki uzyskane za pomocą standardowej funkcji Matlaba zgadzają się z wynikami
uzyskanymi ze zrobionych przez nas m-plików.
4.Metody Laguerre’a i Bairstowa oraz standardowa procedura roots
Posługując się plikami Laguerre.m, Bairstow.m oraz standardową procedurą roots
otrzymaliśmy wyniki:
1000
2750
2245
333
6
198
32
76
14
4
5
)
(
2
3
4
5
6
7
8
9
10
11
+
−
+
−
+
−
−
+
−
+
−
=
x
x
x
x
x
x
x
x
x
x
x
x
W
W = [1 -5 4 -14 76 -32 -198 6 -333 2245 -2750 1000] – współczynniki wielomianu
Laguerre:
[A,iteracje]=laguerre([1 -5 4 -14 76 -32 -198 6 -333 2245 -2750 1000],0.001)
ε
=10^-3
ε
=10^-6
ε
=10^-9
Miejsca zerowe
Iteracje
Miejsca zerowe
Miejsca zerowe
Iteracje
0.9992
8 1.0000
13 1.0000
14
1.0001
6 1.0000 - 0.0000i
11 1.0000 - 0.0000i
14
1.0007
2 1.0000 + 0.0000i
3 1.0000 + 0.0000i
3
-0.9996 + 1.9994i
10 -1.0000 - 2.0000i
13 -1.0000 - 2.0000i
20
-2.0000 + 0.0000i
4 -2.0000 - 0.0000i
4 -2.0000 + 0.0000i
5
-0.9994 - 1.9997i
5 -1.0000 + 2.0000i
9 -1.0000 + 2.0000i
25
4.0000 + 0.0000i
4 4.0000 + 0.0000i
5 4.0000 + 0.0000i
5
2.0000 + 1.0000i
5 2.0000 - 1.0000i
5 2.0000 - 1.0000i
6
2.0000 - 1.0000i
4 2.0000 + 1.0000i
4 2.0000 + 1.0000i
5
-1.0006 - 2.0003i
2 -1.0000 + 2.0000i
2 -1.0000 + 2.0000i
2
-1.0004 + 2.0006i
0 -1.0000 - 2.0000i
0 -1.0000 - 2.0000i
0
Bairstow:
[A,iteracje]=bairstow([1 -5 4 -14 76 -32 -198 6 -333 2245 -2750 1000],0.000000001)
ε
=10^-3
ε
=10^-6
ε
=10^-9
Miejsca
zerowe
Iteracje Iteracje
Miejsca zerowe
Miejsca zerowe
Iteracje
0.9996 - 0.0005i
16 1.0000 - 0.0000i
26 1.0000
99
0.9996 + 0.0005i
16 1.0000 + 0.0000i
26 1.0000
99
-2.0001
54 -2.0000
90 1.0000
94
1.0009
54 1.0000
90 4.0000
94
-0.9924 - 2.0016i
13 -0.9995 - 2.0001i
17 2.0000 - 1.0000i
7
-0.9924 + 2.0016i
13 -0.9995 + 2.0001i
17 2.0000 + 1.0000i
7
-1.0078 - 1.9982i
2 -1.0005 - 1.9999i
2 -0.9972 - 1.9993i
18
-1.0078 + 1.9982i
2 -1.0005 + 1.9999i
2 -0.9972 + 1.9993i
18
1.9988 - 1.0023i
6 2.0000 - 1.0000i
7 -1.0028 - 2.0008i
3
1.9988 + 1.0023i
6 2.0000 + 1.0000i
7 -1.0028 + 2.0008i
3
4.0028
0 4.0000
0 -2.0000
0
Roots:
Miejsca zerowe
4.0000
-2.0000
-1.0000 + 2.0000i
-1.0000 - 2.0000i
-1.0000 + 2.0000i
-1.0000 - 2.0000i
2.0000 + 1.0000i
2.0000 - 1.0000i
1.0000
1.0000 + 0.0000i
1.0000 - 0.0000i
Wyniki uzyskane funkcją roots i metodą Laguerre'a dają takie same wyniki. Metoda
Bairstowa daje podobne, ale trochę różniące się wyniki.
5. Metoda Lehmera – Schura.
Miejsca
zerowe
Iteracje
1.0000 + 0.0000i
5
1.0000 + 0.0000i
5
1.0000 + 0.0000i
5
-1.9999 + 0.0000i
5
3.9999 + 0.0000i
5
1.9994 + 0.9992i
8
1.9994 - 0.9992i
8
-1.0185 + 2.0236i
8
-0.9810 + 1.9752i
8
-1.0125 - 2.0488i
0
-0.9868 - 1.9500i
0
Metoda Lehmera–Schura znajduje miejsca zerowe wielomianu interpolującego badaną funkcję.
Zakładając, że wielomian ten jest tylko przybliżeniem więc miejsca zerowe uzyskane taką metodą
również są przybliżone i stąd rozbieżności z pozostałymi metodami.
Wnioski
W celu analizy szybkość metody dla każdej z metod przyjąłem stalą wartość
ε
=1e-16. Z
analizy przeprowadzonych pomiarów wynika, że najszybsza jest metoda Newtona, metoda
siecznych jest nieco wolniejsza, natomiast metoda bisekcji jest najwolniejsza. Metoda bisekcji
zwraca najmniejszy przedział w którym znajduje się poszukiwany pierwiastek.
Funkcja fzero pozwala na znalezienie dokładnej wartość pierwiastka w okolicy określonego
punktu. Funkcja roots zwraca pierwiastki wielomianu. Uzyskane wyniki posiadają dużą
dokładność. Funkcje Laguerre’a i Bairstow’a także pozwalają na obliczenie pierwiastków
wielomiany w zadaną dokładnością. Metody te dokładnie obliczają pierwiastki rzeczywiste,
natomiast pierwiastki zespolone obarczone są większym błędem.
Do poszukiwania pierwiastków rzeczywistych wielomianu można zastosować metodę
Newtona, oraz siecznych. Warunkiem jest aby znacz otoczenie w jaki się znajdują
poszukiwane pierwiastki. Jednak pierwiastki te są obarczone większym błędem niż w
przypadku zastosowania innych metod.
W przypadku zastosowania metody Lehmera-Schura pierwiastki są stosunkowo dokładnie
obliczone. Z tą różnicą że każdy z nich jest traktowany jako pierwiastek zespolony, z racji
tego że pierwiastki są poszukiwane na płaszczyźnie zespolonej. Pomimo tego ze podany
wielomian posiada 5 pierwiastków rzeczywistych z metody tej wynika ze wszystkie
pierwiastki są pierwiastkami zespolonymi.
6. Rozwiązanie układu równań za pomocą metody Newtona.
−2 + +
= 0
− − 2 + 3 = 0
(x
0
,y
0
) = (-0.8; -1.3) (x
*
,y
*
) = (-1 -1)