Date post: | 03-Jan-2016 |
Category: |
Documents |
Upload: | mckenzie-petersen |
View: | 34 times |
Download: | 6 times |
PA081 Programování numerických výpočtů
Přednáška 4
Sylabus
V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí:
• Nelineární úlohy– Řešení nelineárních rovnic– Numerická integrace
• Lineární úlohy– Řešení soustav lineárních rovnic– Metoda nejmenších čtverců pro lineární úlohy– Sumace obecné a s korekcí
• Numerické výpočty v C a C++– Optimalizace výrazů, optimalizace při překladu
Nelineární úlohy(1-sin x) / (/2-x) (1)
Výraz tvaru: (1-sin x) / (/2-x) pro x /2
Standardní výpočet pro x = 1,5708:(přesnost 10 desetinných míst)
/2 =1,57079 63267/2-x = 0,00000 36733
sin x = 0,99999 99999(1-sin x) / (/2-x) = 0,00002 72235
Nelineární úlohy(1-sin x) / (/2-x) (2)
Výraz tvaru: (1-sin x) / (/2-x) pro x /2
Přesný výpočet pro x = 1,5708:
/2 = 1,5707963267949.../2-x = -0,00000367320510341607...
sin x = 0,999999999993254...(1-sin x) / (/2-x) = 0,0000018366168017301
Nelineární úlohy(1-sin x) / (/2-x) (3)
Výraz tvaru: (1-sin x) / (/2-x) pro x /2
Převedení úlohy do vhodnějšího tvaru:
Substituce t = /2 – x
Pro sin x pak platí:
sin x = sin (/2 – t) = -sin (t - /2) = cos (t)
Pozn.: sin (x + /2) = cos x; sin (x - /2) = -cos x
t
...!4
t!2
t1
t
1
t
tcos
t
1
t
tcos1
x
xsin1
42
2
...!4
t
!2
t
x
xsin1 3
2
Nelineární úlohy(1-sin x) / (/2-x) (4)
Výraz tvaru: (1-sin x) / (/2-x) pro x /2
Převedení úlohy do vhodnějšího tvaru:
x = 1,5708
t = 0,00000 36732
...!4
t
!2
t
x
xsin1 3
2
183660,0000024
t
2
t
x
xsin1 3
2
Nelineární úlohy(1-sin x) / (/2-x) (5)
Porovnání výsledků (x = 1,5708):
Standardní výpočet: 0,00002 72235
Přesný výpočet: 0,00000 18366168017301
Pozměnění výrazu: 0,00000 18366
Iterační metodyPraktický příklad 2: (1)
Prostá iterace:Nalezení rekurzivní rovnice:Nějaké návrhy?
0xcose1
1x2
Prostá iterace:Nalezení rekurzivní rovnice:
a) konverguje
b) diverguje
Iterační metodyPraktický příklad 2: (2)
xcos
121
1
1lnx
x2e1
1cosax
0xcose1
1x2
Prostá iterace:Nalezení rekurzivní rovnice:
a)
konverguje 7 iterací pro přesnost na 6 des. míst
Iterační metodyPraktický příklad 2: (3)
x2e1
1cosax
0xcose1
1x2
02,0943952,9685293,0690123,075937
3,076393,0764193,0764213,076421
Newtonova metoda:Úprava rovnice není nutná:
Derivace:
Výpočet xi+1:
Pozor na správnou volbu x0: x0 = 1 (chyba), x0 = 2 (OK)
Iterační metodyPraktický příklad 2: (4)
0xcose1
1)x(f
x2
0xsine1
e.2)x(f 2x2
x2
0xcose1
1x2
i2x2
x2
ix2
i1i
xsine1
e.2
xcose11
xx
i
i
i
Newtonova metoda:
7 iterací pro přesnost na 6 des. míst
Iterační metodyPraktický příklad 2: (5)
i2x2
x2
ix2
i1i
xsine1
e.2
xcose11
xx
i
i
i
0xcose1
1x2
2
2,647466
2,894327
3,008972
3,05884
3,074469
3,076391
3,076421
3,076421
Iterační metodyPraktický příklad 3: sin x = x - h (1)
Prostá iterace:
Pro h = 0,234567 Pro h = 0,000123456
Iterační metodyPraktický příklad 3: sin x = x - h (1)
Prostá iterace:
Pro h = 0,234567Nalezení rekurzivní rovnice:a) x = sin x + h konverguje (x* = 1,145472; 20 iter.)b) x = asin (x – h) nekonverguje Pro h = 0,000123456Nalezení rekurzivní rovnice:a) x = sin x + h nekonvergujeb) x = asin (x – h) nekonverguje
Iterační metodyPraktický příklad 3: sin x = x - h (2)
Newtonova metoda:Úprava rovnice:f(x) = sin x – x + h = 0
Derivace: f’(x) = cos x - 1
Výpočet xi+1:
Pro h = 0,234567:
konverguje; x0 = 0,5; x* = 1,145472; 6 iter.Pro h = 0,000123456:
konverguje; x0 = 0,001; x* = 0,090492916; 22 iter.
VELMI OBTÍŽNÁ VOLBA x0
ROVNICE PRO xi+1 MÁ NEVHODNÝ TVAR
1xcos
hxxsinxx
i
iii1i
Iterační metodyPraktický příklad 3: sin x = x - h (3)
Pro h = 0,000123456 Analogický problém pro metodu regula falsi:Má ve jmenovateli: sin a – a – (sin b – b)
=> velmi malá čísla, navíc jejich rozdíl se blíží 0
Co tedy dělat?:
Iterační metodyPraktický příklad 3: sin x = x - h (4)
Pro h = 0,000123456Analogický problém pro metodu regula falsi:Má ve jmenovateli: sin a – a – (sin b – b)
=> velmi malá čísla, navíc jejich rozdíl se blíží 0
Co tedy dělat?:a) Půlení intervalů – zaručené, ale pomalé:
konverguje, 22 iterací
b) Prostá iterace s rovnicí, využívající Taylorovy řady
Pro h = 0,000123456Prostá iterace s rovnicí, využívající Taylorovy řady:
Konverguje; x0 = 0; 3 iterace
Iterační metodyPraktický příklad 3: sin x = x - h (5)
hx...!7
x
!5
x
!3
xxxsin
753
h5040
x
120
x
6
x 753
342
5040x
120x
61
hx
Iterační metodyPraktický příklad 4: x.sin x = h (1)
Podobný problém jako v předchozím případě. Existuje ještě jedna metoda, jak pracovat s takovýmito výrazy:Využijeme „pseudokonstantu“ sin x/x: x. sin x = h
vynásobíme levou stranu zlomkem x/x a tím si na levé straně vytvoříme výraz sin x/x
x2.(sin x/x) = hpro x 0 je hodnota tohoto výrazu blízká 1 a se změnou x se mění velmi pomalu => vhodná do jmenovatele
i
i
xxsin
hx
Prostá iterace s rovnicí (h = 0,00123456):
Pro x0 = 0,001
Konverguje, 2 iterace
Iterační metodyPraktický příklad 4: x.sin x = h (2)
i
i
xxsin
hx
0,001
0,035136
0,03514
0,03514
Hodnoty konstant: a = 0,8474; b = 0,3; c = 3,27; d = 0,6697Substituce:
Iterační metodyPraktický příklad 4: (1)
)x.dcos(x.ca
x.ba
Hodnoty konstant: a = 0,8474; b = 0,3; c = 3,27; d = 0,6697Substituce: x = u2/d
Nahradíme cos pomocí sin, abychom mohli použít sin u/u:1 – cos u = 2 (sin (u/2))2
Iterační metodyPraktický příklad 4: (1)
)x.dcos(x.ca
x.ba
x.du )ucos(
u.a
u.a2
dc
2db
2
2
u.291,78474,0
u.622,61ucos
1 – cos u = 2 (sin (u/2))2
=> u = 1,42998x = 4,55932
Iterační metodyPraktický příklad 4: (2)
)x.dcos(x.ca
x.ba
2
2
u.291,78474,0
u.622,61ucos
2
22
2u
u.291,78474,0
u.622,6))(sin(2ucos1
2
2
2u
2u
u.291,78474,0
244,13sins
1162,0s
817,1u2
Iterační metodyObecná pravidla
• Vytvořit graf rovnice.• Zjistit, kde zhruba leží kořen rovnice. V případě, že
jich je několik, ujistit se, který z nich hledáme.• Vymyslet vhodnou iterativní metodu – jednu z těchto:
– Prostá iterace s původní rovnicí– Prostá iterace s upravenou rovnicí (Taylorův rozvoj, využití
pseudokonstanty sin x / x)– Newtonova metoda– Metoda regula falsi– Metoda půlení intervalů
• Metodu použít a otestovat správnost výsledků (např. pomocí grafu rovnice). Pokud je výsledek nesprávný, zjistit důvod a zkusit jinou metodu.
Domácí úkol 4
Máme kolejnici délky 1 km a 10 cm.Ohneme ji tak, aby mezi jejími konci byla
vzdálenost 1 km.Jaká bude vzdálenost mezi spojnicí konců
kolejnice a bodem ve středu kolejnice?