5.vaja

Vektorji

Vektor v Mathematici zapišemo kot seznam njegovih komponent v zavitih oklepajih. Vektorje lahko med seboj seštevamo, odštevamo,množimo s skalarjem ter  skalarno in vektorsko množimo. Skalarni produkt  vektorjev a in b označimo z decimalno piko (a.b), vektorski produkt pa z ukazom Cross[a,b].

1.a) Dani so vektorji a = (2, 1, 4) , b = (1, 0, -1) in c = (3, -2, 1). 
  Izračunaj a b in a.b. Kaj opaziš?

a = {2, 1, 4}
b = {1, 0, -1} 
 c = {3, -2, 1}

a b

a . b

1.b) Izračunaj (2a+b).c in a×b.

(2 a + b) . c

Cross[a, b]

2. Izračunaj razdaljo med točkama A (-4, -1, 5) in B (2, 1, 8).

dolzina[v_] := Sqrt[v . v]

dolzina[{-4, -1, 5} - {2, 1, 
          8}]

3. Določi število y tako, da bosta vektorja a = (3, y, -2) in b = (-2, -1, -4) pravokotna.

Solve[{3, 
            y, -2} . {-2, -1, -4} == 0, 
      y]

4. Izračunaj ploščino trikotnika z oglišči A(1, 1, 1), B(2, -3, 4) in C(2, -2, 1).

a = {1, 1, 1}
b = {2, -3, 4}
c = {2, -2, 1}

1/2 dolzina[ Cross[b - a, c - a]]

Afine množice

5. Afino množico, podano s sistemom linearnih enačb,  zapišite parametrično. Katera afina množica je to?
       x + y + 2z + 3w = 13
          x - 2y + z + w = 8
         3x + y + z - w = 1

Solve[{x + y + 2  z + 3  w == 13, 
        x - 2  y + z + w == 8, 3  x + y + z - w == 1}, {x, y, z, 
        w}]

6. Afino množico, podano s sistemom linearnih enačb, zapiši parametrično. Katera afina množica je to?
3x + 4y + z + 2w = 3
6x + 8y + 2z + 5w = 7
9x +12 y + 3z + 10w = 13

Solve[{3  x + 4  y + z + 2  w == 3, 
        6  x + 8  y + 2  z + 5  w == 7, 
        9  x + 12 y + 3  z + 10  w == 13}, {x, y, z, 
        w}]

7. Poišči pravokotno projekcijo točke P(-1,2,5) na ravnino, ki je podana  parametrično z enačbo r = (0, 2, -1) + t(3, 2, 3) + s(-2, 4, 5).

Veljati mora: (r - p).(3, 2, 3) = 0 in (r - p).(-2, 4, 5) = 0. Ko rešimo enačbi, dobimo s in t. To vstavimo v enačbo ravnine in dobimo koordinate točke, ki je pravokotna projekcija točke P na dano ravnino.

<< Graphics`Colors`

slika = 
      Graphics[{Gray, Polygon[{{0, 0}, {12, 0}, {16, 4}, {4, 4}}], Black, 
          PointSize[0.02], Point[{7.5, 8}], Dashing[{0.01}], 
          Line[{{7.5, 8}, {7.5, 2}}], PointSize[0.02], Point[{7.5, 2}]}, 
        Axes -> False, AspectRatio -> Automatic, 
        Prolog -> {Text[
              StyleForm["P", FontSize -> 16, 
                FontWeight -> "Bold"], {8, 7.8}]}]

Show[slika]

\(\(\(
\)\(Clear[t, u, v, p, r, s]

    p = {\(-1\), 2, 5}

    r0 = {0, 2, \(-1\)}

    u = {3, 2, 3}

    v = {\(-2\), 4, 5}

    r = r0 + t\ u + s\ v\)\)\)

Solve[{(r - p) . u == 
          0, (r - p) . v == 0}, {t, s}]

r /. %

Matrike in determinante

Za delo z matrikami najprej naložimo paket <<LinearAlgebra`MatrixManipulation`.

<< LinearAlgebra`MatrixManipulation`

Matriko v Mathematici podamo kot seznam vrstic, vsaka vrstica pa je seznam njenih elementov. Npr. Matriko M=(({{1, 2}, {3, 4}})) bi zapisali kot M={{1,2},{3,4}}.

8.  Definiraj matriko A=(({{-1, -3, 2, 6}, {3, 7, -8, 4}, {2, 2, -2, 2}, {1, 3, 1, -3}, {0, 4, 0, 5}})) ter seštej elementa, \(ki\ se\ nahajta\ v\ tretji\ vrstici\ in\ drugem\ stolpcu\ ter\ v\ četrti\ vrstici\ in\ v\ tretjem\ stolpcu . \ 
          Matriko\ tudi\ izpiši\ v\ matrični\ \(\(obliki\)\(.\)\(\ \)\)\)

A = {{-1, -3, 2, 6}, {3, 7, -8, 
          4}, {2, 2, -2, 2}, {1, 3, 1, -3}, {0, 4, 0, 
          5}}

Element matrike A, ki se nahaja v i- ti vrstici in j-tem stolpcu poiščemo takole:
A[[i,j]]. Matriko izpišemo v matrični obliki z ukazom MatrixForm.

A[[3, 2]] + A[[4, 3]]

MatrixForm[A]

9.  Definiraj matriki A=(({{-1, 4, 1}, {1, 9, -2}, {6, 4, -8}})) in B=(({{1, -2, 5}, {4, -5, 8}, {-3, 3, -3}})).

A = {{-1, 4, 1}, {1, 9, -2}, {6, 
          4, -8}}

    B = {{1, -2, 5}, {4, -5, 8}, {-3, 3, -3}}

\(\(\(a\)\()\)\) Zmnoži\ matriki\ A\ in\ B\ najprej\ tako, \ 
    da\ vtipkaš\ A\ B, \ 
    nato\ pa\ še\ A . B . \ 
        Kaj\ \(\(opaziš\)\(?\)\(\ \)\)\)

A B

    A . B

b) 
      Kakšna je razlika med (B^2) in MatrixPower[B, 
          2]?

B^2

    MatrixPower[B, 2]

B . B

Znak za množenje matrik je decimalna pika, za potenciranje pa uporabljamo ukaz MatrixPower.

10. Poišči transponirano matriko matrike B.

Transponirano matriko dane matrike dobimo z ukazom Transpose.

Transpose[B] // MatrixForm

Za računanje determinant uporabljamo ukaz Det.

11.   Izračunaj  determinanto det (A).

Det[A]

Sistemi linearnih enačb

12. Reši sistem linearnih enačb (brez uporabe ukaza Solve):
x + 2y + 3z = 1
2x + 5y + 3z = 6
x +            8z = -6.

Najprej določimo matriko sistema A in stolpec b.

A = {{1, 2, 3}, {2, 5, 3}, {1, 0, 8}}

b = {{1}, {6}, {-6}}

Sistem bomo najprej rešili na dolg način po postopku Gaussove eliminacije. Če hočemo uničiti 2 v drugi vrstici, moramo k drugi vrstici prišteti prvo vrstico, pomnoženo z -2. To naredimo z ukazom ReplacePart.

Definiramo razširjeno matriko sistema, z ukazom AppendRows.

?AppendRows

A = AppendRows[A, b]

A = ReplacePart[A,  A[[2]] - 2  A[[1]], 2]

% // MatrixForm

Na enak način uničimo tudi elementa v tretji vrstici in prvem stolpcu ter v tretji vrstici in drugem stolpcu.

A = ReplacePart[A,  A[[3]] - A[[1]], 3]

% // MatrixForm

A = ReplacePart[A,  A[[3]] + 2  A[[2]], 3]

% // MatrixForm

Clear[A, b]

A = {{1, 2, 3}, {2, 5, 3}, {1, 0, 8}}

b = {{1}, {6}, {-6}}

A1 = AppendRows[A, b]

Uporabimo ukaz RowReduce, ki z Gausovo eliminacijo ustvari ničle na tistih mestih, kjer je to mogoče. Iz dobljene matrike lahko takoj razberemo rešitev sistema.

?RowReduce

RowReduce[A1] // MatrixForm

Sistem linearnih enačb lahko rešimo tudi z ukazom LinearSolve.

LinearSolve[A, b]

Poiščimo še rešitvi 7.  naloge  z matrikami.

7.*  Parametrično enačbo najprej zapišemo v matrični obliki r = r0 + M.k, nato pa ta nastavek vstavimo v enačbo (M^T)(
          r - p) = 0. Dobimo (M^T)M.k = (M^T)(p - r0). Če je k1 rešitev tega sistema, potem je iskana projekcija p1 = r0 + M.k1.

r0 = {{0}, {2}, {-1}}

M = {{3, -2}, {2, 4}, {3, 5}}

p = {{-1}, {2}, {5}}

k1 = 
      LinearSolve[Transpose[M] . M, Transpose[M] . (p - r0)]

p1 = r0 + M . k1

Inverz matrike

13. Poišči inverz matrike A po Gaussovi metodi.

A = {{-1, 4, 1}, {1, 9, -2}, {6, 
          4, -8}}

Najprej matriko A dopolnimo z identično matriko. Uporabimo ukaz AppendRows. Identično matriko dobimo z ukazom IdentityMatrix[n], kjer je n dimenzija matrike.

F = AppendRows[A, IdentityMatrix[3]]

RowReduce[F]

Inverz matrike A je matrika, sestavljena iz zadnjih treh stolpcev in prvih treh vrstic matrike F. Z ukazom TakeMatrix lahko iz matrike M dobimo podmatriko.

?TakeMatrix

Ainv = TakeMatrix[%%, {1, 4}, {3, 6}]
MatrixForm[Ainv]

Preveri, da je to res inverzna matrika matrike A.

A . Ainv

Matriki sta inverzni,  če velja A . 
          (A^(-1)) =  I.

Inverz dane matrike  lahko izračunamo tudi na krajši način z ukazom Inverse.

? Inverse

Inverse[A] // MatrixForm

Metoda najmanjših kvadratov

Clear[a, b, c, x]

14. a) Poišči enačbo premice, ki se najbolje prilega točkam (0.2, 4.59), (0.4, 5.05), (0.6, 6.2), (0.8, 6.6), (1, 7.4). Točke najprej nariši v koordinatni sistem.

\(Rešiti\ moramo\ sistem\ petih\ enačb\ za\ dve\ neznanki\ a\ in\ \(b : \ 
y1\) = 
      a\ x1 + b\)
                y2 = ax2 + b
               y3 = ax3 + b
               y4 =  ax4 + b
              y5 =  ax5 + b,
\(kjer\ so\ xi\ in\ yi\ koordinate\ danih\ točk . \ 
              Sistem\ lahko\ zapišemo\ v\ matrični\ obliki\ kot\ y = X\ c\), kjer je y vektor y koordinat,c je vektor (a, b), X pa je matrika oblike X=(({{x1, 1}, {x2, 1}, {x3, 1}, {x4, 1}, {x5, 1}})).  Sistem je predoločen \(\((imamo\ večje\ število\ enačb\ kot\ neznank\ )\) . \ Rešitev\) takega sistema poiščemo tako, \(da\ poiščemo\ rešitev\ sistema\ X\^T . 
              X . c = \ \(\(X\^T\)\(.\)\(y\)\(.\)\(
\)\(
\)\)\)

tocke1 = {{0.2, 4.59}, {0.4, 5.05}, {0.6, 6.2}, {0.8, 6.6}, {1, 
          7.4}}

graf1 = 
      ListPlot[tocke1, Frame -> True, 
        PlotStyle -> {PointSize[0.02]}]

y = {{4.59}, {5.05}, {6.2}, {6.6}, {7.4}}

X = {{0.2, 1}, {0.4, 1}, {0.6, 1}, {0.8, 1}, {1, 1}}

LinearSolve[Transpose[X] . X, Transpose[X] . y]

Nalogo lahko rešimo tudi s pomočjo vgrajenega ukaza FindFit, ki deluje na način, ki smo ga predstavili:

koef1 = FindFit[tocke1, a x + b , {a, b}, x]

premica = b + a x /. koef1

Show[graf1, 
      Plot[premica, {x, 0, 1}, 
        PlotStyle -> {RGBColor[1, 0, 0]}]]

b) Poišči enačbo parabole, ki se najbolje prilega točkam iz seznama tocke2 z ukazom FindFit. Točke najprej narišite v koordinatni sistem.

tocke2 = Table[{x, Exp[Sin[x]]}, {x, 0. , 2. , 0.2}]

graf2 = 
      ListPlot[tocke2, Frame -> True, 
        PlotStyle -> {PointSize[0.02]}]

koef2 = 
      FindFit[tocke2, a x^2  +  b x +  c, {a, b, c}, x]

parabola = c + b x + a x^2 /. koef2

Show[graf2, 
      Plot[parabola, {x, 0, 2}, 
        PlotStyle -> {RGBColor[1, 0, 0]}]]

Naloge

1. Izračunaj kot med vektorjem a=(1,1,0) in b=(0,2,2).

2.  Naj bo A=(({{1, 2, 4}, {0, 3, 1}, {2, -1, 1}})) in  B=(({{2, 1, 1}, {2, -1, 1}, {3, 3, 1}})).  Izračunaj  determinante det(A), det (B), det (A . B),det (A + 
            B) in det ((A^T)) ter primerjaj det (A)* 
        det (B)  z  det (A . B) , \(det \((A + B)\)\ z\ det \((A)\) + 
        det \((B)\)\ in\ det \((A)\)\ z\ det \(\((A\^T)\)\(.\)\(
\)\)\)

3. Reši sistem linearnih enačb (brez uporabe ukaza Solve):
          x +3y + 2z = 1
        2x  - y +    z =2 
        4x +  y+   4z =3.

4. Poišči pravokotno projekcijo točke T(1,1,1,1) na afino množico,podano s sistemom linearnih enačb: 
         2 x+y+z - w=1
         3 x-2 y+z-3 w=-2
         x+y-z-w=-1

Clear[x, y, a, b, c, z, w]

x = 1 + 2 a  + 3 b + c
y = 1 + a - 2  b + c
z = 1 + a + b - c
w = 1 - a - 3 b - c

Solve[{2 x  +  y  + z - w == 1,  
        3 x - 2 y + z - 3 w == -2, 
        x + y - z - w == -1}, {a, b, c}]

proj = {x, y, z, w} /. %