24
Numerick´ a matematika: Pracovn´ ı listy Pavel Ludv´ ık, Zuzana Mor ´ avkov´ a Katedra matematiky a deskriptivn´ ı geometrie V ˇ SB - Technick´ a univerzita Ostrava K M D G

Numericka´ matematika: Pracovn´ı listymdg.vsb.cz/portal/nm/pracovnilistyNM.pdfNumericka´ matematika Katedra matematiky a deskriptivn´ı geometrie, V SB - Technickˇ a univerzita

  • Upload
    others

  • View
    12

  • Download
    0

Embed Size (px)

Citation preview

  • Numerická matematika: Pracovnı́ listy

    Pavel Ludvı́k, Zuzana Morávková

    Katedra matematiky a deskriptivnı́ geometrie

    VŠB - Technická univerzita Ostrava

    ∮K MD G

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    1.Řy2 - Interpolace polynomy

    1 Interpolace a aproximace

    Úloha interpolace

    Jsou dány vzájemně různé uzly xi a funkčnı́ hodnoty yi, i = 0, . . . , n.Hledáme polynom splňujı́cı́ systém interpolačnı́ch rovnostı́

    pn(xi) = yi, i = 0, . . . , n ,

    tedy polynom, jehož graf budete zadanými uzly procházet.

    Existuje právě jeden interpolačnı́ polynom stupně nejvýše n. Dálepopı́šeme tři různé způsoby, jak tento polynom nalézt.

    Interpolačnı́ polynom v základnı́m tvaru

    Jsou dány vzájemně různé uzly xi a funkčnı́ hodnoty yi, i = 0, . . . , n.Dosazenı́m obecného tvaru polynomu

    pn(x) = a0 + a1x + a2x2 + · · ·+ anxn

    do interpolačnı́ch rovnostı́ dostaneme soustavu lineárnı́ch rovnic

    a0 + a1xi + a2x2i + · · ·+ anxni = yi, i = 0, . . . , n,

    kterou lze zapsat maticově jako

    1 x0 x20 . . . xn0

    1 x1 x21 . . . xn1

    1 x2 x22 . . . xn2

    ......

    ... . . ....

    1 xn x2n . . . xnn

    ·

    a0a1a2...

    an

    =

    y0y1y2...

    yn

    .

    Vyřešenı́m této soustavy lineárnı́ch rovnic nalezneme koeficientya0, a1, . . . , an ∈ R hledaného interpolačnı́ho polynomu.

    Interpolačnı́ polynom v Lagrangeově tvaru

    Interpolačnı́ polynom v Lagrangeově tvaru je určen předpisem

    p(x) = y0ϕ0(x) + y1ϕ1(x) + · · ·+ yn ϕn(x),

    kde ϕ0(x), ϕ1(x), ϕ2(x) jsou polynomy Lagrangeovy báze danéúlohy:

    ϕi(x) =(x− x0) · · · (x− xi−1)(x− xi+1) · · · (x− xn)(xi − x0) · · · (xi − xi−1)(xi − xi+1) · · · (xi − xn)

    .

    Interpolačnı́ polynom v Newtonově tvaru

    Interpolačnı́ polynom v Newtonově tvaru je určen předpisem

    p(x) =y0 + f [x1, x0](x− x0) + f [x2, x1, x0](x− x0)(x− x1)++ f [x3, x2, x1, x0](x− x0)(x− x1)(x− x2) + · · ·++ f [xn, . . . , x0](x− x0)(x− x1) · · · (x− xn−1),

    kde f [x1, x0] je poměrná diference 1. řádu., f [x2, x1, x0] je poměrnádiference 2. řádu, až f [xn, . . . , x0] je poměrná diference řádu n.

    Poměrné diference se spočtou jako

    f [x1, x0] =f (x1)− f (x0)

    x1 − x0, f [x2, x1, x0] =

    f [x2, x1]− f [x1, x0]x2 − x0

    ,

    obecně: f [xn, . . . , x0] =f [xn, . . . , x1]− f [xn−1, . . . , x0]

    xn − x0.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    2.̌Ry3 - Interpolačnı́ polynom v základnı́m tvaruPro uzly xi a funkčnı́ hodnoty yi dané následujı́cı́ tabulkou

    i=0 i=1 i=2

    xi 0 3 4yi 2 1 5

    sestavte interpolačnı́ polynom v základnı́m tvaru.

    Nejprve zadáme do vektoru x uzly xi a do vek-toru y funkčnı́ hodnoty yi.

    >> x = [0; 3; 4]>> y = [2; 1; 5]

    Koeficienty polynomu spočı́táme jako řešenı́soustavy lineárnı́ch rovnic.

    >> M = [ones(3,1) x x.ˆ2]>> a = M\y

    Koeficienty ai jsou zjevně racionálnı́ čı́sla a protosi je vypı́šeme ve tvaru zlomku.

    >> format rat>> a

    Nalezený interpolačnı́ polynom je

    p2(x) = 2−4312

    x +1312

    x2 .

    Polynom nejprve uložı́me do proměnné p2 a pakvykreslı́me jeho graf na intervalu [x0, x2] = [0, 4].

    >> plot(x,y,’o’)>> grid on, hold on>> p2 = @(x)a(1)+a(2)*x+a(3)*x.ˆ2;>> fplot(p2, [0 4], ’r’)>> legend(’uzly’,’obecny polynom’)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    3.Řy4 - Interpolačnı́ polynom v Lagrangeově tvaru

    Pro uzly xi a funkčnı́ hodnoty yi dané následujı́cı́ tabulkou

    i=0 i=1 i=2

    xi 0 3 4yi 2 1 5

    sestavte interpolačnı́ polynom v Lagrangeově tvaru.

    Zadáme uzly.

    >> x = [0; 3; 4]>> y = [2; 1; 5]

    Hledaný polynom má tvar

    p2(x) =16(x− 3)(x− 4)− 1

    3x(x− 4) + 5

    4x(x− 3) .

    Vykreslı́me zadané body a nalezený polynom.

    >> plot(x,y,’o’)>> grid on, hold on>> p = @(x) 1/6*(x-3).*(x-4)-1/3*x.*(x-4)+5/4*x.*(x-3)>> fplot(p2,[0 4], ’r’)>> legend(’uzly’,’Lagrangeuv polynom’)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    4.Řy5 - Interpolačnı́ polynom v Newtonově tvaru

    Pro uzly xi a funkčnı́ hodnoty yi dané následujı́cı́ tabulkou

    i=0 i=1 i=2

    xi 0 3 4yi 2 1 5

    sestavte interpolačnı́ polynom v Newtonově tvaru.

    Spočteme poměrné diference:

    i xi yi 1.řád 2.řád

    0 0 2 − 131312

    1 3 1 42 4 5

    Pomocı́ tučně zvýrazněných poměrných diferencı́ v prvnı́m řádku ta-bulky sestavı́me interpolačnı́ polynom:

    p2(x) = 2−13(x− 0) + 13

    12(x− 0)(x− 3) = 2− 1

    3x +

    1312

    x(x− 3) .

    Zadáme uzly.

    >> x = [0; 3; 4]>> y = [2; 1; 5]

    Vykreslı́me zadané body a nalezený polynom.

    >> plot(x,y,’o’)>> grid on, hold on>> p2 = @(x) 2-1/3*x+13/12*x*(x-3);>> fplot(p2, [0 4], ’r’)>> legend(’uzly’,’Newtonuv polynom’)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    5.Řy6 - Aproximace metodou nejmenšı́ch čtverců

    Úloha aproximace

    Jsou dány vzájemně různé uzly xi a funkčnı́ hodnoty yi, i = 1, . . . , n.Hledáme funkce splňujı́cı́

    ϕ(xi) ≈ yi, i = 0, . . . , n ,

    tedy funkci, jejı́ž graf budete procházet ,,blı́zko“ zadaných uzlů.

    Aproximace metodou nejmenšı́ch čtverců

    Necht’ jsou dány funkce ϕ1(x) a ϕ2(x). Chceme nalézt hodnotyc1, c2 ∈ R tak, aby funkce tvaru ϕ(x) = c1ϕ1(x) + c2ϕ2(x) byla nej-lepšı́ aproximacı́ dat ve smyslu nejmenšı́ch čtverců.K tomu je třeba nejprve sestavit normálnı́ rovnice. Ty majı́ tvar

    c1n

    ∑i=1

    (ϕ1(xi))2 + c2

    n

    ∑i=1

    ϕ1(xi) · ϕ2(xi) =n

    ∑i=1

    yi · ϕ1(xi),

    c1n

    ∑i=1

    ϕ2(xi) · ϕ1(xi) + c2n

    ∑i=1

    (ϕ2(xi))2 =

    n

    ∑i=1

    yi · ϕ2(xi).

    Takovou soustavu je pak snadné vyřešit a nalézt tak ty správné koe-ficienty c1, c2 ∈ R.

    Poznámka

    Budeme-li hledat přı́mku, tedy lineárnı́ funkci ϕ(x) = c1 + c2x. Pakϕ1(x) = 1, ϕ2(x) = x a soustava normálnı́ch rovnic má tvar

    c1n

    ∑i=1

    1 + c2n

    ∑i=1

    xi =n

    ∑i=1

    yi ,

    c1n

    ∑i=1

    xi + c2n

    ∑i=1

    x2i =n

    ∑i=1

    yi · xi .

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    6.̌Ry7 - Metoda nejmenšı́ch čtverců: přı́mkaAproximujte následujı́cı́ data

    i=0 i=1 i=2 i=3 i=4

    xi 2 3 5 7 8yi 5 4 4 3 0

    lineárnı́ funkcı́ϕ(x) = c1 + c2x

    metodou nejmenšı́ch čtverců.

    Nejprve zadáme data.

    >> x=[2 3 5 7 8]>> y=[5 4 4 3 0]

    Pro výpočet budeme potřebovat také maticisoustavy normálnı́ch rovnic G a vektor pravéstrany d.

    >> G(1,1) = 5>> G(1,2) = sum(x)>> G(2,1) = sum(x)>> G(2,2) = sum(x.ˆ2)>> d(1,1) = sum(y)>> d(2,1) = sum(x.*y)

    Soustavu normálnı́ch rovnic vyřešı́me.

    >> c = G\d

    Hledaná aproximace nejlepšı́ ve smyslunejmenšı́ch čtverců má tedy tvar (koeficientyzaokrouhlujeme na čtyři desetinná mı́sta)

    ϕ(x) = 6.46923− 0.65385 x .

    Zı́skanou aproximaci nynı́ uložı́me doproměnné f.

    >> f = @(x) c(1)+c(2)*x

    a vykreslı́me jejı́ graf společně se znázorněnı́mzadaných bodů.

    >> plot(x,y,’o’)>> grid on, hold on>> fplot(f,[2 8],’r’)>> legend(’zadana data’,’primka’)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    7.̌Ry8 - Metoda nejmenšı́ch čtvercůAproximujte následujı́cı́ data

    xi -5.5 -4.1 -3.5 1.3 2.6 3.5 5.8 7.3 10.6 14.9yi -34 -11 12 26 -15 -19 25 41 -27 -17

    funkcı́ϕ(x) = c1 cos(x) + c2

    1ex

    metodou nejmenšı́ch čtverců.

    Nejprve zadáme data.

    >> x = [-5.5 -4.1 -3.5 1.3 2.6 3.5 5.8 7.3 10.6 14.9]>> y = [-34 -11 12 26 -15 -19 25 41 -27 -17]

    Následně definujeme funkce ϕ1(x) = cos x a ϕ2(x) = 1ex podproměnnými f1, f2.

    >> f1 = @(x)cos(x)>> f2 = @(x)1./exp(x)

    Pro výpočet budeme potřebovat také matici soustavy normálnı́chrovnic G a vektor pravé strany d.

    >> G(1,1) = sum(f1(x).ˆ2)>> G(1,2) = sum(f1(x).*f2(x))>> G(2,1) = sum(f2(x).*f1(x))>> G(2,2) = sum(f2(x).ˆ2)>> d(1,1) = sum(f1(x).*y)>> d(2,1) = sum(f2(x).*y)

    Soustavu normálnı́ch rovnic vyřešı́me.

    >> c = G\d

    Hledaná aproximace nejlepšı́ ve smyslu nejmenšı́ch čtverců je

    ϕ(x) = 18.1137 cos x− 0.1630 1ex

    .

    Zı́skanou aproximaci nynı́ uložı́me do proměnné f

    >> f = @(x)c(1)*f1(x)+c(2)*f2(x)

    a vykreslı́me jejı́ graf společně se znázorněnı́m zadaných bodů.

    >> plot(x,y,’o’)>> grid on, hold on>> fplot(f,[-5.5 14.9],’g’)>> legend(’zadana data’,’nalezena funkce’)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    8.Řy9 - Nelineárnı́ rovnice

    2 Nelineárnı́ rovnice

    Nelineárnı́ rovnice

    Je dána spojitá funkce f (x). Hledáme x ∈ R, které je řešenı́m rovnice

    f (x) = 0.

    Separace kořenů

    Grafická separace: Z grafu funkce f najdeme polohu průsečı́ků s x-ovou osou.Separace tabelacı́: Sestavı́me tabulku funkčnı́ch hodnot funkce f apodle znaménkových změn určı́me intervaly obsahujı́cı́ kořeny.

    Metoda půlenı́ intervalu

    Bod xk určı́me jako střed intervalu 〈ak, bk〉 podle vzorce

    xk =ak + bk

    2.

    Dalšı́ interval zvolı́me podle znamének funkčnı́ch hodnot f (ak),f (xk), f (bk).

    Je-li f (ak) f (xk) < 0, potom ak+1 := ak, bk+1 := xk;

    A je-li f (xk) f (bk) < 0, potom ak+1 := xk, bk+1 := bk;

    Intervaly tedy postupně půlı́me a jejich středy tvořı́cı́ posloupnost{xk} konvergujı́ ke kořenu x̄. Výpočet ukončı́me při dosaženı́ zadanépřesnosti ε, tj. když platı́

    bk − ak2

    ≤ ε

    a poslednı́ střed xk je pak aproximacı́ kořene x̄ s přesnostı́ ε.

    Newtonova metoda

    Necht’ jsou splněny následujı́cı́ předpoklady:

    1. f ′ neměnı́ znaménko na intervalu 〈a, b〉;

    2. f ′′ neměnı́ znaménko na intervalu 〈a, b〉;

    3. platı́ f (a) · f (b) < 0;

    4. platı́∣∣∣ f (a)f ′(a)

    ∣∣∣ < b− a a∣∣∣ f (b)f ′(b)

    ∣∣∣ < b− a.

    Potom posloupnost {xk} počı́taná podle vzorce

    xk+1 = xk − f (xk)

    f ′(xk)

    konverguje pro libovolnou počátečnı́ aproximaci x1 ∈ 〈a, b〉.Výpočet ukončı́me při dosaženı́ zadané přesnosti ε, tj. když platı́

    |xk − xk+1| ≤ ε ..

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    9.̌Ry10 - Metoda půlenı́ intervaluUrčete všechny kořeny rovnice

    2x + 2− ex = 0

    s přesnostı́ ε = 10−2 metodou půlenı́ intervalu.

    Provedeme separaci kořenů.Zadáme funkci a vykreslı́me jejı́graf.

    >> f = @(x)2*x+2-exp(x)>> fplot(f, [-5,5])>> grid on

    Do proměnných a1 a b1 zadámemeze intervalu, které jsme zjistiliseparacı́. V těchto bodech zjistı́mefunkčnı́ hodnoty.

    >> a1 = -1>> b1 = 0>> f(a1)>> f(b1)

    Spočı́táme x1 jako polovinu in-tervalu (a1, b1) a v tomto boděspočı́táme funkčnı́ hodnotu.

    >> x1 = (a1+b1)/2>> f(x1)

    Spočı́táme chybu výpočtu, apokud je většı́ než ε, výpočetpokračuje dál.

    >> Chyba = abs(b1-a1)/2

    Podle znamének f (a1), f (x1),f (b1) určı́me nový interval (a2, b2).

    >> a2 = a1>> b2 = x1

    Spočı́táme x2 jako polovinu in-tervalu (a2, b2) a v tomto boděspočı́táme funkčnı́ hodnotu.Spočı́táme chybu výpočtu, apokud je většı́ než ε, výpočetpokračuje dál.

    >> x2 = (a2+b2)/2>> f(x2)>> Chyba = abs(b2-a2)/2

    Podle znamének f (a2), f (x2),f (b2) určı́me nový interval (a3, b3).

    >> a3 = a2>> b3 = x2

    Spočı́táme x3 jako polovinu in-tervalu (a3, b3) a v tomto boděspočı́táme funkčnı́ hodnotu.Spočı́táme chybu výpočtu, apokud je většı́ než ε, výpočetpokračuje dál.

    >> x3 = (a3+b3)/2>> f(x3)>> Chyba = abs(b3-a3)/2

    Podle znamének f (a3), f (x3),f (b3) určı́me nový interval (a4, b4).

    >> a4 = x3>> b4 = b3

    Výpočet pokračuje dál, pokud jechyba většı́ než ε.

    Kořen je −0.77 ± 10−2. Ostatnı́kořeny se spočtou analogicky.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    10.̌Ry11 - Newtonova metodaUrčete všechny kořeny rovnice

    x− 4 cos2(x) = 0

    s přesnostı́ ε = 10−8 Newtonovou metodou.

    Provedeme separaci kořenů.

    >> f = @(x)x-4*cos(x).ˆ2>> fplot(f, [-5,5])>> grid on

    Zadáme meze nalezeného intervalu.

    >> a = 3>> b = 4

    Zadáme prvnı́ a druhou derivaci.

    >> df = @(x)1+8*cos(x).*sin(x)>> ddf = @(x)-8*sin(x).ˆ2+8*cos(x).ˆ2

    Ověřı́me předpoklady.

    >> x = a:0.1:b>> df(x)>> ddf(x)>> f(a)*f(b)>> abs(f(a)/df(a))>> abs(f(b)/df(b))

    Předpoklady nejsou splněny, a takje potřeba nalézt menšı́ interval,ve kterém ležı́ kořen. Pak ověřı́mepředpoklady znovu.

    >> fplot(f,[3,4])>> a = 3.4>> b = 3.6>> x = a:0.01:b;>> df(x)>> ddf(x)>> f(a)*f(b)>> abs(f(a)/df(a))>> abs(f(b)/df(b))

    Zadáme počátečnı́ aproximaci.

    >> format long>> x0 = a

    Vypočı́táme dalšı́ aproximaci achybu, a pokud nenı́ menšı́ než ε,výpočet pokračuje dál.

    >> x1 = x0-f(x0)/df(x0)>> Chyba = abs(x0-x1)

    Vypočı́táme dalšı́ aproximaci achybu, a pokud nenı́ menšı́ než ε,výpočet pokračuje dál.

    >> x2 = x1-f(x1)/df(x1)>> Chyba = abs(x1-x2)

    Výpočet pokračuje dál, dokudchyba nenı́ menšı́ než ε.

    Kořen je 3.50214739± 10−8.Ostatnı́ kořeny spočı́táme ob-dobným způsobem.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    11.Řy12 - Soustavy lineárnı́ch rovnic: iteračnı́ metody

    3 Soustavy lineárnı́ch rovnic: iteračnı́ me-tody

    Soustava lineárnı́ch rovnic

    Je dána soustava lineárnı́ch rovnic

    A · x = b

    s regulárnı́ čtvercovou maticı́ A. Pak má soustava lineárnı́ch rovnicprávě jedno řešenı́ x.

    Konvergenčnı́ kritérium

    Soustavu lineárnı́ch rovnic A · x = b upravı́me pomocı́ řádkově ekvi-valentnı́ch úprav na tvar s ostře diagonálnı́ maticı́.Poté soustavu přepı́šeme do iteračnı́ho tvaru

    x = C · x + d .

    Jacobiho metoda

    Necht’ x(0) je daná počátečnı́ aproximace. Iteračnı́ výpočet provádı́mepodle rekurentnı́ho vzorce

    x(k+1) = C · x(k) + d, k = 0, 1, 2, . . . .

    Rozepı́šeme maticové násobenı́ po prvcı́ch

    x(k+1)i =n

    ∑j=1

    cijx(k)j + di, i = 1, . . . , n k = 0, 1, 2, . . . .

    Jestliže posloupnost vektorů {xk} konverguje k vektoru x, pak x jeřešenı́m x = C · x + d a tedy i A · x = b.Vektor x(0) můžeme zvolit libovolně. Výpočet ukončı́me, jestliže jesplněno ukončovacı́ kritérium

    ‖x(k+1) − x(k)‖ ≤ ε,

    kde ε > 0 je dané malé čı́slo a ‖ · ‖ je řádková norma.

    Gaussova-Seidelova metoda

    Necht’ x(0) je daná počátečnı́ aproximace. Iteračnı́ výpočet provádı́mepodle rekurentnı́ho vzorce

    x(k+1)i =i−1∑j=1

    cijx(k+1)j +

    n

    ∑j=i+1

    cijx(k)j + di, i = 1, . . . , n

    Vektor x(0) můžeme zvolit libovolně. Výpočet ukončı́me, jestliže jesplněno ukončovacı́ kritérium

    ‖x(k+1) − x(k)‖ ≤ ε.

    .

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    12.̌Ry13 - Jacobiho metodaVyřešte soustavu lineárnı́ch rovnic

    −x1 −6x2 +7x3 = 16,4x1 −5x2 +3x3 = 8,3x1 −x2 +x3 = 11

    pomocı́ Jacobiho iteračnı́ metody s přesnostı́ ε = 10−2.

    Jedna z možných úprav na soustavu s ostře dia-gonálně dominantnı́ maticı́.

    3 −1 11 −4 2−2 −2 5

    · x =

    11−319

    Rekurentnı́ vzorce napı́šeme v maticové formě adefinujeme matici C a vektor d.

    x(k+1) =

    0 13 −13

    14 0

    12

    25

    25 0

    · x(k)+

    11334195

    = C · x(k)+d

    Začneme definicı́ potřebných objektů.

    >> C = [0 1/3 -1/3;1/4 0 1/2;2/5 2/5 0]>> d = [11/3;3/4;19/5]>> x = [0;0;0]

    Výpočet nového vektoru, chyby a uloženı́nového vektoru do proměnné xnovy provádı́mezde:

    >> xnovy = C*x+d>> Chyba = max(abs(xnovy-x))>> x = xnovy

    Předchozı́ tři přı́kazy opakujeme, dokud chybabude většı́ než 10−2.

    Hodnoty zaokrouhlı́me na 2 desetinná mı́sta ařešenı́ zapı́šeme jako

    x1 = 3± 10−2, x2 = 5± 10−2, x3 = 7± 10−2.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    13.̌Ry14 - Gaussova-Seidelova metodaVyřešte soustavu lineárnı́ch rovnic

    −x1 −6x2 +7x3 = 16,4x1 −5x2 +3x3 = 8,3x1 −x2 +x3 = 11

    pomocı́ Jacobiho iteračnı́ metody s přesnostı́ ε = 10−2.

    Jedna z možných úprav na soustavu s ostře diagonálně do-minantnı́ maticı́.

    3 −1 11 −4 2−2 −2 5

    · x =

    11−319

    Soustavu přepı́šeme do poboby, která se nám hodila již u Ja-cobiho metody a definujeme matici C a vektor d.

    x =

    0 13 −13

    14 0

    12

    25

    25 0

    · x +

    11334

    195

    = C · x + d

    U Gaussovy-Seidelovy metody jsou rekurentnı́ rovnice jinéa v maticové podobě si je nebudeme uvádět. Spokojı́me se sfaktem, že na rozdı́l od Jacobiho metody se užı́vajı́ nejnovějšı́hodnoty aproximacı́, které jsou k dispozici. Začneme definicı́potřebných objektů.

    >> C = [0 1/3 -1/3;1/4 0 1/2;2/5 2/5 0]>> d = [11/3;3/4;19/5]>> x = [0;0;0]

    Z technických důvodů inicializujeme proměnnou xnovyhodnotou proměnné x.

    >> xnovy = x

    Výpočet nového vektoru, chyby a uloženı́ nového vektorudo proměnné xnovy provádı́me zde:

    >> for i=1:3, xnovy(i)=C(i,:)*xnovy+d(i), end>> Chyba = max(abs(xnovy-x))>> x = xnovy

    Tyto přı́kazy opakujeme, dokud nenı́ chyba menšı́ než 10−2.Hodnoty zaokrouhlı́me na dvě desetinná mı́sta a řešenı́zapı́šeme jako x1 = 3± 10−2, x2 = 5± 10−2, x3 = 7± 10−2.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    14.Řy15 - Numerické integrovánı́

    4 Numerické integrovánı́

    Určitý integrál

    Počı́táme hodnotu určitého integrálu

    ∫ b

    af (x) dx.

    Integračnı́ formule

    Jednoduchá lichoběžnı́ková formuleFunkci f interpolujeme lineárnı́ funkci. Po jejı́ integraci je

    ∫ b

    af (x) dx ≈ b− a

    2( f (a) + f (b)) .

    Jednoduchá Simpsonova formuleFunkci f interpolujeme kvadratickou funkci v uzlech a x0 = a, x1 =a+b

    2 , x2 = b. Dostáváme

    ∫ b

    af (x) dx ≈ b− a

    6

    (f (a) + 4 f

    (a + b

    2

    )+ f (b)

    ).

    Složená lichoběžnı́ková formule

    Chceme-li integrovat funkci f na intervalu 〈a, b〉 složenou li-choběžnı́kovou formulı́, musı́me nejprve zadaný interval rozdělit nan ∈ N stejně dlouhých dı́lků. Dı́lky pak budou mı́t velikost h =(b − a)/n a dostaneme uzly xi = a + ih, i = 0, 1, . . . , n. Složená li-choběžnı́ková formule pro krok h pak má tvar

    Ih =h2

    [f (x0) + 2

    n−1∑i=1

    f (xi) + f (xn)

    ].

    Složená Simpsonova formule

    Chceme-li integrovat funkci f na intervalu 〈a, b〉 složenou Simpso-novou formulı́, musı́me nejprve zadaný interval rozdělit na n stejnědlouhých dı́lků, kde n ∈ N je sudé. Dı́lky pak budou mı́t velikosth = (b− a)/n a dostaneme lichý počet uzlů xi = a+ ih, i = 0, 1, . . . , n.Složená Simpsonova formule pro krok h pak má tvar

    Ih =h3

    [f (x0) + 4

    n/2

    ∑i=1

    f (x2i−1) + 2n/2−1∑i=1

    f (x2i) + f (xn)

    ].

    Výpočet integrálu se zadanou přesnostı́

    Spočı́táme hodnotu pomocı́ integračnı́ formule pro krok h tj. Ih.Dále spočı́táme hodnotu pro polovičnı́ krok h/2, tj. Ih/2. Výpočetukončı́me, pokud platı́

    |Ih − Ih/2| ≤ ε.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    15.̌Ry16 - Složená lichoběžnı́ková formuleVypočtěte integrál ∫ 3

    −1ex

    2dx

    složenou lichoběžnı́kovou formulı́ pro n = 8.

    Nejprve definujeme funkci f a integračnı́ meze uložı́medo proměnných a, b.

    >> f = @(x)exp(x.ˆ2);>> a = -1;>> b = 3;

    Zadáme n = 8 a spočı́táme velikost kroku h. Uzly uložı́mejako vektor do proměnné x.

    >> n = 8;>> h = (b-a)/n;>> x = a:h:b;

    Numerickou hodnotu integrálu spočteme a uložı́me doproměnné I.

    >> I=h/2*(f(x(1))+2*sum(f(x(2:n)))+f(x(n+1)))

    Integrál má hodnotu 2320.64.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    16.Řy17 - Složená Simpsonova formule

    Vypočtěte integrál∫ e

    1

    ln x√9− x2

    dx

    složenou Simpsonovou formulı́ sezadanou přesnostı́ ε = 10−8.

    Nejprve definujeme funkci f a integračnı́ meze uložı́me do proměnných a, b.

    >> f = @(x)log(x)./sqrt(9-x.ˆ2);>> a = 1;>> b = exp(1);

    V prvnı́m kroku zvolı́me n = 2. Uzly uložı́me jako vektor do proměnné x.

    >> n = 2;>> h = (b-a)/n;>> x = a:h:b;

    Numerickou hodnotu integrálu spočteme a uložı́me do proměnné Inovy.

    >> Inovy = h/3*(f(x(1))+4*sum(f(x(2:2:n)))+2*sum(f(x(3:2:n)))+f(x(n+1)))

    Spočtenou hodnotu integrálu pouze uložı́me do proměnné I. Pak zdvojnásobı́me hodnotu n a celývýpočet zopakujeme. Nakonec spočteme chybu |Ih − I2h|

    >> I = Inovy;>> n = 2*n>> h = (b-a)/n>> x = a:h:b;>> Inovy = h/3*(f(x(1))+4*sum(f(x(2:2:n)))+2*sum(f(x(3:2:n)))+f(x(n+1)))>> Chyba = abs(Inovy-I)

    Předchozı́ch šest přı́kazů budeme opakovat, dokud bude chyba většı́ než 10−8.Protože cı́lı́me na přesnost 10−8, nebudou nám samozřejmě stačit čtyři desetinná mı́sta, která MATLABzobrazuje při formátu short. Je třeba přepnout formát výstupu na long.

    >> format long

    Výsledek zaokrouhlı́me na osm desetinných mı́st a zapı́šeme jako∫ e

    1

    ln x√9− x2

    dx = 0.50661191± 10−8.

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    17.Řy18 - Počátečnı́ úlohy pro ODR

    5 Počátečnı́ úlohy pro ODR

    Počátečnı́ úloha pro obyčejnou diferenciálnı́ rovnici

    Hledáme funkci y = y(x), která na intervalu 〈a, b〉 vyhovuje rovnici

    y′(x) = f (x, y(x))

    a počátečnı́ podmı́ncey(a) = c.

    Eulerova metoda

    Interval 〈a, b〉 rozdělı́me na ekvidistantnı́ uzly s krokem h:

    xi = a + ih , i = 0, 1, . . . , n ,

    kde n = b−ah .Pak spočı́táme čı́sla y0 = c, y1, y2, . . . , yn, která aproximujı́ hodnotypřesného řešenı́ y(x0), y(x1), y(x2), . . . , y(xn):

    y0 = c,yi+1 = yi + h f (xi, yi), i = 0, 1, . . . , n− 1.

    Rungeova-Kuttova metoda

    Interval 〈a, b〉 rozdělı́me na ekvidistantnı́ uzly s krokem h:Rungeova-Kuttova metoda

    xi = a + ih , i = 0, 1, . . . , n ,

    kde n = b−ah . Pak spočı́táme čı́sla y0 = c, y1, y2, . . . , yn, která aproxi-mujı́ hodnoty přesného řešenı́ y(x0), y(x1), y(x2), . . . , y(xn):

    y0 = c,

    pro i = 0, 1, . . . , n− 1 počı́táme hodnotu yi+1 pomocı́ vzorce

    yi+1 = yi + 16(k1 + 2k2 + 2k3 + k4),k1 = h f (xi, yi),

    k2 = h f (xi + h2 , yi +k12 ),

    k3 = h f (xi + h2 , yi +k22 ),

    k4 = h f (xi+1, yi + k3).

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    18.̌Ry19 - Eulerova metodaPočátečnı́ úlohu

    y′ = y− x2 + 2, y(0) = −1 ,řešte na intervalu 〈0, 2〉 pomocı́ Eulerovy metody s krokem h = 0.5.

    Zadáme krajnı́ meze intervalu 〈a, b〉, hodnotu počátečnı́podmı́nky c a funkci pravé strany diferenciálnı́ rovnice f .

    >> a = 0;>> b = 2;>> c = -1;>> f = @(x,y)y-x.ˆ2+2;

    Zadáme velikost kroku h a vypočı́táme počet dı́lů dělenı́n = b−ah .

    >> h = 0.5;>> n = (b-a)/h;

    Pomocı́ dvojtečkové konvence vypočı́táme hodnoty xi = a + ihpro i = 0, . . . , n.

    >> x = a:h:b;

    Zadáme hodnotu y0 a spočı́táme ostatnı́ hodnoty y.Připomeňme, že v MATLABu se indexuje od 1, tedy hodnotyy0, y1, . . . , yn se uložı́ do proměnných y(1), y(2), . . ., y(n+1).

    >> y(1) = c;>> for i=1:n, y(i+1)=y(i)+h*f(x(i),y(i)); end

    Hodnoty numerického řešenı́ vypı́šeme do tabulky a vy-kreslı́me do grafu.

    >> [x;y]>> plot(x,y)

    Nalezené numerické řešenı́ diferenciálnı́ rovnice je

    xi 0 0.5 1 1.5 2

    yi -1 -0.5 0.125 0.6875 0.9063

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    19.̌Ry20 - Rungeova-Kuttova metodaPočátečnı́ úlohu

    y′ = sin(x) + cos(3y), y(−1) = 1 ,řešte na intervalu 〈−1, 4〉 pomocı́ Rungeovy-Kuttovy metody s krokem h = 1.

    Zadáme krajnı́ meze intervalu 〈a, b〉, hodnotu počátečnı́podmı́nky c a funkci pravé strany diferenciálnı́ rovnice f .

    >> a = -1;>> b = 4;>> c = 1;>> f = @(x,y)sin(x)+cos(3*y);

    Zadáme velikost kroku h a vypočı́táme počet dělenı́ n = b−ah .

    >> h=1;>> n=(b-a)/h;

    Pomocı́ dvojtečkové konvence vypočı́táme hodnoty xi.

    >> x=a:h:b;

    Zadáme hodnotu prvnı́ hodnotu y0 a spočı́táme ostatnı́ hod-noty y. V každém kroku se počı́tajı́ hodnoty k1, k2, k3, k4 a yi+1.

    >> y(1) = c;>> for i=1:n,

    k1 = h*f(x(i),y(i));k2 = h*f(x(i)+h/2,y(i)+k1/2);k3 = h*f(x(i)+h/2,y(i)+k2/2);k4 = h*f(x(i+1),y(i)+k3);y(i+1) = y(i)+1/6*(k1+2*k2+2*k3+k4);

    end

    Hodnoty numerického řešenı́ vypı́šeme do tabulky a vy-kreslı́me do grafu.

    >> [x;y]>> plot(x,y)

    Nalezené numerické řešenı́ diferenciálnı́ rovnice je

    xi -1 0 1 2 3 4

    yi 1 0.5210 0.8468 0.9223 0.6741 0.3465

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    20.Řy21 - MATLAB operace a funkce

    Operace

    sčı́tánı́ +odčı́tánı́ -násobenı́ *dělenı́ /mocnina ∧závorky ( )

    Priorita operacı́priorita operace

    1. ∧2. * /3. + -

    Matematické funkce

    absolutnı́ hodnota |x| abs( )druhá odmocnina

    √x sqrt( )

    exponenciálnı́ funkce ex exp( )přirozený logaritmus ln(x) log( )dekadický logaritmus log(x) log10( )sinus sin(x) sin( )kosinus cos(x) cos( )tangens tg(x) tan( )kotangens cotg(x) cot()arkussinus arcsin(x) asin( )arkuskosinus arccos(x) acos( )arkustangens arctg(x) atan( )arkuskotangens arctg(x) acot( )

    Konstanty

    Ludolfovo čı́slo π = 3.14 . . . pinekonečno ∞ infneurčitý výraz NaN

    Definice vlastnı́ matematické funkce

    f=@(proměnné)předpis funkcef=@(x)sin(x)-3*x

    Méně použı́vané funkce

    signum sign( )logaritmus o základu 2 log2( )hyperbolický sinus sinh( )hyperbolický kosinus cosh( )hyperbolický tangens tanh( )hyperbolický kotangens coth( )

    Zaokrouhlovánı́

    zaokrouhlovánı́ na celé čı́slo round( )zaokrouhlovánı́ na nejbližšı́ nižšı́ celé čı́slo (dolů) floor( )zaokrouhlovánı́ na nejbližšı́ vyššı́ celé čı́slo (nahoru) ceil( )zaokrouhlovánı́ na nejbližšı́ celé čı́slo směrem k nule fix( )

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    21.Řy22 - MATLAB matice a vektory

    Vektory a matice

    A(3,2) prvek a3,2 matice AA(3,:) třetı́ řádek matice AA(:,2) druh sloupec matice A

    Základnı́ informace o matici, vektoru

    rozměr matice A (počet řádků , počet sloupců) size(A)počet prvků matice A numel(Apočet prvků vektoru ~v length(v)

    Přı́kazy lineárnı́ algebry

    determinant matice A det(A)hodnost matice A rank(A)inverznı́ matice A−1 inv(A)převedenı́ matice A na hornı́ trojúhelnı́kový tvar rref(A)pomocı́ eliminacetransponovaná atice k matici A A’

    Dalšı́ operace pro matice

    matice typu m× n náhodných čı́sel z intervalu 〈0, 1〉 rand(m,n)matice nul typu m× n zeros(m,n)matice jedniček typu m× n ones(m,n)jednotková matice typu m× n eyes(m,n)součet prvků ve sloupcı́ch matice A sum(A)součin prvků ve sloupcı́ch matice A prod(A)největšı́ hodnota ve sloupcı́ch matice A max(A)nejmenšı́ hodnota ve sloupcı́ch matice A min(A)

    Maticové operace

    součet matic +(např. A+B je matice s prvky aij + bij)rozdı́l matic -(např. A-B je matice s prvky aij − bij)součin matic *,,řádek krát sloupec“pravé maticové dělenı́ /(např. A/B je matice A · B−1)levé maticové dělenı́ \(např. A\B je matice A−1 · B)mocnina matic ∧(např. A∧k je A · A · . . . · A (k-krát )

    Operace ,,prvek po prvku“

    součin matic ,,prvek po prvku“ .*(např. A.*B je matice s prvky aijbij)pravé dělenı́ ,,prvek po prvku“ ./(např. A./B je matice s prvky aij/bij)levé dělenı́ ,,prvek po prvku“ .\(např. A.\B je matice s prvky bij/aij)mocnina .∧(např. A.∧k je matice s prvky (aij)k)

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    22.Řy23 - MATLAB programovánı́

    Programovánı́

    záhlavı́ funkce

    function [výstupy ] = jméno (vstupy)

    rozhodovacı́ blok

    if podmı́nka 1blok přı́kazů

    end

    rozhodovacı́ blok

    if podmı́nka 1blok přı́kazů

    elseif podmı́nka 2blok přı́kazů

    . . .else

    blok přı́kazů end

    cyklus se známým počtem opakovánı́

    for rozsah hodnotblok přı́kazů end

    cyklus s podmı́nkou

    while podmı́nkablok přı́kazů end

    Relačnı́ operátory

    je rovno = ==nenı́ ovno 6= ∼=je menšı́ < <je většı́ > >je menšı́ nebo rovno ≤ =

    Logické operátory

    a (konjunkce) ∧ and(a,b) nebo a & bnebo (disjunkce) ∨ or(a,b) nebo a | bnegace ¬ not(a) nebo ∼a

  • Numerická matematika Katedra matematiky a deskriptivnı́ geometrie, VŠB - Technická univerzita Ostrava

    23.Řy24 - MATLAB grafy a jiné

    Grafy, ostatnı́ přı́kazy

    plot(x,y)plot(x,y,’specifikace’)fplot(funkce,[a,b])

    Specifikace grafu

    Barvy Symboly Typy čar

    b modrá . tečky - plnág zelená o kroužky : tečkovanár červená x křı́žky × -. čerchovanác světle modrá + křı́žky + -- tečkovanám fialová * hvězdyy žlutá s čtvercek černá d kosočtverce

    v trojúhelnı́ky (dolu)∧ trojúhelnı́ky (nahoru)< trojúhelnı́ky (vlevo)> trojúhelnı́ky (vpravo)p pěticı́pé hvězdyh šesticı́pé hvězdy

    Úprava grafu

    rozsah os axis([ , , , ])poměr os 1:1 axis equalnadpis obrázku title(’text’)popis x-ové osy xlabel(’text’)popis y-ové osy ylabel(’text’)legenda legend(’text1’,’text2’,. . .)zobrazenı́ mřı́žky do grafu grid onvı́ce grafů jednoho obrázku hold on

    Přı́kazy pro práci s proměnnými, programem

    smazánı́ proměnných clearzavřenı́ okna s obrázkem closesmazánı́ obrazovky clculoženı́ textu z command window diary ’soubor.txt’seznam proměnných whoseznam proměnných s informacemi whosformát výpisu dlouhý format longformát výpisu krátký format shortformát výpisu ve zlomku format rat

    Interpolace a aproximaceInterpolační polynom v základním tvaruMetoda nejmenších čtverců: přímkaMetoda nejmenších čtvercůNelineární rovniceMetoda půlení intervaluNewtonova metodaSoustavy lineárních rovnic: iterační metodyJacobiho metodaGaussova-Seidelova metodaNumerické integrováníSložená lichoběžníková formulePočáteční úlohy pro ODREulerova metodaRungeova-Kuttova metoda