Vaje: linearna algebra

2022-10-28

Naloga 1

Spomnimo se, da je geometrijski pomen mešanega produkta treh vektorjev predznačena prostornina paralelepipeda, razpetega s temi vektorji (predznak pove orientacijo paralelepipeda, ampak to v tej nalogi ne bo pomembno). To nam omogoča, da na preprost način izračunamo enačbo ravnine v prostoru skozi dane točke A, B in C. Enačba se glasi [(OverVector[AB]),(OverVector[AC]),(OverVector[AX])]=0, kjer X = (x,y,z) predstavlja splošno točko prostora. Mešani produkt izračunamo kar kot determinanto matrike, katere stolpci (lahko tudi vrstice) so dani vektorji.

Sestavite funkcijo EnačbaRavnine[a_,b_,c_], ki vrne enačbo ravnine skozi tri točke (podane kot seznam dolžine 3). Uporabite jo za generiranje nalog iz enačb ravnin: napišite program, ki naključno generira tri točke z enomestnimi celoštevilskimi koordinatami, dokler ne najde takih, ki dejansko razpenjajo ravnino (niso kolinearne) in za katere ima enačba ravnine enomestne koeficiente.

Uporabni ukazi: Det, Until, RandomInteger, CoefficientList, Max, Abs, Cross

12-7x+5y+8z==0

3*(7-x)+2*(y+z-6)==0

(x+2*y+1)+6*(x-5+y)

(x+2*y+1)+6*(x-5+y)//Simplify

Collect[(x+2*y+1)+6*(x-5+y),{x,y}]

CoefficientList[(x+2*y+1)+6*(x-5+y),x]

Naloga 2

Sestavite funkcijo Diagonalizacija, ki ponazori diagonalizacijo matrike. Funkcija naj sprejme matriko A ter vrne rezultat oblike A==P.D.(P^(-1)), kjer je D dobljena diagonalna matrika in P matrika, katere stolpci so lastni vektorji. Funkcija se naj izvrednoti samo na diagonalizabilnih matrikah.
Svojo funkcijo preizkusite na matrikah (({{5, -6, 3}, {4, -5, -5}, {0, 0, 5}})) (za vajo vnesite to matriko ročno), (({{0, 1}, {0, 0}})) (ta matrika ni diagonalizabilna), ReflectionMatrix[{1,2,3}], RotationMatrix[(π/4)], ScalingMatrix[4,{1,1,1}].

Uporabni ukazi: DiagonalizableMatrixQ, Eigensystem, DiagonalMatrix, Transpose, Inverse, MatrixForm

Naloga 3

Cilj te naloge je, da pripravite program, ki vam bo generiral naloge iz reševanja sistemov linearnih enačb s "človeškimi" podatki in rešitvami . To storite po naslednjih korakih .

Sestavite funkcijo NaključnaObrnljivaMatrika[n_,M_], ki naključno generira matrike velikosti n×n z elementi, ki so po absolutni vrednosti z M omejena cela števila, dokler ne naleti na obrnljivo matriko, ki jo vrne.

Sestavite funkcijo SistemLinearnihEnačb[n_], ki zgenerira naključen sistem n linearnih enačb z n neznankami. Pri tem zadostite naslednjim pogojem:

Rešitev sistema je enolična. To se zgodi natanko tedaj, ko je matrika koeficientov obrnljiva. Poslužite se funkcije NaključnaObrnljivaMatrika.

Vsi koeficienti sistema in prosti členi naj bodo enomestna cela števila.

Rešitev sistema naj sestoji iz enomestnih celih števil.

Funkcija izpiše sistem v običajni obliki, torej kot stolpec enačb.

Funkcija izpiše rešitev tako, da za vsako neznanko navede, koliko je njena vrednost.

Dodatno še funkcija ponazori sistem in njegove rešitve v matrični obliki: (matrika koeficientov) . (vektor rešitev) == (vektor prostih členov). (To je tudi namig, kaj se splača narediti: naključno zgenerirate matriko koeficientov in vektor rešitev ter nato dobite proste člene kot njun produkt.)

Uporabni ukazi: Until, Det, RandomInteger, Module, MatrixForm, TableForm

LinearSolve[{{1,3,-4},{2,-3,1},{1,0,-3}},{10,7,-4}]

LinearSolve[{{1,2,-4},{2,-3,1},{1,0,2}},{10,7,-4}]

RandomInteger[{-5,5},{3,3}]//MatrixForm

Module[
{a},
Until[PrimeQ[a]∧Mod[a,4]==3,
a=RandomInteger[{2,100}]
] ;
a
]