GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vektoralgebra auf Scientific Linux 7.1 mit Python-Skript:Teil 1

In diesem Tutorial besprechen wir die Vektoralgebra und entsprechende Berechnungen unter Scientific Linux. Für unseren Zweck habe ich Python als Programmiersprache wegen seiner Einfachheit und Rechenleistung gewählt. Jede Linux-Distribution hat standardmäßig einen Python-Editor/Compiler, der über ein Terminalfenster aufgerufen wird. Gehen wir einige Konzepte der Vektoralgebra durch.

Hinweis:Wir werden nur im realen Raum von zwei oder drei Dimensionen arbeiten.

Vektoralgebra

Das Element eines Vektorraums kann aus mathematischer Sicht als die Anordnung einer Anzahl von Elementen dargestellt werden, die zu diesem Vektorraum gehören. Genauer gesagt, und im numerischen Rechenansatz, kann es als eine Liste reeller Zahlen dargestellt werden, die drei grundlegende Eigenschaften hat:

Größe

Die Größe des Vektors und wird mit dargestellt  ; dies ist der skalare Teil eines Vektors. Um den Betrag eines Vektors zu berechnen, müssen wir die folgende Formel ausführen:

X, Y und Z sind die Vektorkoordinaten.

Richtung

Die Richtung eines Vektors wird durch eine Leitlinie angegeben, die für jede Achse des Koordinatensystems einen bestimmten Winkel hat, der als Richtungswinkel bezeichnet wird.

Wo Alpha, Beta und Gamma die Vektorrichtungswinkel und ihre Kosinusse die Richtungskosinusse sind, können sie auch berechnet werden, indem jede Vektorkoordinate durch ihre Größe geteilt wird.

Orientierung

Eine der beiden möglichen Ausrichtungen zwischen derselben Richtung.

Vektoralgebraische Summe

Um eine algebraische Summe von Vektoren zu bilden, müssen wir die homologen Koordinaten zweier Vektoren addieren, wobei die gleichen Eigenschaften der algebraischen Summe reeller Zahlen beachtet werden. Einfach so:


Wie wir sehen können, ist das Ergebnis ein weiterer Vektor, der zum selben Vektorraum gehört.

Produkt eines Vektors durch einen Skalar

Bei einem Vektor und einem Skalar ist das Produkt Vektor durch Skalar als Skalarprodukt jeder Koordinate des Vektors definiert:

Wo

Einheitenvektor

Eine direkte Anwendung für den Produktvektor durch einen Skalar ist der Einheitsvektor a Einheitsvektor ist ein normierter Vektor der Länge 1.

Lineare Kombination

Wenn wir die vergangenen Operationen, algebraische Summe und Produktvektor-Skalar mischen, erhalten wir eine Linearkombination, bei der das Ergebnis auch ein Vektor ist, der zum selben Vektorraum gehört, wie ist:

Wobei Vektor A eine Linearkombination von Vektoren B ist und C.

Python auf Scientific Linux 7.1

Um die Vektoralgebra zu implementieren, haben wir Python als Berechnungssprache gewählt. Der von uns gewählte Texteditor ist gedit und wird standardmäßig mit der Distribution Scientific Linux 7.1 geliefert.

Größe eines Vektors

Rufen wir gedit über ein Terminal auf oder klicken Sie einfach auf das Symbol auf der Registerkarte Anwendungen:



Zunächst müssen wir mit Listen arbeiten, die Vektoren darstellen und als deklariert werden sollten ist: 

V=[2, 2, 1]

Lassen Sie uns eine Variable deklarieren, um die Größe zu speichern und einen Wert zu geben, wir verwenden 0.

modV=0

Jetzt verwenden wir die Klasse math, um die Quadratwurzel zu berechnen:

import math

Die Berechnung der Magnitude:

modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)

Wie wir sehen können, müssen wir den Unterindex verwenden, um das Element aus der Liste anzugeben, das wir bearbeiten werden, beginnend bei 0.

Das vollständige Skript lautet wie folgt:

V=[2, 2, 1]
modV=0
import math
modV=math.sqrt(V[0]**2+V[1]**2+V[2]**2)
print (modV)

Sobald wir fertig sind, müssen wir die Datei mit der Erweiterung .py speichern und den Dateipfad suchen und dort mit der rechten Maustaste ein Terminalfenster öffnen und dann "Im Terminalfenster öffnen". Nachdem wir den Python-Interpreter aufgerufen haben, geben Sie Folgendes ein:

$ python [path]/yourfilename.py

Dies öffnet ein Fenster wie dieses und gibt das Ergebnis aus:



Eine andere Möglichkeit ist die Verwendung einer for-Schleife wie dieser:

for x in range (0,3):
    modV+=V[x]**2
modV=math.sqrt(modV)

Hier müssen wir Einrückungstechniken verwenden, da der Python-Interpreter auf diese Weise arbeitet.

Richtung eines Vektors

Verwenden Sie die Klasse math

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)

Das Ergebnis ist das nächste:



Eine andere Möglichkeit ist die Verwendung der trigonometrischen Funktionen des Mathematikunterrichts etwa so:

Berechnen wir zuerst die Richtungswinkel:

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))

Und dann berechnen wir die Direktorkosinusse und drucken sie aus

for z in range(0,3):    #loop for calculating the director cosines
    V[z]=math.cos(math.radians(angles[z]))
print (angles)
print (V)


Und das Ergebnis:



Wir können beobachten, dass die Direktorkosinusse denselben Wert haben

Orientierung eines Vektors

Wenn wir das Vorzeichen aller Koordinaten eines Vektors ändern, ändern wir von Natur aus die Ausrichtung des Vektors, wie folgt:

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)



Im nächsten Bild können wir sehen, dass die Winkel des Direktors bei 180 Grad unterschiedlich sind von den Originalen

Vektoralgebraische Summe

Zuerst müssen wir alle an der algebraischen Summe beteiligten Vektoren wie folgt deklarieren:

A=[1,2,4]
B=[2,1,4]
S=[0,0,0]

wo wir A plus B summieren und das Ergebnis in S speichern

Das Hinzufügen von zwei Vektoren (Listen) in Python entspricht dem Ausführen einer 'for'-Schleife für jede Koordinate des resultierenden Vektors, also müssen wir das nächste tun:

for x in range(0,3):
    S[x]=A[x]+B[x]

Hier haben wir das vollständige Skript für die algebraische Vektorsumme:

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

Und das Ergebnis ist:

Produkt eines Vektors durch einen Skalar

Gegebener Vektor: 

A=[1,-2,3]

und ein Skalar:

scalar=-2

Produkt  Vektor durch einen Skalar ist definiert als das Skalarprodukt jeder  Koordinaten des Vektors:

for x in range(0,3):
    R[x]=scalar*A[x]

und das Ergebnis ist:

Einheitenvektor

Mit dem Skript „Größe eines Vektors“ haben wir:

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 

und das Ergebnis ist:

Lineare Kombination

Ausgehend von drei Vektoren A, B und C können wir die Skalarwerte berechnen, die multipliziert mit B bzw. C den Vektor A ergeben. Mit anderen Worten, den Vektor A als lineare Kombination der Vektoren B und C platzieren :

A=[7, 9, -8]
B=[1, 3, -2]
C=[-2, 0, 1]

Eine Linearkombination führt zu einem Gleichungssystem, 3 Gleichungen mit 2 Variablen (Skalare) wenn drei Vektoren r3 oder 2 Gleichungen mit 2 Variablen wenn es zwei Vektoren in R3 sind, die sich durch Anwendung einer Determinante einer Matrix lösen lassen. Hier müssen wir wegen der von Python gehandhabten Datentypen einen Punkt machen. In vielen Fällen hat das Ergebnis bei der Berechnung der an einer Linearkombination beteiligten Skalare Nachkommastellen, was zu Gleitkommaoperationen führt. Die numerischen Datentypen, die von Python verarbeitet werden, sind:Integer, Real, Long. Wir müssen also die Koordinaten der Vektoren als Real-Datentyp einfügen, damit diese reelle Zahlen darstellen (Gleitkomma). Wir müssen einige Merkmale des Datentyps in Python kennen und verstehen:

  • Integer benötigen weniger Speicherplatz als der Real-Typ.
  • Operationen mit Real sind langsamer als Integer.

Hier haben wir die gleichen Vektoren, aber als Real-Typ deklariert:

A=[7.0,9.0,-8.0]
B=[1.0,3.0,-2.0]
C=[-2.0,0.0,1.0]

Damit können wir also die Vektoren vertauschen und haben somit immer die Systemlösung.

Als erstes müssen wir prüfen, ob es Koplanarität zwischen den Vektoren gibt oder nicht, also wissen, ob es da ist oder nicht ist eine Linearkombination. Dafür implementieren wir eine Determinantenmatrix:




Code:
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

Ist diese Determinante gleich Null (0), so besteht eine lineare Abhängigkeit zwischen den Vektoren und wir können mit der Berechnung der Skalare fortfahren. Wie oben erwähnt, hat das Gleichungssystem drei Gleichungen mit zwei Variablen, was ein bestimmtes kompatibles System ergibt, für das wir zwei der drei Gleichungen nehmen und skalare Werte lösen müssen, dann mit der dritten Gleichung, die vorher nicht genommen wurde, überprüfen, ob die vorherige Skalarwerte lösen es. Wenn sie dies nicht lösen, gibt es keine Linearkombination.


Hier haben wir den vollständigen Code:

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'


Und das Ergebnis:

[[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]#


Zusammenfassend führt die grundlegende Vektoralgebra zu einer Reihe von Operationen, die lineare Gleichungssysteme und / oder einfache Arithmetik mit reellen Zahlen beinhalten. In einem weiteren Tutorial werden wir sehen, wie wir Produkte mit Vektoren entwickeln können, wie Skalarprodukt, Kreuzprodukt oder Mischprodukt.


Linux
  1. So verwalten Sie mehrere Python-Versionen mit Pyenv unter Linux

  2. Ändern Sie das Arbeitsverzeichnis in der Shell mit einem Python-Skript

  3. Tastenanschlag in Linux mit Python simulieren

  4. Python-Skript kann nicht mit Strg-C beendet werden

  5. Wie man Python-Skript mit Bash-Skript beendet

Lernen Sie Git-Befehle mit praktischen Beispielen unter Linux – Teil 1

Shell-Scripting Teil I:Erste Schritte mit Bash-Scripting

Erfahren Sie, wie Sie Netzwerkgeräte mit Scientific Linux 7.1 und Python erkennen

Erste Schritte mit VirtualBox unter Linux – Teil 1

Debuggen in pyCharm mit sudo-Berechtigungen?

Machen Sie Python-Skript in Kombination mit Linux-Paketen für Endbenutzer einfach installierbar