25
PA081 Programování numerických výpočtů Přednáška 4

P A 0 81 P rogramov ání numerických výpočtů

Embed Size (px)

DESCRIPTION

P A 0 81 P rogramov á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 - PowerPoint PPT Presentation

Citation preview

Page 1: P A 0 81  P rogramov ání numerických výpočtů

PA081 Programování numerických výpočtů

Přednáška 4

Page 2: P A 0 81  P rogramov ání numerických výpočtů

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

Page 3: P A 0 81  P rogramov ání numerických výpočtů

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

Page 4: P A 0 81  P rogramov ání numerických výpočtů

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

Page 5: P A 0 81  P rogramov ání numerických výpočtů

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

Page 6: P A 0 81  P rogramov ání numerických výpočtů

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

Page 7: P A 0 81  P rogramov ání numerických výpočtů

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

Page 8: P A 0 81  P rogramov ání numerických výpočtů

Iterační metodyPraktický příklad 2: (1)

Prostá iterace:Nalezení rekurzivní rovnice:Nějaké návrhy?

0xcose1

1x2

Page 9: P A 0 81  P rogramov ání numerických výpočtů

Prostá iterace:Nalezení rekurzivní rovnice:

a) konverguje

b) diverguje

Iterační metodyPraktický příklad 2: (2)

xcos

121

1

1lnx

x2e1

1cosax

0xcose1

1x2

Page 10: P A 0 81  P rogramov ání numerických výpočtů

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

Page 11: P A 0 81  P rogramov ání numerických výpočtů

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

Page 12: P A 0 81  P rogramov ání numerických výpočtů

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

Page 13: P A 0 81  P rogramov ání numerických výpočtů

Iterační metodyPraktický příklad 3: sin x = x - h (1)

Prostá iterace:

Pro h = 0,234567 Pro h = 0,000123456

Page 14: P A 0 81  P rogramov ání numerických výpočtů

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

Page 15: P A 0 81  P rogramov ání numerických výpočtů

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

Page 16: P A 0 81  P rogramov ání numerických výpočtů

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?:

Page 17: P A 0 81  P rogramov ání numerických výpočtů

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

Page 18: P A 0 81  P rogramov ání numerických výpočtů

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

Page 19: P A 0 81  P rogramov ání numerických výpočtů

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

Page 20: P A 0 81  P rogramov ání numerických výpočtů

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

Page 21: P A 0 81  P rogramov ání numerických výpočtů

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

Page 22: P A 0 81  P rogramov ání numerických výpočtů

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

Page 23: P A 0 81  P rogramov ání numerických výpočtů

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

Page 24: P A 0 81  P rogramov ání numerických výpočtů

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.

Page 25: P A 0 81  P rogramov ání numerických výpočtů

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?