V tomto tutoriálu probereme vektorovou algebru a odpovídající výpočty pod Scientific Linux. Pro náš účel jsem zvolil Python jako programovací jazyk pro jeho jednoduchost a výpočetní sílu. Každá distribuce Linuxu má ve výchozím nastavení editor / kompilátor Pythonu, který se spouští přes okno terminálu. Pojďme si projít některé pojmy vektorové algebry.
Poznámka:budeme pracovat pouze na reálném prostoru dvou nebo tří rozměrů.
Vektorová algebra
Prvek vektorového prostoru může být z matematického hlediska reprezentován jako pole řady prvků, které do tohoto vektorového prostoru patří. Konkrétněji a v přístupu numerických výpočtů jej lze reprezentovat jako seznam reálných čísel, který má tři základní charakteristiky:
Velikost
Velikost vektoru a je reprezentována pomocí ;toto je skalární část vektoru. Pro výpočet velikosti vektoru musíme provést následující vzorec:

X, Y a Z jsou vektorové souřadnice.
Směr
Směr vektoru je dán směrovou přímkou, která má pro každou osu souřadnicového systému specifický úhel, nazývaný úhly režiséra.
Kde jsou alfa, beta a gama úhly vektoru a jejich kosinus jsou kosinusy, lze je také vypočítat vydělením každé vektorové souřadnice její velikostí.
Orientace
Jedna ze dvou možných orientací mezi stejným směrem.
Vektorový algebraický součet
Abychom vytvořili algebraický součet vektorů, musíme sečíst homologní souřadnice dvou vektorů, které mají stejné vlastnosti jako algebraický součet reálných čísel. Přesně takto:

Součin vektoru pomocí skaláru
Daný vektor a skalár je součinový vektor skalárem definován jako skalární součin každé souřadnice vektoru:
Kde
Vektor jednotky
Přímou aplikací pro vektor produktu pomocí skaláru je jednotkový vektor, jednotkový vektor je normovaný vektor délky 1.

Lineární kombinace
Když smícháme minulé operace, algebraický součet a součin vektor-skalární, získáme lineární kombinaci, ve které je výsledkem také vektor patřící do stejného vektorového prostoru, jako je:

Vektor A je lineární kombinace vektorů B a C.
Python v systému Scientific Linux 7.1
Pro implementaci vektorové algebry jsme zvolili Python jako kalkulový jazyk. Textový editor, který jsme zvolili, je gedit a je standardně dodáván s distribucí Scientific Linux 7.1.
Velikost vektoru
Zavolejte gedit pomocí terminálu nebo stačí kliknout na ikonu na záložce aplikací:
Nejprve musíme pracovat se seznamy, které představují vektory a měly by být deklarovány jako je:
V=[2, 2, 1]
Pojďme deklarovat proměnnou pro uložení velikosti a dát hodnotu, použijeme 0.
modV=0
Nyní použijeme matematiku třídy k ovládání druhé odmocniny:
import math
Výpočet velikosti:
modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
Jak vidíme, musíme použít subindex k označení položky ze seznamu, kterou budeme provozovat, počínaje 0.
Úplný skript je následující:
V=[2, 2, 1]
modV=0
import math
modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
print (modV)
Po dokončení musíme uložit soubor s příponou .py a najít cestu k souboru a kliknutím pravým tlačítkem otevřít okno terminálu a poté "otevřít v okně terminálu". Poté, co budeme muset zavolat python interpretu psaní:
$ python [path]/yourfilename.py
tím se otevře okno, jako je toto, a výsledek:
Další způsob, jak to udělat, je použít cyklus for, jako je tento:
for x in range (0,3):
modV+=V[x]**2
modV=math.sqrt(modV)
Zde musíme použít techniky odsazení, protože python interpreter funguje tímto způsobem.
Směr vektoru
Použijte třídní matematiku
V=[2, 1, 2]
modV=0
import math
for x in range (0,3): #loop for calculating the magnitude
modV+=V[x]**2
modV=math.sqrt(modV)
for y in range (0,3): #loop for calculating the director cosines
V[y]=V[y]/modV
print (V)
Výsledkem je následující:
Dalším způsobem, jak toho dosáhnout, je použití goniometrických funkcí matematické třídy, stačí takto:
Nejprve spočítejme úhly režiséra:
V=[2, 1, 2]
angles=[0,0,0]
modV=0
import math
for y in range (0,3): #loop for calculating the director angles in degrees
angles[y]=math.degrees(math.acos(V[y]/modV))
A pak spočítejme direktorové kosiny a vytiskněte je
for z in range(0,3): #loop for calculating the director cosines
V[z]=math.cos(math.radians(angles[z]))
print (angles)
print (V)
A výsledek:
Můžeme pozorovat, že kosiny ředitele mají stejnou hodnotu
Orientace vektoru
Pokud změníme znaménko všech souřadnic vektoru, inherentně změníme orientaci vektoru, jako je:
V=[-2, -1, -2]
angles=[0,0,0]
modV=0
import math
for y in range (0,3): #loop for calculating the director angles in degrees
angles[y]=math.degrees(math.acos(V[y]/modV))for z in range(0,3): #loop for calculating the director cosines
V[z]=math.cos(math.radians(angles[z]))
print (angles)
print (V)
Na dalším obrázku vidíme, že úhly režiséra se liší o 180 stupňů z originálů
Vektorový algebraický součet
Nejprve musíme deklarovat všechny vektory zahrnuté v algebraickém součtu, jako je:
A=[1,2,4]
B=[2,1,4]
S=[0,0,0]
kde sečteme A plus B a výsledek se uloží do S
Přidání dvou vektorů (seznamů) v Pythonu je ekvivalentní spuštění cyklu „for“ pro každou souřadnici výsledného vektoru, takže musíme udělat následující:
for x in range(0,3):
S[x]=A[x]+B[x]
Zde máme kompletní skript pro součet algebraických vektorů:
A=[1,2,4]
B=[2,1,4]
S=[0,0,0]
for x in range(0,3): #For loop for adding the homologue coordinate of each vector
S[x]=A[x]+B[x]
print 'S=',A, '+', B, '=', S
A výsledek je:
Součin vektoru pomocí skaláru
Je dán vektor:
A=[1,-2,3]
a skalár:
scalar=-2
produktový vektor podle skaláru je definován jako skalární součin všech souřadnic vektoru:
for x in range(0,3):
R[x]=scalar*A[x]
a výsledek je:
Vektor jednotky
Pomocí skriptu 'Magnituda vektoru' máme:
V=[2, 2, 1]
U=[0,0,0]
modV=0
invmodV=0
import math
modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
invmodV=1/modV
for x in range(0,3):
U[x]=invmodV*V[x]
print 'U=',V,'/',modV,'=',U
a výsledek je:
Lineární kombinace
Vzhledem ke třem vektorům , A, B a C , můžeme vypočítat skalární hodnoty, které po vynásobení B a C vedou k vektoru A. Jinými slovy umístění vektoru A jako lineární kombinace vektorů B a C :
A=[7, 9, -8]
B=[1, 3, -2]
C=[-2, 0, 1]
Lineární kombinace vede k soustavě rovnic, 3 rovnicím se 2 proměnnými (skaláry), pokud tři vektory r3, nebo 2 rovnicím se 2 proměnnými, pokud jsou to dva vektory v R3, které lze řešit aplikací determinantu matice. Zde musíme upozornit na datové typy, které Python zpracovává. V mnoha případech při výpočtu skalárů zahrnutých v lineární kombinaci bude mít výsledek desetinná místa, což vede k operacím s plovoucí desetinnou čárkou. Číselné datové typy, které Python zpracovává, jsou:Integer, Real, Long. Musíme tedy vložit souřadnice vektorů jako datový typ Real, takže tyto představují reálná čísla (s plovoucí desetinnou čárkou). Musíme znát a rozumět některým charakteristikám datového typu v Pythonu:
- Celé číslo zabírá méně místa v paměti než typ Real.
- Operace s Real jsou pomalejší než Integer.
Zde máme stejné vektory, ale deklarované jako typ Real:
A=[7.0,9.0,-8.0]
B=[1.0,3.0,-2.0]
C=[-2.0,0.0,1.0]
Takže s tímto můžeme zaměnit vektory a tak mít vždy systémové řešení.
První kontrola, kterou musíme udělat, je o tom, zda existuje koplanarita mezi vektory nebo ne, takže vědět, zda existuje nebo není je lineární kombinace. Za tímto účelem implementujeme determinantovou matici:


Kód:
det0=A[0]*(B[1]*C[2]-B[2]*C[1])-A[1]*(B[0]*C[2]-B[2]*C[0])+A[2]*(B[0]*C[1]-B[1]*C[0]) #Main Determinant involving all vectors
Pokud je tento determinant roven nule (0), je mezi vektory lineární závislost a můžeme pokračovat ve výpočtu skalárů. Jak bylo uvedeno výše, systém rovnic má tři rovnice se dvěma proměnnými, což dává určený kompatibilní systém, pro který musíme vzít dvě ze tří rovnic a vyřešit skalární hodnoty, poté zkontrolovat pomocí třetí rovnice, kterou jsme předtím nepoužili, pokud předchozí skalární hodnoty to řeší. Pokud toto nevyřeší, pak neexistuje lineární kombinace.

Zde máme úplný kód:
A=[7.0,9.0,-8.0]
B=[1.0,3.0,-2.0]
C=[-2.0,0.0,1.0]
det0=A[0]*(B[1]*C[2]-B[2]*C[1])-A[1]*(B[0]*C[2]-B[2]*C[0])+A[2]*(B[0]*C[1]-B[1]*C[0]) #Main Determinant involving all vectors
if det0==0:
det1=B[0]*C[1]-B[1]*C[0] #First Determinant involving the first and second lines of the equations system
if det1==0:
det2=B[1]*C[2]-B[2]*C[1] #Second Determinant involving the second and third lines of the equations system
if det2==0:
print 'Linear Combination Unexistent'
else:
det3=A[1]*C[2]-A[2]*C[1]
det4=B[1]*A[2]-B[2]*A[1]
sc1=det3/det2
sc2=det4/det2
if sc1*B[0]+sc2*C[0]==A[0]:
print 'Scalar 1 =', sc1, 'Scalar 2 =', sc2
print A,'=',sc1,'*',B,'+',sc2,'*',C
else:
print 'Linear Combination Unexistent'
else:
det3=A[0]*C[1]-A[1]*C[0]
det4=B[0]*A[1]-B[1]*A[0]
sc1=det3/det1
sc2=det4/det1
if sc1*B[2]+sc2*C[2]==A[2]:
print 'Scalar 1 =', sc1, 'Scalar 2 =', sc2
print A,'=',sc1,'*',B,'+',sc2,'*',C
else:
print 'Linear Combination Unexistent'
else:
print 'Linear Combination Unexistent'
A výsledek:
[[email protected] ejemplos python]# python lincomb.py
Scalar 1 = 3.0 Scalar 2 = -2.0
[7.0, 9.0, -8.0] = 3.0 * [1.0, 3.0, -2.0] + -2.0 * [-2.0, 0.0, 1.0]
[[email protected] ejemplos python]#
Na závěr, základní vektorová algebra vede k sérii operací zahrnujících lineární soustavy rovnic a/nebo jednoduchou aritmetiku s reálnými čísly. V dalším tutoriálu uvidíme, jak můžeme vyvíjet produkty s vektory, jako je tečkovaný produkt, křížový produkt nebo smíšený produkt.