Vektorji in analitična geometrija

Spomnimo se, da vektorje pišemo kot sezname v zavitih oklepajih, npr. {3,2,5}, matrike pa kot sezname vektorjev vrstic (npr. {{1, 2, -1}, {0, 3, -2}, {-1, -1, 0}}).
Skalarni produkt dveh vektorjev pišemo s piko, recimo {3,2,5}.{3,2,5}, ali z ukazom Dot.
Vektorski produkt izračunamo z ukazom Cross.
Velikost vektorja izračunamo z ukazom Norm.
Kot med vektorjema izračunamo z ukazom VectorAngle. Če želimo kot zapisati v stopinjah namesto v radianih, delimo izraz z ukazom N[Degree], ki vrne numerično vrednost ene kotne stopinje. Ukaz DMSList[ϕ] priredi kotu ϕ, podanemu v decimalnih stopinjah, seznam kotnih stopinj, minut in sekund.

1. Vzemimo vektorja (2,2,0) in (2,1,1).
Izračunajte:
  - skalarni produkt,
        - vektorski produkt,
        - ploščino paralelograma,ki ga vektorja oklepata,
        - kot med vektorjema
Rezultati:6,(-2,-2,2),2 (Sqrt[3]),(π/6)

2. Naj bodo A(1,-1,-1), B(2,-2,0), C(3,5,4) in D(0,0,1) točke v prostoru.
Izračunajte obseg in ploščino trikotnika z oglišči A,B in C ter kot med stranicama AB in BC.
Kot med stranicama podajte v kotnih stopinjah, minutah in sekundah.
Izračunajte še volumen tristrane piramide z oglišči A, B, C in D.
Rezultati:o=(Sqrt[3])+(Sqrt[65])+(Sqrt[66]), p=(Sqrt[(97/2)]),ϕ=81.83={81,49,43.17759631519266`},V=4

rA={1,-1,-1};
rB={2,-2,0};
rC={3,5,4};

3. Poiščite točko v kateri premica skozi točki D(4,0,0) in E(8,-3,1) prebode ravnino skozi točke A(2,1,-5), B(2,2,0) in C(1,3,2).
Rezultat: P(0,3,-1)

rA={2,1,-5};
rB={2,2,0};
rC={1,3,2};
rD={4,0,0};
rE={8,-3,1};

4. Izračunajte razdaljo med premicama x+1=y=((z-1)/2) in x=((y+1)/3)=((z-2)/4)
Teorija: Razdalja nevzporednih premic=((|((Overscript[AB, ->]),(Overscript[(Subscript[e, 1]), ->]), (Overscript[(Subscript[e, 2]), ->]))|)/(|(Overscript[(Subscript[e, 1]), ->])×(Overscript[(Subscript[e, 2]), ->])|))
Rezultat:d=((Sqrt[3])/3)

rA={-1,0,1};
rB={0,-1,2};

Časovna zahtevnost

5. Poglejmo si še časovno zahtevnost računanja determinant različnih redov.
   Naslednji ukazi zgenerirajo naključne matrike reda 10, 50, 100, 250 in preverijo
   čas izračuna determinante. V posebej celici je še ukaz za nekoliko večjo matriko reda 500.
   Prvi rezultat je čas v sekundah, drugi pa vrednost determinante.

n=10;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Det[A]]
n=50;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Det[A]]
n=100;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Det[A]]
n=250;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Det[A]]

n=500;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Det[A]]

6. Permanenta je analogija determinanti, pri čemer so vsi predznaki v razvoju po neki vrstici ali stolpcu pred minorji vedno +.
   Poglejte si časovno zahtevnost izračuna permanente in primerjajte z izračunom determinante zgoraj.
   (ukaz za izračun permanente je potrebno najprej definirati, ker ni vgrajen v Mathematico).

Permanent[m_List]:=With[{v=Array[x,Length[m]]},Coefficient[Times@@(m.v),Times@@v]]

n=10;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Permanent[A]]

n=15;
A=Table[Table[Random[Integer,{-5,5}],{i,n}],{j,n}];
Timing[Permanent[A]]