Soustavy nelineárních rovnic pomocí systému Maple. Newtonova metoda.

Podobné dokumenty
Numerická matematika 1

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

Co je obsahem numerických metod?

Hledání extrémů funkcí

Newtonova metoda. 23. října 2012

Hledání kořenů rovnic jedné reálné proměnné metoda sečen Michal Čihák 23. října 2012

Připomenutí co je to soustava lineárních rovnic

METODA PŮLENÍ INTERVALU (METODA BISEKCE) METODA PROSTÉ ITERACE NEWTONOVA METODA

Numerické řešení nelineárních rovnic

Důvodů proč se zabývat numerickou matematikou je více. Ze základní školy si odnášíme znalost, že číslo

Nelineární rovnice. Numerické metody 6. května FJFI ČVUT v Praze

7. Derivace složené funkce. Budeme uvažovat složenou funkci F = f(g), kde některá z jejich součástí

Libovolnou z probraných metod najděte s přesností na 3 desetinná místa kladný kořen rovnice. sin x + x 2 2 = 0.

Budeme hledat řešení y(x) okrajové úlohy pro diferenciální rovnici druhého řádu v samoadjungovaném tvaru na intervalu a, b : 2 ) y i p i+ 1

Matematika I A ukázkový test 1 pro 2011/2012. x + y + 3z = 1 (2a 1)x + (a + 1)y + z = 1 a

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Derivace funkcí více proměnných

a vlastních vektorů Příklad: Stanovte taková čísla λ, pro která má homogenní soustava Av = λv nenulové (A λ i I) v = 0.

Iterační metody řešení soustav lineárních rovnic. 27. prosince 2011

Řešení nelineárních rovnic

Soustavy lineárních rovnic-numerické řešení. October 2, 2008

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Princip řešení soustavy rovnic

Numerické řešení nelineárních rovnic

Vlastní čísla a vlastní vektory

MATLAB a numerické metody

1 Polynomiální interpolace

Numerická matematika Písemky

Matematika I A ukázkový test 1 pro 2014/2015

Numerické metody a programování. Lekce 7

Aplikovaná numerická matematika - ANM

Soustavy lineárních rovnic-numerické řešení

l, l 2, l 3, l 4, ω 21 = konst. Proved te kinematické řešení zadaného čtyřkloubového mechanismu, tj. analyticky

0.1 Úvod do lineární algebry

5.3. Implicitní funkce a její derivace

Dnešní látka Opakování: normy vektorů a matic, podmíněnost matic Jacobiova iterační metoda Gaussova-Seidelova iterační metoda

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

Hledání kořenů rovnic jedné reálné proměnné metoda půlení intervalů Michal Čihák 23. října 2012

Diferenciální rovnice II

Řešení "stiff soustav obyčejných diferenciálních rovnic

I. 7. Diferenciál funkce a Taylorova věta

Moderní numerické metody

metoda Regula Falsi 23. října 2012

5. Lokální, vázané a globální extrémy

0.1 Úvod do lineární algebry

stránkách přednášejícího.

úloh pro ODR jednokrokové metody

Čebyševovy aproximace

BAKALÁŘSKÁ PRÁCE. Metody pro výpočet kořenů polynomů

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Metoda nejmenších čtverců Michal Čihák 26. listopadu 2012

DRN: Kořeny funkce numericky

11.1 Jedna rovnice pro jednu neznámou

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic


Soustavy linea rnı ch rovnic

Numerické metody a programování. Lekce 4

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Úlohy nejmenších čtverců

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

Numerické řešení diferenciálních rovnic

AVDAT Nelineární regresní model

1 Linearní prostory nad komplexními čísly

Modelování ternárních systémů slitin

Nejdřív spočítáme jeden příklad na variaci konstant pro lineární diferenciální rovnici 2. řádu s kostantními koeficienty. y + y = 4 sin t.

1 Řešení soustav lineárních rovnic

Aplikovaná numerická matematika

Přednáška 3: Limita a spojitost

Algebraické rovnice. Obsah. Aplikovaná matematika I. Ohraničenost kořenů a jejich. Aproximace kořenů metodou půlení intervalu.

Numerické metody 6. května FJFI ČVUT v Praze

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

Matematika 2 (Fakulta ekonomická) Cvičení z lineární algebry. TU v Liberci

4 Numerické derivování a integrace

2.6. VLASTNÍ ČÍSLA A VEKTORY MATIC

Numerická matematika Banka řešených příkladů

ODR metody Runge-Kutta

Numerické řešení nelineárních rovnic

6 Samodružné body a směry afinity

Matematika pro informatiku 4

Primitivní funkce, určitý integrál, nevlastní

řešeny numericky 6 Obyčejné diferenciální rovnice řešeny numericky

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Přijímací zkoušky z matematiky pro akademický rok 2018/19 NMgr. studium Učitelství matematiky ZŠ, SŠ

4EK213 Lineární modely. 4. Simplexová metoda - závěr

Řešíme tedy soustavu dvou rovnic o dvou neznámých. 2a + b = 3, 6a + b = 27,

Nelineární obvody. V nelineárních obvodech však platí Kirchhoffovy zákony.

III. Diferenciál funkce a tečná rovina 8. Diferenciál funkce. Přírůstek funkce. a = (x 0, y 0 ), h = (h 1, h 2 ).

Státní závěrečná zkouška z oboru Matematika a její použití v přírodních vědách

Arnoldiho a Lanczosova metoda

Numerická stabilita algoritmů

M - Příprava na 1. zápočtový test - třída 3SA

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

Kombinatorická minimalizace

MATEMATIKA V MEDICÍNĚ

M - Příprava na pololetní písemku č. 1

Numerické řešení rovnice f(x) = 0

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

12. Lineární programování

Transkript:

Úvod Soustavy nelineárních rovnic pomocí systému Maple. Newtonova metoda. Mnoho technických problémů vede na řešení matematických úloh, které se následně převedou na úlohy řešení soustav nelineárních rovnic f(x) = 0. (1) Rovnice (1) znamená soustavu n rovnic zapsanou ve vektorovém tvaru, tj. f : R n R n je vektorová funkce a soustava se řeší pro neznámou n-tici hodnot x. Řešení rovnice (1) pro případ n = 1 je popsán v textu Řešení rovnic(matematika I), na který se zde navazuje. Použití Newtonovy metody pro případ n = 1 nalezneme v příkladech pro zmíněný text. Pro řešení soustavy nelineárních rovnic používáme velmi často numerické iterační metody. Zvláště často se používá Newtonova metoda, která je zobecněním Newtonovy iterační metody používané v případě jedné rovnice. Jak níže ukážeme, jedná se sice o analogickou metodu, ve skutečnosti jsou však mezi jednoa vícedimenzionálním případem podstatné rozdíly. V případě jedné rovnice, tj. n = 1, je možné snadno získat dobré informace o poloze kořene. Pokud polohu blíže neznáme, lze užít k získání řešení některou z metod, která vždy konverguje, například metodu půlení intervalu. V případě více dimenzí se informace o poloze řešení získávají nesrovnatelně obtížněji, než v případě n = 1. Navíc nejsou známy metody, které vždy konvergují při řešení (1) pro n 2. V tomto textu budeme dále uvažovat pouze případ n = 2, tj. soustavu dvou nelineárních rovnic

o dvou neznámých f 1 (x, y) = 0 f 2 (x, y) = 0, (2) kde f 1, f 2 jsou reálné funkce dvou reálných proměnných x, y. V druhé části ukážeme, že i pro n = 2 je obtížné nejen určit počet řešení úlohy, ale také tyto kořeny separovat do oblastí tak, aby vhodné zvolení počáteční aproximace řešení vedlo v iterační metodě k nalezení hledaného řešení soustavy. V třetí části tohoto textu se budeme zabývat Newtonovou iterační metodou pro řešení soustav nelineárních rovnic. Popíšeme algoritmus této metody a ukážeme, jak lze Newtonovu metodu naprogramovat v systému Maple. Poznamenejme, že existují i jiné metody pro řešení soustav typu (1); některé z nich jsou modifikací zde probírané Newtonovy metody. Řešitelnost dvou nelineárních rovnic Jak obtížné je nalézt přibližnou polohu řešení soustavy nelineárních rovnic lze nejlépe demonstrovat již pro případ n = 2. Pro n > 2 by diskuse řešitelnosti soustav byla daleko obtížnější. V případě dvou nelineárních rovnic (2) si lze udělat následující geometrickou představu. Předpokládejme, že soustava (2) má jenom izolované kořeny. Funkce f 1 a f 2 jsou funkce dvou proměnných, jejichž nulové vrstevnice oddělují v R 2 oblasti, kde jsou tyto funkce kladné a kde záporné. Právě body, kde se nulová vrstevnice funkce f 1 protíná s nulovou vrstevnicí funkce f 2, jsou řešením soustavy (2). V příkladech 1-3 znázorníme nulové vrstevnice funkcí f 1 a f 2 pomocí systému Maple příkazem implicitplot z balíku plots. Přáli bychom si, obdobně jako v případě n = 1, abychom našli

takové oblasti v R 2 a v nich první přiblížení, které by zaručilo konvergenci numerické metody k řešení. Nahlédneme, že separovat průsečíky nulových vrstevnic do takových oblastí není pro n = 2 jednoduché. Příklad 1. Definujme soustavu nelineárních rovnic > f1:=x-y^2+1; > f2:=2*x^2-y-1; a nakresleme grafy příslušných nulových vrstevnic. f1 := x y 2 + 1 f2 := 2 x 2 y 1 > plots[implicitplot]({f1=0,f2=0},x=-1.5..1.5,y=-1.5..2);

2 1.5 y 1 0.5 1 0.5 0.5 1 1.5 x 0.5 1 1.5 Tato soustava má čtyři řešení, z nichž dvě jsou relativně blízko sebe, jedno je zřejmě x 1 = [0; 1].

Pro řešení jedné algebraické rovnice jsme v Maple používali příkaz fsolve (zadání ve tvaru fsolve(eqns, vars, options)). Pro soustavy dvou rovnic lze použít stejný příkaz, kde je první argument dvojice rovnic (bez nulových pravých stran). Parametr vars nemusíme zadávat, tj. ani proměnné, ani počáteční přiblížení. Následujícím příkazem dostáváme jeden z kořenů soustavy, tedy x 1 : > reseni1:=fsolve({f1,f2}); reseni1 := {x = 0.6934800000 10 24, y = 1.000000000} Další řešení se pokusíme nalézt tak, že zadáme počáteční přiblížení, které se zdá být dostatečně blízké jinému řešení. Dostáváme ale znovu první nalezené řešení: > reseni1:=fsolve({f1,f2},{x=0,y=-0.7}); reseni1 := {x = 0., y = 1.000000000} Již při drobné změně počátečního přiblížení dostaneme druhé hledané řešení x 2, které je blízké řešení prvnímu. Dále pak lze systémem Maple (máme-li štěstí při volbě počátečních přiblížení) spočítat ostatní kořeny soustavy x 3, x 4. > reseni2:=fsolve({f1,f2},{x=0,y=-0.6}); reseni2 := {x = 0.2695944364, y = 0.8546376797} > reseni3:=fsolve({f1,f2},{x=-1,y=1}); reseni3 := {x = 0.8375654353, y = 0.4030317168} > reseni4:=fsolve({f1,f2},{x=1,y=1}); reseni4 := {y = 1.451605963, x = 1.107159872}

Dalším příkladem je soustava rovnic, kterou rovněž znázorníme graficky. průsečíky dvou parabol, jako v příkladu 1. Stejně budeme hledat Příklad 2. Soustava > f1:=x-y^2; > f2:=2*x^2-2*y+1; f1 := x y 2 f2 := 2 x 2 2 y + 1 nemá řešení. Grafy nulových vrstevnic se neprotínají. > plots[implicitplot]({f1=0,f2=0},x=-1..1,y=-1..1);

1 y 0.5 0.6 0.4 0.2 0.2 0.4 0.6 0.8 1 x 0.5 1 Následujícím příkazem skutečně nedostaneme řešení soustavy. Systém Maple pouze přepíše zadání

do jiného tvaru: > reseni1:=fsolve({f1,f2}); reseni1 := fsolve({2 x 2 2 y + 1, x y 2 }, {x, y}) Poznamenejme, že systém Maple by správně nenalezl řešení ani kdybychom do příkazu zadali co nejbližší počáteční přiblížení k očekávanému řešení. V některých případech může být hranice mezi žádným řešením soustavy a právě jedním řešením zprvu nepostřehnutelná. V těchto případech je nutné provést systémem Maple detailnější graf. V dalším příkladu má soustava právě jedno řešení, ale systém Maple při hledání tohoto řešení selhává, i když volíme počáteční přiblížení dostatečně blízko hledanému řešení. Příklad 3. Soustava > f1:=x-y^2-1/4; > f2:=x^2-y+1/4; f1 := x y 2 1 4 f2 := x 2 y + 1 4 má právě jedno řešení x 1 = [0, 5; 0, 5], což lze ověřit jednoduchým dosazením nebo graficky. > plots[implicitplot]({f1=0,f2=0},x=-1..1,y=-1..1);

y 1 0.8 0.6 0.4 0.2 0.8 0.6 0.4 0.2 0 0.2 0.2 0.4 0.6 x 0.8 1 0.4 0.6 0.8 > reseni:=fsolve({f1,f2},{x=0.3,y=0.5});

reseni := fsolve({x y 2 1 4, x2 y + 1 }, {y = 0.5, x = 0.3}) 4 Maple tedy zadanou úlohu příkazem fsolve nevyřešil. V příkladech pro tento text naleznete řešení tohoto příkladu Newtonovou metodou. Newtonova metoda Nejdříve zopakujeme odvození Newtonovy iterační metody pro soustavu dvou nelineárních rovnic (2). Dále v této části ukážeme, jak postupovat pomocí systému Maple při řešení konkrétní soustavy nelineárních rovnic. Stejně jako jiné iterační metody vychází Newtonova metoda z vhodného bodu X 0 R 2, tzv. počátečního přiblížení, a sestrojuje posloupnost iterací X i, která pro i konverguje k hledanému řešení soustavy (2). Necht X 0 = [x 0, y 0 ] je počáteční přiblížení k řešení X = [x, y] soustavy (2). Položíme a budeme požadovat, aby f(x) = 0, tedy aby X = X 0 + X, tj. x = x 0 + x, y = y 0 + y, f 1 (x 0 + x, y 0 + y ) = 0 f 2 (x 0 + x, y 0 + y ) = 0. (3) Napíšeme Taylorův rozvoj pro vektorovou funkci f = (f 1, f 2 ) v okolí bodu X 0, kde se omezíme pouze na členy lineární v X. Použijeme tedy Taylorův rozvoj prvního stupně pro funkce f 1 a f 2 a dostáváme

přibližně f 1 (X 0 ) + f 1 x (X 0) x + f 1 y (X 0) y = 0 f 2 (X 0 ) + f 2 x (X 0) x + f 2 y (X 0) y = 0. Tuto soustavu lineárních algebraických rovnic pro neznámé x a y přepíšeme do tvaru f 1 (X f x 0) 1 (X y 0) x f 1 (X 0 ) =, f 2 (X f x 0) 2 (X y 0) y f 2 (X 0 ) tj. J(X 0 ) X = f(x 0 ), (5) kde J(X 0 ) je matice parciálních derivací vektorové funkce f v bodě X 0, tedy Jacobiho matice. matice J(X 0 ) regulární, má soustava (5) právě jedno řešení X. Označíme-li (4) Je-li X 1 = X 0 + X, (6) je X 1 první další přiblížení soustavy nelineárních rovnic (2). Pro výpočet další iterace, tj. další aproximace kořene soustavy (2), postupujeme stejným způsobem: považujeme X 1 za nové počáteční přiblížení a nalezneme řešení soustavy lineárních algebraických rovnic (jako v případě rovnice (5)) pro nový vektor neznámých X. Obdobně jako v (6) dostáváme další aproximaci řešení X 2 = X 1 + X. Dále ukážeme konkrétní postup při řešení soustavy nelineárních rovnic typu (2) pomocí systému Maple.

Z předchozí diskuse v tomto textu víme, že pro určení počátečního přiblížení je vhodné v systému Maple znázornit nulové vrstevnice funkcí f 1 a f 2 příkazem implicitplot. Při hledání další aproximace je numericky nejobtížnější řešit soustavu lineárních algebraických rovnic (LAR). Navíc obdobnou soustavu LAR musíme řešit opakovaně pro každou další iteraci. Mohli bychom sice (tedy zejména pro n = 2) pro výpočet řešení soustavy LAR použít Cramerova pravidla, ale výpočet determinantů vyžaduje vždy velké množství operací. Obecně je numericky výhodné řešit soustavu lineárních algebraických rovnic pomocí již osvědčených metod. Většinou se pro soustavu lineárních algebraických rovnic používá některý ze softwarových balíků s chybovým hlášením, pokud je matice soustavy blízká matici singulární. Jelikož máme k dispozici systém Maple, načteme hned na začátku příkazem with(linalg) programy umožňující řešit úlohy lineární algebry, tedy také příkazem linsolve řešit soustavu lineárních algebraických rovnic. > with(linalg): Warning, the protected names norm and trace have been redefined and unprotected Příklad 4. Je dána soustava nelineárních rovnic > f1:=x^3+y^3-8; > f2:=y*x-1; f1 := x 3 + y 3 8 f2 := y x 1 Grafy nulových vrstevnic se protínají ve dvou bodech.

> plots[implicitplot]({f1=0,f2=0},x=-5..8,y=-5..5); 4 y 2 4 2 0 2 4 x 6 8 2 4

> f := vector([f1,f2]); f := [x 3 + y 3 8, y x 1] Budeme potřebovat Jacobiho matici, tj. matici parciálních derivací vektorové funkce f. V Maplu existuje funkce jacobian pro její výpočet: > Df := jacobian(f,[x,y]); [ ] 3 x 2 3 y Df := 2 y x Pomocí obrázku znázorňující nulové vrstevnice zvolíme počáteční aproximaci jednoho z kořenů, například Aprox 0 = [1; 2]. Pro dosazení jednotlivých složek bodu Aprox 0 do Jacobiho matice Df použijeme příkazu subs. Poznamenejme, že příkaz evalm vyhodnocuje výrazy ve vektorech nebo maticích. Následujícími příkazy získáme první aproximaci kořene soustavy Aprox 1. > Aprox[0]:=[1.0,2.0]; Aprox 0 := [1.0, 2.0] > J[0]:=subs(x=Aprox[0][1],y=Aprox[0][2],evalm(Df)); [ ] 3.00 12.00 J 0 := 2.0 1.0 > F[0]:=subs(x=Aprox[0][1],y=Aprox[0][2],evalm(f)); F 0 := [1.000, 1.00]

> DX:=linsolve(J[0],-F[0]); DX := [ 0.5238095238, 0.04761904767] > Aprox[1]:=evalm(Aprox[0]+DX); Aprox 1 := [0.4761904762, 2.047619048] Další aproximace kořene bychom získali opakováním stejných příkazů, jenom s jinými hodnotami. Pro takový případ se ve všech programovacích jazycích používá příkaz cyklu. V systému Maple je rovněž možno použít příkaz cyklu, který má tvar for n from 1 to nmax do pro opakující se skupinu příkazů za výrazem do. Nejdříve se dosadí n=1 a po provedení skupiny příkazů (za příkazem do) se hodnota n zvětší o 1. Skupina příkazů se provede znovu, a to tolikrát, až n dosáhne hodnotu n=nmax, tj. celkem nmax-krát. Pokud například chceme vypočítat další tři aproximace řešení Newtonovou metodou, zvolíme nmax = 3. > nmax:=3; > for n from 1 to nmax do nmax := 3 > J[n]:=subs(x=Aprox[n][1],y=Aprox[n][2],evalm(Df)); > F[n]:=subs(x=Aprox[n][1],y=Aprox[n][2],evalm(f)); > DX:=linsolve(J[n],-F[n]); > Aprox[n+1]:= evalm(aprox[n]+dx); > end do;

[ 0.6802721088 12.57823130 J 1 := 2.047619048 0.4761904762 F 1 := [0.693121698, 0.0249433105] DX := [0.02531510182, 0.05647398579] Aprox 2 := [0.5015055780, 1.991145062] J 2 := [ 0.7545235344 11.89397597 1.991145062 0.5015055780 F 2 := [0.020343096, 0.0014296448] DX := [0.001167441817, 0.001784429226] Aprox 3 := [0.5026730198, 1.989360633] J 3 := [ 0.7580404944 11.87266718 1.989360633 0.5026730198 F 3 := [0.000021070, 0.20831 10 5 ] DX := [0.1520067082 10 5, 0.1871716950 10 5 ] Aprox 4 := [0.5026745399, 1.989358761] ] ] ] Vidíme, že se Aprox 4 liší od Aprox 3 až na pátém desetinném místě. Pro praktické účely můžeme tedy prohlásit kořen Aprox 4 za přibližný kořen soustavy. Většinou je však předem zadána přesnost ε, s jakou požadujeme kořen soustavy. Potom ukončíme proces výpočtu aproximací až tehdy, když platí

X < ε. Poznamenejme, že je vhodné použít numericky nejjednodušší normu vektoru, tedy ověřit, zda-li již platí x + y < ε. Závěrem nutno říci, že Newtonova metoda je účinná jen tehdy, pokud konverguje. Nalezení vhodného počátečního přiblížení je často obtížné, ale pokud metoda konverguje, konverguje ke kořeni soustavy. Pro soustavy nelineárních rovnic nejsou obecně známy metody, které vždy konvergují. Problém řešení soustav nelineárních rovnic je jedním z nejobtížnějších problémů v numerické matematice a v současnosti nejsou známy obecné uspokojivé postupy pro jeho řešení.