Artikel

1: Vektorgrundlagen


1: Vektorgrundlagen

Data Science für Psychologen

Vektoren sind das häufigste und wichtigste Daten-Shape in R. Für unsere Zwecke a Vektor ist eine geordnete Folge von Objekten der gleicher Typ. 17 Jeder Vektor hat drei gemeinsame Eigenschaften:

  1. es ist Typ von Elementen (getestet von typeof() )
  2. es ist Länge (getestet von length() )
  3. Optional Attribute oder Metadaten (getestet durch Attribute() ).

Das häufigste Attribut eines Vektors v sind die Namen seiner Elemente, die durch names(v) gesetzt oder abgerufen werden können.

1.4.1 Grundlagen

Stellen Sie sich einen Vektor als einen Güterzug vor, der eine Folge von Wagen gleichen Typs enthält: Jeder Wagen kann unterschiedliche Ladung (Objekte) enthalten, aber alle diese Objekte müssen vom gleichen Typ sein (z. B. logische Werte, Zahlen, oder Zeichen). Da die Waggons von außen nicht zu unterscheiden sind, kann der Inhalt eines jeden Waggons durch die Adressierung des Waggons durch seine Name (ein optionales Attribut) oder seine Nummer (oder Position) in der Sequenz. Angenommen, es gibt einen Vektor namens train . Auch wenn wir nicht wissen, wie dieser Vektor definiert wurde (da dies hier nicht gezeigt wird), geben die folgenden Funktionen einige grundlegende Informationen darüber:

Um Informationen über den Zugvektor zu erhalten, haben wir einige grundlegende Funktionen dazu. Lassen Sie uns jede dieser Funktionen der Reihe nach erklären:

Beim Auswerten des Zuges wird der gesamte Vektor in unserer Konsole gedruckt. Eigentlich ist es nur eine Abkürzung für print(train) . Wenn der Vektor kurz genug ist, um vollständig gedruckt zu werden, können wir umfassende Informationen darüber erhalten (d. h. Typ, Länge, Namen und alle seine Elemente). Aber selbst wenn der Vektor zu lang ist, um gedruckt zu werden, können wir immer noch seinen Typ lernen, ob seine Elemente benannt sind und was seine ersten Elemente sind.

Wir haben gelernt, dass alle Elemente eines Vektors gleich sind Typ. Die Funktion typeof(v) bestimmt explizit den Typ eines Vektors v .

Da Vektoren eindimensionale Folgen sind, haben sie a Länge. Die Funktion length(v) bestimmt die Länge eines Vektors v .

Vektoren können haben Namen, müssen sie aber nicht haben. Die Funktion names(v) bestimmt die Namen eines Vektors v und gibt NULL zurück, wenn seine Elemente nicht benannt sind.

Auf den Inhalt bestimmter Vektorelemente kann über ihre Nummer oder ihren Namen zugegriffen werden (wenn v Namen enthält). Um auf Vektorelemente zuzugreifen, verwendet R Platz Klammern [] . Der Befehl v[n] gibt das n-te Element eines Vektors v zurück und der Befehl v["abc"] gibt das Element namens „abc“ eines Vektors v zurück (wenn v ein Element mit diesem Namen enthält).

Wir werden mehr über den Zugriff auf bestimmte Vektorelemente erfahren, wenn wir mehr erfahren über Indizierung unten (in Abschnitt 1.4.6).

Trainieren

Die folgenden Objekte v1 und v2 sind beide Vektoren (d. h. eine geordnete Folge von Elementen), die eine Länge von 4 Elementen haben, aber unterschiedlichen Typs sind:

Von welchem ​​Typ sind die Elemente von v1 und v2?

Was ist ihr i-tes (z. B. 2.) Element?

Anwenden grundlegender Vektorfunktionen:

Was ist die umgekehrte Reihenfolge von v2?

Enthalten v1 oder v2 ein Element "A" ?

Wo kommt ein Element „A“ (zuerst) in einem Vektor v2 vor?

Welches Element von v2 hat einen bestimmten Wert (z. B. "B" oder "Z" )?

Beachten Sie, dass einige dieser Fragen nach einem Vektor von Elementen verlangen, während andere durch einen einfachen binären Wert (z. B. TRUE oder FALSE ) oder einen Vektor von Zahlen (Positionen) beantwortet werden. Um diese Aufgaben zu lösen, können wir etwas fortgeschrittenere Funktionen auf Vektoren anwenden:

  • Die Funktion %in% (als binärer Operator zwischen ihren beiden Argumenten verwendet) prüft, ob das linke (erste) Argument ein Element des rechten (zweiten) ist:
  • Der %in%-Operator basiert auf der Funktion match(), die die Positionen von (ersten) Übereinstimmungen seines ersten Arguments in seinem zweiten Argument zurückgibt:
  • Die Funktion what() gibt die Position(en) (d. h. Zahlen) zurück, für die ein Test auf einem Vektor TRUE ergibt:

Daher ermöglicht uns which(), einen Vektor mit einem Test zu untersuchen und gibt einen (numerischen) Vektor der Positionen zurück, für die der Test WAHR ist.

Wir werden später mehr über diese und viele andere vektorbasierte Funktionen erfahren. Versuchen Sie zunächst, diese grundlegenden Funktionen zu verstehen, und denken Sie daran, dass es viele Möglichkeiten gibt, Vektoren zu untersuchen und zu manipulieren.

1.4.2 Vektoren erstellen

Um einen neuen Vektor zu erstellen, können wir kombinieren mehrere Objekte der gleicher Typ mit der c()-Funktion (denke Kette, kombinieren, oder verketten), Vektorelemente durch Kommas trennen:

Die gleiche Funktion kann verwendet werden, um Skalare und Vektoren zu kombinieren:

Beachten Sie jedoch, dass der resultierende Vektor immer noch ein Vektor ist und kein Vektor, der andere Vektoren enthält (d. h. c() glättet Vektoren).

Die Funktion c() kann auch verwendet werden, um Objekte vom Typ Zeichen oder logische Werte zu Vektoren zusammenzufassen:

Bei der Kombination verschiedener Datentypen sind sie they gezwungen in einen einzigen Datentyp. Das Ergebnis ist entweder ein numerischer Vektor (beim Mischen von Wahrheitswerten und numerischen Objekten) oder ein Zeichenvektor (beim Mischen von etwas mit Zeichen):

In R haben wir es fast immer mit Vektoren zu tun. Diese Vektoren werden entweder von uns erstellt (unter Verwendung von Funktionen, die Vektoren erzeugen oder zurückgeben) oder als Daten eingelesen. Wie wir weiter unten (in Abschnitt 1.5) sehen werden, sind Datendateien in Form von Tabellen in Wirklichkeit Vektorspalten.

1.4.3 Anwenden von Funktionen auf Vektoren

Die meisten Funktionen in R können auf Vektoren angewendet werden. Wenn wir eine Funktion auf einen Vektor anwenden, erhalten wir normalerweise entweder einige Informationen Über der Vektor (als skalares Objekt) oder ein transformiertes Version von der Vektor:

Wenn Daten unterschiedlichen Typs (z. B. Zahlen und Zeichen) in einem Vektor kombiniert werden, zwingt R sie zu einem gemeinsamen Typ (z. B. Wahrheitswerte in Zahlen oder alle in Objekte vom Typ „Zeichen“, da dies immer möglich ist):

Eine übliche Operation, die einen bestehenden Vektor ändert, besteht in Sortierung Vektoren, was durch die Funktion sort() erreicht wird. Ein abnehmendes Argument ist standardmäßig auf FALSE gesetzt, kann aber auch auf TRUE gesetzt werden, wenn in absteigender Reihenfolge sortiert werden soll:

Rechnen mit logischen Werten

Beim Kombinieren von Wahrheitswerten und numerischen Objekten in einem Vektor gilt a numerisch Vektor wird zurückgegeben. Jeder Wert von TRUE wird als Zahl 1 interpretiert und jeder Wert von FALSE wird als Zahl 0 interpretiert:

Die gleiche Interpretation von Wahrheitswerten wird gemacht, wenn arithmetische Funktionen auf Wahrheitswerte angewendet werden:

Das Rechnen mit logischen Werten mag zunächst etwas seltsam erscheinen, bietet aber eine nützliche Brücke zwischen logischen und numerischen Datentypen.

Trainieren

Hier sind einige Übungsaufgaben zum Anwenden von Funktionen auf verschiedene Vektortypen:

Antworten: Die Wahrheitswerte werden in numerische Werte umgewandelt: FALSE wird 0 und TRUE wird 1.

Angenommen, ein Vektorband <-c("A", "B", "B", "A").

Antworten: Beide Vektoren werden sortiert, wie wir oben für numerische Vektoren gesehen haben. Vektoren mit Zeichenobjekten werden alphabetisch sortiert. In logischen Vektoren werden FALSE-Werte (entsprechend Werten von 0) vor WAHR-Werten (entsprechend Werten von 1) sortiert.

Schlagen Sie die Dokumentation der Funktion order() nach und vergleichen Sie sie mit der Funktion sort().

Rechnen mit Zahlen vs. logischen Werten:

Nehmen Sie die folgenden Vektordefinitionen an:

1.4.4 Skalare Objekte sind Vektoren

R wird oft als vektorbasierte Sprache beschrieben. Das bedeutet, dass R Vektoren verwendet, wenn andere Sprachen andere Datenstrukturen verwenden würden. Eigentlich haben wir ein bisschen geschummelt, als wir oben zwischen „Skalaren“ und „Vektoren“ unterschieden haben. Obwohl dies bei der Einführung des Objektbegriffs sinnvoll ist, hat R eigentlich keine dedizierte Datenstruktur für skalare Objekte. Stattdessen sind sogar einzelne Zahlen (d. h. Objekte vom Typ „Integer“ oder „Double“) und Namen oder Beschriftungen (d. h. Objekte vom Typ „Zeichen“) tatsächlich Vektoren der Länge 1. Wir können dies überprüfen, indem wir die Funktionen is.vector() und length() auf die oben definierten skalaren Objekte anwenden:

1.4.5 Funktionen zur Vektorerstellung

Die Funktion c() dient zum Kombinieren vorhandener Vektoren. Um jedoch Vektoren zu erstellen, die mehr als nur wenige Elemente enthalten (d. h. Vektoren mit größeren length()-Werten), wird die Verwendung der c()-Funktion und das anschließende Eingeben aller Vektorelemente unpraktisch. Nützliche Funktionen und Abkürzungen zum Generieren von kontinuierlichen oder regelmäßigen Sequenzen sind der Doppelpunktoperator : und die Funktionen seq() und rep() :

  • seq() generiert numerische Sequenzen von einer Anfangszahl von bis zu einer Endzahl bis und erlaubt entweder das Setzen der Schrittweite um oder die Länge der Sequenz length.out :
  • rep() repliziert die in seinem ersten Argument x angegebenen Werte entweder mal oder jedes Element jedes Mal:

Während : und seq() numerische Vektoren erzeugen, kann rep() mit anderen Datentypen verwendet werden:

1.4.6 Indizierungsvektoren

Wir haben jetzt gelernt, wie man Vektoren inspiziert und wie man ihren Typ, ihre Länge, Namen und bestimmte Elemente bestimmt (siehe Abschnitt 1.4.1 oben). Wenn Daten jedoch hauptsächlich in Vektoren gespeichert werden, lautet eine wichtige Frage:

Die Aufgaben des Zugreifens, Testens oder Ersetzens von Vektorelementen (und anderen Datenstrukturen) in R sind bekannt als Indizierung oder Untereinstellung. Je nachdem, wie wir die Elemente angeben, auf die wir zugreifen, die wir testen oder die wir ändern möchten, gibt es zwei Hauptvarianten dieses Prozesses (numerisch oder logisch): 18

  1. EIN numerischer Index ist einfach eine Zahl, die die Position eines Elements in einer Sequenz angibt. Tatsächlich haben wir oben bereits numerische Indizes verwendet, um auf bestimmte Elemente von Vektoren zuzugreifen, zum Beispiel:

Wichtig ist, dass die Auswahl bestimmter Vektorelemente durch einen Index erfordert, dass ihre numerische Position in eckige Klammern [] eingeschlossen wird. Im Gegensatz dazu schließen Funktionen ihre Argumente immer in runde Klammern () ein.

  1. EIN logischer Index ist ein Test, der zu einem oder mehreren „logischen“ Werten ausgewertet wird (d. h. entweder WAHR oder FALSCH ). In R speichern wir oft eine Vielzahl von Werten in Vektoren (z. B. die Alterswerte von 5.000 Teilnehmern), benötigen aber nur einen Teil davon für die Beantwortung spezifischer Fragen (z. B. wie alt sind alle männlichen Teilnehmer im Durchschnitt?). Zu auswählen nur eine Teilmenge von Elementen aus einem Vektor v können wir die Bedingung oder das Kriterium für unsere Auswahl in (eckigen) Klammern v[ angeben. ] .

Die Angabe eines numerischen oder logischen Index (in eckigen Klammern) ist eine sehr flexible und leistungsfähige Möglichkeit, Elemente eines Vektors v (oder anderer Datenstrukturen) auszuwählen. Die folgenden Abschnitte enthalten Beispiele für diese beiden Arten von Indizierung oder Untergruppen. Nochmal,
(EIN) Numerische Indizierung verwendet (Vektoren von) Zahlen, um Vektorelemente auszuwählen (zuzugreifen oder zu ändern), und (B) logische Indizierung verwendet (Vektoren von) logischen Werten, um Vektorelemente auszuwählen (zugreifen oder zu ändern).

A. Numerische Indizierung

In Numerische Indizierung (oder numerische Untereinstellung) stellen wir einen numerischen Vektor als Index für einen Vektor bereit. Anstatt nur nach einem einzelnen Element zu fragen, können wir einen numerischen Indexvektor verwenden, um einen neuen Vektor zu erhalten, der die Elemente an den angegebenen Positionen enthält:

Tatsächlich funktioniert die numerische Indizierung auch, wenn Elemente wiederholt ausgewählt werden:

Die Verwendung negativer Indizes wählt alle Elemente außer den negierten aus:

Wichtig ist, dass der zum Auswählen des Elements verwendete Index das Ergebnis eines Funktionsaufrufs sein kann. Zum Beispiel,

Manchmal wissen wir das entweder oder fragen uns, ob ein bestimmter Vektor bestimmte Elemente enthält. Die Funktion what() verwendet einen logischen Test, um die Positionen zu bestimmen, für die ein Test WAHR ist, und gibt die entsprechenden Positionen als numerischen Vektor zurück:

Wenn wir wollten erhalten die entsprechenden Elemente, könnten wir diese numerischen Vektoren verwenden, um dieselben Vektoren zu indizieren oder Teilmengen zu bilden:

In diesen letzten Beispielen wurde zuerst which() verwendet, um numerische Indizes von train zu erhalten, und diese Indizes dann auf train angewendet. Das funktioniert, scheint aber etwas kompliziert zu sein. Eine direktere Möglichkeit, dieselben Elemente zu erhalten, bietet die logische Indizierung.

B. Logische Indizierung

In logische Indizierung (oder logische Teilmenge), wählen wir Elemente eines Vektors v aus, indem wir einen Test (d. h. einen Vektor von „logischen“ Objekten, die entweder WAHR oder FALSCH sind) in eckigen Klammern angeben. Typischerweise entspricht die Länge des logischen Index der Länge des Vektors v.
Die folgende Anweisung wählt beispielsweise das 1. und 2. Element von v1 aus:

Wie bei numerischen Indizes können wir Funktionen verwenden, um die logischen Indizes zu bestimmen. Um Elemente eines Vektors v auszuwählen, definieren wir das Auswahlkriterium als einen logischen Test (d. h. einen Ausdruck von v, der einen logischen Vektor der gleichen Länge zurückgibt) und verwenden das Ergebnis, um den Vektor v zu indizieren. Dies wird als „Subsetting“ bezeichnet, da es nur die Elemente von v zurückgibt, für die das Kriterium WAHR ist.

Um beispielsweise alle Elemente von v1, die Zahlen unter 3 sind, zu erkennen und zu erhalten, könnte das folgende Kriterium und der folgende Indexierungsschritt verwendet werden:

Die logische Indizierung ermöglicht es uns, die Auswahl von oben zu wiederholen (ohne den Umweg der numerischen Indizierung durch which() ):

Beachten Sie, dass jede dieser Auswahlen einen Vektor zweimal verwendet: Einmal, um einen Test durchzuführen, der logische Indizes liefert (dh einen Vektor von Wahrheitswerten, der die gleiche Länge wie der ursprüngliche Vektor hat) und ein zweites Mal, um die Elemente auszuwählen, für die der Test ist wahr .

Eine raffinierte Methode zum Erstellen von Vektoren besteht darin, Objekte zufällig aus einer Population zu ziehen (siehe Abschnitt 1.6.4 über Zufallsstichproben).

Trainieren

Da die Indizierung/Unterteilung von Vektoren ein wichtiges Thema in R ist, sollten wir es ausführlicher üben:

  1. Indizierung numerischer Vektoren:
  • Werten und erklären Sie den folgenden Code (in Bezug auf numerische oder logische Indizierung):
  1. Indizierung von Zeichenvektoren:
  • Die Ergebnisse der folgenden Befehle vorhersagen, auswerten und erklären:

Nehmen Sie die folgende Definition von Gewürzen an:

und verwenden Sie dann eine Kombination aus Funktionen und numerischer oder logischer Indizierung, um Folgendes zu erhalten:

alle Gewürze, außer den ersten beiden

alle Gewürze in Gewürzen mit genau 4 Buchstaben

alle Gewürze mit 8 oder mehr Buchstaben

alle Gewürze mit dem Buchstaben "i" an 2. Stelle

Lösung

Notiz: Anspruchsvollere Möglichkeiten zum Durchsuchen von Textobjekten werden in Anhang E zur Verwendung regulärer Ausdrücke behandelt.

Das R-Objekt LETTERS speichert die 26 Großbuchstaben des lateinischen Alphabets (und die gleichen Buchstaben in Kleinbuchstaben). Somit kann der Vektor c("A", "B", "C") durch numerische Untersetzung erhalten werden, um die ersten drei Buchstaben von LETTERS : LETTERS[1:3] zu erhalten.

Lösen Sie die folgenden Aufgaben mithilfe von Funktionen und numerischer oder logischer Indizierung:

Wie viele Buchstaben haben BUCHSTABEN?

Erzeuge einen Vektor aller BUCHSTABEN bis N

Erstelle einen Vektor der letzten 6 BUCHSTABEN

Erzeuge einen Vektor aller BUCHSTABEN, die nicht in den BUCHSTABEN enthalten sind, bis N

Welche Positionen haben die Vokale in LETTERS?

Erzeuge einen Vektor aller Nicht-Vokale in BUCHSTABEN

Hinweis: Die Buchstaben „A“, „E“, „I“, „O“ und „U“ sind Vokale.

Lösung

Nachdem Sie einige grundlegende Kenntnisse erworben haben mit Vektoren, können wir nun unser Wissen über Datenstrukturen erweitern, indem wir eine zweite Dimension hinzufügen, die Tabellen von Dateien. Eine gute Frage an dieser Stelle ist:

Genau genommen nur in atomare vektoren sind alle Elemente vom gleichen Typ, und Listen sind ebenfalls Vektoren, können aber Elemente unterschiedlichen Typs haben. (Siehe Wickham, 2014a für Details.)


MSc AI Student @ DTU. Dies ist meine Reise zum maschinellen Lernen ɿrom Scratch'. Die leicht verständliche Vermittlung des Gelernten steht für mich an erster Stelle.

Casper Hansen

Was ist ein Vektor?
Was ist Vektoraddition?
Was sind Skalare?

Dies ist der erste in einer Reihe von Grundlagen der Linearen Algebra. Die obigen Fragen sind das, worauf ich mich konzentrieren werde, um Ihnen zu illustrieren. Am Ende der Serie wird es eine Zusammenfassung geben, wie sich die hier gelernten Konzepte der Linearen Algebra auf das maschinelle Lernen beziehen. Und danach ein kleineres Projekt, das einige der wichtigsten Konzepte von hier verwendet.

Nun, erstens, wie könnten wir einen Vektor definieren? In der Mathematik können wir uns einen Vektor als einen Pfeil in einem Koordinatensystem vorstellen. Ein solcher Vektor hat Vektorkoordinaten, wobei die erste vertikale Zahl x entspricht und die zweite y entspricht. Die Notation für den folgenden Vektor wäre $vec=eginnen21Ende$.

Wir könnten es auch als "Vektor v geht 2 entlang der x-Achse und 1 entlang der y-Achse" lesen. Es wird fast immer davon ausgegangen, dass Sie aus dem Ursprung, das ist (0,0).

Grundvektor gezeichnet vom Ursprung $(0,0)$ zum Punkt $(2,1)$, der den Vektor $vec . bildet=eginnen21Ende$

Wir können das Obige direkt an die Informatik übertragen, wo Sie den Datentyp verwenden könnten Aufführen, was beinhaltet n Anzahl zählbarer Werte, und diese Werte sind von $ bis . indiziert n. Wenn wir eine Liste von Vektorkoordinaten hätten, aber in dieser Notation und Reihenfolge $(2,4)$, $(2, -4)$ und $(4,0)$, könnten wir die Liste verwenden, um Vektoren auf ein Koordinatensystem. Beachten Sie, dass die erste Zahl x und die zweite y angibt. Dies könnte fortgesetzt werden, wenn wir Dimensionen hinzufügen. In diesem Python-Code haben wir ziemlich geschummelt, da wir die mathematische Syntax nicht direkt verwenden.

Kurze Erklärung: Wir erstellen ein äußeres Array mit drei inneren Arrays, wir und füllen die inneren Arrays mit entsprechenden Werten bis [startX, startY, endX, endY]. startX und startY ist der erste Punkt und endX und endY ist der zweite Punkt. Wir geben der Methode .quiver an, dass wir X,Y,U,V verwenden und dann wird es geplottet, was das folgende Ergebnis liefert:

Das Ergebnis des Python-Skripts

Das nächste unglaublich wichtige Ding heißt Vektoraddition. Angenommen, wir haben zwei Vektoren $vec=eginnen21Ende$ und $vec=eginnen2-2ende$.

Wie würden wir diese beiden Vektoren addieren? Es ist ganz einfach. Beide Vektoren haben einen x- und einen y-Wert, der der ersten und zweiten Zahl im Vektor entspricht. Wir würden sie wie folgt hinzufügen:

Oder allgemeiner gesagt, wir könnten eine nahezu unendliche Anzahl von Vektoren haben, die weit über das nur 2-dimensionale hinausgehen:

Theoretisch könnten wir die Vektoraddition in einer $m imes n$-Matrix darstellen. In einer solchen Matrix könnten wir die Vektoradditionsoperation oder jede andere Operation in der linearen Algebra durchführen:

Es wäre sicherlich unmöglich, einen 1000-dimensionalen Vektor zu zeichnen, aber es wäre möglich, Datensätze zu verwenden, die so vielen Dimensionen ähneln. Wenn wir in diesem zweidimensionalen Raum bleiben würden, könnten wir einfach weiterhin Punkte zeichnen und Vektoren von einem Punkt zum anderen zeichnen.

Hier ist ein anschauliches Beispiel mit den beiden Vektoren $vec=eginnen21Ende$ und $vec=eginnen2-2ende$.

Beachten Sie, wie wir die beiden Vektoren jetzt platziert haben. Wir haben Schwanz und Kopf, wobei Schwanz der Anfang des Vektors und Kopf das Ende des Vektors ist. Also haben wir $vec . genommen

1: Vektorgrundlagen

Beginnen wir diesen Abschnitt mit einer kurzen Diskussion darüber, wofür Vektoren verwendet werden. Vektoren werden verwendet, um Größen darzustellen, die sowohl eine Größe als auch eine Richtung haben. Gute Beispiele für Größen, die durch Vektoren dargestellt werden können, sind Kraft und Geschwindigkeit. Beide haben eine Richtung und eine Größe.

Betrachten wir einmal die Kraft. Eine Kraft von sagen wir 5 Newton, die in eine bestimmte Richtung aufgebracht wird, kann an jedem Punkt im Raum aufgebracht werden. Mit anderen Worten, der Punkt, an dem wir die Kraft anwenden, ändert die Kraft selbst nicht. Kräfte sind unabhängig vom Angriffspunkt. Um eine Kraft zu definieren, müssen wir nur die Größe der Kraft und die Richtung, in die die Kraft ausgeübt wird, kennen.

Die gleiche Idee gilt allgemeiner mit Vektoren. Vektoren geben nur Größe und Richtung an. Sie geben keine Auskunft darüber, wo die Menge aufgebracht wird. Dies ist eine wichtige Idee, die man sich beim Studium von Vektoren immer merken sollte.

Im grafischen Sinne werden Vektoren durch gerichtete Liniensegmente dargestellt. Die Länge des Liniensegments ist die Größe des Vektors und die Richtung des Liniensegments ist die Richtung des Vektors. Da Vektoren jedoch keine Informationen darüber liefern, wo die Größe angewendet wird, repräsentieren gerichtete Liniensegmente mit derselben Länge und Richtung denselben Vektor.

Betrachten Sie die Skizze unten.

Jedes der gerichteten Liniensegmente in der Skizze repräsentiert denselben Vektor. In jedem Fall beginnt der Vektor an einem bestimmten Punkt und bewegt sich dann 2 Einheiten nach links und 5 Einheiten nach oben. Die Notation, die wir für diesen Vektor verwenden werden, lautet:

[vec v = leftlangle < - 2,5> ight angle]

und jedes der gerichteten Liniensegmente in der Skizze heißt Vertretungen des Vektors.

Achten Sie darauf, die Vektornotation (leftlangle < - 2,5> ight angle) von der Notation zu unterscheiden, die wir zur Darstellung von Punktkoordinaten verwenden, (left( < - 2,5> ight )). Der Vektor bezeichnet eine Größe und eine Richtung einer Größe, während der Punkt einen Ort im Raum bezeichnet. Verwechseln Sie die Notationen also nicht!

Eine Darstellung des Vektors (vec v = leftlangle <,> ight angle) im zweidimensionalen Raum ist jedes gerichtete Liniensegment, (overrightarrow ), ausgehend vom Punkt (A = left( ight)) bis zum Punkt (B = left( ,y + > echts)). Ebenso eine Darstellung des Vektors (vec v = leftlangle <,,> ight angle) im dreidimensionalen Raum ist jedes gerichtete Liniensegment, (overrightarrow ), ausgehend vom Punkt (A = left( ight)) bis zum Punkt (B = left( ,y + ,z + > echts)).

Beachten Sie, dass der Unterschied zwischen den obigen zweidimensionalen und dreidimensionalen Formeln sehr gering ist. Um von der dreidimensionalen Formel zur zweidimensionalen Formel zu gelangen, haben wir nur die dritte Komponente/Koordinate herausgenommen. Aus diesem Grund sind die meisten Formeln hier nur in ihrer dreidimensionalen Version angegeben. Wenn wir sie in ihrer zweidimensionalen Form benötigen, können wir die dreidimensionale Form leicht ändern.

Es gibt eine Darstellung eines Vektors, die in gewisser Weise besonders ist. Die Darstellung des Vektors (vec v = leftlangle <,,> ight angle), die am Punkt (A = left( <0,0,0> ight)) beginnt und am Punkt (B = left( <,,> ight)) heißt die Positionsvektor des Punktes (left( <,,> echts)). Wenn wir also über Positionsvektoren sprechen, geben wir den Anfangs- und Endpunkt des Vektors an.

Positionsvektoren sind nützlich, wenn wir jemals einen Punkt als Vektor darstellen müssen. Wie wir sehen werden, gibt es Zeiten, in denen wir Punkte definitiv als Vektoren darstellen wollen. Tatsächlich werden wir auf Themen stoßen, die nur durchgeführt werden können, wenn wir Punkte als Vektoren darstellen.

Als nächstes müssen wir kurz diskutieren, wie man einen Vektor erzeugt, der die Anfangs- und Endpunkte der Darstellung gegeben hat. Gegeben sind die beiden Punkte (A = left( <,,> ight)) und (B = left( <,,> ight)) der Vektor mit der Darstellung (overrightarrow ) ist,

Beachten Sie, dass wir hier mit der Richtung sehr vorsichtig sein müssen. Der obige Vektor ist der Vektor, der bei (A) beginnt und bei (B) endet. Der Vektor, der bei (B) beginnt und bei (A) endet, d.h. mit Darstellung (overrightarrow ) ist,

Diese beiden Vektoren sind unterschiedlich und daher müssen wir immer darauf achten, welcher Punkt der Start- und welcher Punkt der Endpunkt ist. Bei der Bestimmung des Vektors zwischen zwei Punkten ziehen wir immer den Anfangspunkt vom Endpunkt ab.

  1. Der Vektor von (left( <2, - 7,0> ight)) nach (left( <1, - 3, - 5> ight)).
  2. Der Vektor von (left( <1, - 3, - 5> ight)) nach(left( <2, - 7,0> ight)).
  3. Der Positionsvektor für (left( < - 90,4> ight))

Denken Sie daran, dass wir zum Konstruieren dieses Vektors die Koordinaten des Startpunkts vom Endpunkt subtrahieren.

[leftlangle <1 - 2, - 3 - left( < - 7> ight), - 5 - 0> ight angle = leftlangle < - 1,4, - 5> ight angle]

[leftlangle <2 - 1, - 7 - left( < - 3> ight),0 - left( < - 5> ight)> ight angle = leftlangle <1, - 4,5> echts angle]

Beachten Sie, dass der einzige Unterschied zwischen den ersten beiden darin besteht, dass die Vorzeichen alle entgegengesetzt sind. Dieser Unterschied ist wichtig, da dieser Unterschied uns sagt, dass die beiden Vektoren in entgegengesetzte Richtungen zeigen.

Dazu gibt es nicht viel, außer anzuerkennen, dass der Positionsvektor eines Punktes nichts anderes ist als ein Vektor mit den Koordinaten des Punktes als seinen Komponenten.

Wir müssen jetzt damit beginnen, einige der grundlegenden Konzepte zu diskutieren, auf die wir gelegentlich stoßen werden.

Größe

Das Größe, oder Länge, des Vektors (vec v = leftlangle <,,> ight angle) ist gegeben durch,

  1. (vec a = leftlangle <3, - 5,10> ight angle)
  2. (displaystyle vec u = leftlangle <>, - frac<2><>> ight angle )
  3. (vec w = leftlangle <0,0> ight angle)
  4. (vec i = leftlangle <1,0,0> ight angle)

Es gibt nicht zu viel zu diesen anderen, als in die Formel einzustecken.

b (displaystyle left| ight| = sqrt <5>+ frac<4><5>> = sqrt 1 = 1)

Wir haben auch die folgende Tatsache über die Größe.

Dies sollte Sinn machen. Da wir alle Komponenten quadrieren, können wir nur Null aus der Formel herausbekommen, wenn die Komponenten überhaupt Null sind.

Einheitsvektor

Jeder Vektor mit der Größe 1 d.h. (left| ight| = 1), heißt a Einheitsvektor.

Sowohl der zweite als auch der vierte Vektor hatten eine Länge von 1 und sind somit die einzigen Einheitsvektoren aus dem ersten Beispiel.

Nullvektor

Der Vektor (vec w = leftlangle <0,0> ight angle), den wir im ersten Beispiel gesehen haben, heißt Nullvektor, da seine Komponenten alle Null sind. Nullvektoren werden oft mit (vec 0) bezeichnet. Achten Sie darauf, 0 (die Zahl) von (vec 0) (der Vektor) zu unterscheiden. Die Zahl 0 bezeichnet den Ursprung im Raum, während der Vektor (vec 0) einen Vektor ohne Betrag oder Richtung bezeichnet.

Standard-Basisvektoren

Der vierte Vektor aus dem zweiten Beispiel, (vec i = leftlangle <1,0,0> ight angle), heißt a Standardbasisvektor. Im dreidimensionalen Raum gibt es drei Standardbasisvektoren,

[vec i = leftlangle <1,0,0> ight angle hspace<0.25in>vec j = leftlangle <0,1,0> ight angle hspace<0.25 in>vec k = leftlangle <0,0,1> ight angle]

Im zweidimensionalen Raum gibt es zwei Standardbasisvektoren,

[vec i = leftlangle <1,0> ight angle hspace<0.25in>vec j = leftlangle <0,1> ight angle ]

Beachten Sie, dass Standardbasisvektoren auch Einheitsvektoren sind.

Wir sind mit diesem Abschnitt jedoch ziemlich fertig, bevor wir jedoch zum nächsten Abschnitt übergehen, sollten wir darauf hinweisen, dass Vektoren nicht auf den zweidimensionalen oder dreidimensionalen Raum beschränkt sind. Vektoren können im allgemeinen n-dimensionalen Raum existieren. Die allgemeine Schreibweise für einen n-dimensionalen Vektor lautet:

[vec v = leftlangle <,,, ldots ,> echts angle]

und jeder der () heißen Komponenten des Vektors.

Da wir in diesem Kurs fast ausschließlich mit zwei- und dreidimensionalen Vektoren arbeiten, werden die meisten Formeln für die zwei- und/oder dreidimensionalen Fälle angegeben. Die meisten Konzepte/Formeln funktionieren jedoch mit allgemeinen Vektoren und die Formeln können leicht (und natürlich) für allgemeine n-dimensionale Vektoren modifiziert werden. Da es einfacher ist, Dinge in zwei Dimensionen zu visualisieren, sind die meisten Figuren, die sich auf Vektoren beziehen, zweidimensionale Figuren.

Wir müssen also aufpassen, dass wir uns nicht zu sehr auf die zwei- oder dreidimensionalen Fälle aus unseren Diskussionen in diesem Kapitel einlassen. Wir werden in diesen Dimensionen arbeiten, entweder weil es einfacher ist, die Situation zu visualisieren oder weil uns physische Einschränkungen der Probleme eine Dimension aufzwingen.


Wir kennen vielleicht die Größe und Richtung eines Vektors, wollen aber seine x- und y-Längen (oder umgekehrt):

<=>
Vektor ein in Polar
Koordinaten
Vektor ein auf kartesisch
Koordinaten

Sie können lesen, wie man sie in Polar- und kartesischen Koordinaten umwandelt, aber hier ist eine kurze Zusammenfassung:

  • x = r &mal weil ( &theta )
  • y = r &mal Sünde( &theta )
  • r = &radisch ( x 2 + y 2 )
  • &theta = tan -1 ( y / x )

Richtung einer Linie (3 Dimensionen)

Diese Frage von 1997 hofft auf eine Möglichkeit, die Richtung eines dreidimensionalen Vektors ähnlich dem Winkel oder der Neigung im vorherigen Problemtyp anzugeben:

Doktor Rob antwortete und sprach zuerst von Flugzeugen und nicht von Linien:

Die beiden Standardformen, die er für eine Ebene nennt, sind in der Tat $a’x + b’y + c’z = d’$ wobei der Vektor (ein‘, B‘, C‘) ist ein Einheitsvektor, der als Einheitsnormalenvektor bezeichnet wird (dies werden wir später in dieser Serie oder einer nachfolgenden Serie sehen) und $frac + frac + frac = 1$ wobei EIN, B, und C sind die Achsenabschnitte auf den drei Achsen. Der Normalenvektor repräsentiert die Richtung der Ebene.

Aber die Frage bezog sich auf eine Linie, und die gerade erwähnten “Richtungskosinus” für den Einheitsnormalenvektor werden auch hier angezeigt:

Wir könnten jedoch sagen, dass das Dreifachverhältnis ein : B : C ist ein vernünftiges Analogon der Steigung einer Geraden, auch wenn es sich nicht um eine Zahl handelt, sind die Richtungskosinus, wie wir weiter unten sehen werden, nur die Komponenten der Einheitsvektor in Richtung der Linie.


Skalarmultiplikation

Wir können die Größe eines Vektors erhöhen oder verringern, indem wir den Vektor mit einem Skalar multiplizieren.

Beispiel 3 - Skalarmultiplikation

In den Beispielen, die wir zuvor gesehen haben, Vektor B (2 Einheiten) ist halb so groß wie der Vektor EIN (das sind 4 Einheiten). Wir können schreiben:

B = 0.5 EIN

Dies ist ein Beispiel für ein skalares Vielfaches. Wir haben den Vektor . multipliziert EIN durch den Skalar 0,5.

Beispiel 4 - Skalarmultiplikation

Wir haben 3 Gewichte, die an einen Balken gebunden sind.

Das erste Gewicht ist W1 = 5 N, die zweite ist W2 = 2 N und der dritte ist W3 = 4 N.

Wir können diese Gewichte mithilfe eines Vektordiagramms (wobei die Länge des Vektors die Größe darstellt) wie folgt darstellen:

Sie sind Vektoren, weil sie alle eine Richtung (abwärts) und einen Betrag haben.

Jedes der folgenden skalaren Vielfachen ist für diese Situation wahr:

Da `5 = 2.5 × 2` ist, können wir schreiben:

Da `2 ​​= 0.5 × 4` ist, können wir schreiben:

Da `4 = 0.8 × 5` ist, können wir schreiben:

Jede dieser Aussagen ist eine Skalarmultiplikation.


Die folgenden Membertypen können von Memberfunktionen als Parameter oder Rückgabetyp verwendet werden.

Sr.Nr. Mitgliedstypen Definition
1 Werttyp T (Erster Parameter der Vorlage)
2 allocator_type Alloc (Zweiter Parameter der Vorlage)
3 Hinweis value_type&
4 const_reference const value_type&
5 Zeiger Werttyp*
6 const_pointer const value_type*
7 Iterator ein Iterator mit wahlfreiem Zugriff auf value_type
8 const_iterator ein Iterator mit wahlfreiem Zugriff auf const value_type
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 Größe_Typ Größe_t
12 Differenz_Typ ptrdiff_t


Warum Vektoren in C++ verwenden?

Vektoren C++ sind vorzuziehen, wenn Sie sich ständig ändernde Datenelemente verwalten.

Dies ist praktisch, wenn Sie vorher nicht wissen, wie groß die Daten sind, da Sie die maximale Größe des Containers nicht festlegen müssen. Da es möglich ist, die Größe von C++-Vektoren zu ändern, bietet es eine bessere Flexibilität beim Umgang mit dynamischen Elementen.

C++-Vektoren bieten eine hervorragende Effizienz. Es ist eine Vorlagenklasse, was bedeutet, dass Sie nicht mehr denselben Code eingeben müssen, um verschiedene Daten zu verarbeiten.

Wenn Sie Vektoren verwenden, können Sie problemlos andere Vektoren kopieren und zuweisen. Es gibt verschiedene Möglichkeiten, dies zu tun: Verwenden der iterativen Methode, des Zuweisungsoperators = , einer integrierten Funktion oder der Übergabe von vector als Konstruktor.

In C++-Vektoren erfolgt die automatische Neuzuweisung immer dann, wenn der gesamte Speicher verwendet wird. Diese Neuzuweisung bezieht sich darauf, wie die Funktion Größe und Kapazität funktioniert.


Adenovirus-Vektoren

Adenoviren gehörten zu den ersten Viren, die als potenzielle Gentherapievektoren untersucht wurden. Es ist bekannt, dass Wildtyp-Adenoviren Infektionen der Atemwege, d. h. “die Erkältung”, beim Menschen verursachen, und sie können auch andere Organe wie das Gehirn und die Blase infizieren. Es wurden mehr als 50 verschiedene adenovirale Serotypen gefunden, die den Menschen infizieren, und die Serotypen 2 und 5 sind die am umfassendsten charakterisierten. Es gibt auch über 30 nicht-humane Primaten-Adenoviren, die isoliert und charakterisiert wurden, z. von Schimpansen.

Adenovirus-Vektoren in der Gentherapie

Adenovirus-Vektoren werden im Allgemeinen durch Entfernen der E1-Region, die für die Replikation verantwortlich ist, und anderer Gene der “frühen Phase” entfernt und durch das Transgen ersetzt. Die Verpackungskapazität gewöhnlicher Adenovirus-Vektoren beträgt

8kb. Adenovirus-Vektoren werden in HEK293-Zelllinien mit stabil exprimierenden E1-Proteinen hergestellt, die eine Replikation und Verpackung ermöglichen. Heutzutage ist es auch möglich, Adenovirus-Vektoren zu konstruieren, indem fast alle viralen Gene entfernt werden. Diese sogenannten “high-capacity”, “gutless” oder “Helfer-abhängigen” Adenovirus-Vektoren können Inserts bis zu einer Größe von . aufnehmen

36 kb. Sie sind nicht nur wegen der deutlich größeren Kapazität attraktiv, sondern auch wegen der stabilen Expression und der reduzierten Immunogenität [15,16]. Production of such Adenovirus vectors requires modified helper viruses and modified HEK293 producer cell lines. Helper virus contaminants need to be effectively removed from the final preparation, making the production of high-capacity Adenovirus vectors more challenging.

Advantages of Adenovirus vectors

Adenoviruses are attractive vehicles for gene therapy mainly because of their high packaging capacity. Adenovirus vectors can also transfect both dividing and non-dividing cells in a broad range of cell and tissue types. The Adenovirus DNA does not integrate into the host genome but remains episomal. Thus Adenovirus vectors are suitable for therapeutics that need high, but temporary, gene expression. Some vaccines and oncolytic therapies benefit from the immunogenicity and cellular toxicity of the Adenovirus vectors, but constitute a major obstacle for most gene therapies.

Limitations of Adenovirus vectors

The most significant limitation of Adenovirus vectors is pre-existing immunity in patients and the substantial immune response they may trigger. Most adults have been exposed to Adenoviruses, as they are common pathogens in humans, andthus the immune system will also attack the Adenovirus-based therapeutic vector. If this is the case, the body will recognize the proteins on the Adenovirus vector shells and destroy them before the therapeutic gene is delivered. Several strategies are being employed to circumvent pre-existing immunity against Adenovirus vectors, such as the use of rare human serotypes or non-human Adenovirus vectors, e.g., chimpanzee-derived, shielding the surface of Adenoviruses with polyethylene glycol, or encapsulating the vectors into alginate microspheres [17]. Despite the developments in Adenovirus vector engineering, they can still trigger host immunogenicity and cellular toxicity [18].

Advantages and limitations of Adenovirus vectors

Examples of commercially available adenovirus vector-based products

Verweise

[3] Erika Check. Regulators split on gene therapy as patient shows signs of cancer. Nature 2002 419: 545–546. https://www.nature.com/articles/419545a#rightslink

[4] David RM, Doherty AT. Viral Vectors: The Road to Reducing Genotoxicity. Toxicol Sci. 2017155(2):315-325.

[5] Nayak S, Herzog RW. Progress and prospects: immune responses to viral vectors. Gene Ther. 201017 :295-304. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3044498/

[6] Atchison, R. W., Casto, B. C. & Hammon, W. M. Adenovirus-associated defective virus particles. Science 149, 754–756 (1965). 124. Matsushita, T. et al.

[7] Vandenberghe, L., Wilson, J. & Gao, G. Tailoring the AAV vector capsid for gene therapy. Gene Ther 2009 16: 311–319 https://www.nature.com/articles/gt2008170

[8] Claire Domenger, Dirk Grimm. Next-generation AAV vectors—do not judge a virus (only) by its cover. Human Molecular Genetics 2019 28: R3–R14. https://academic.oup.com/hmg/article/28/R1/R3/5526799?login=true

[9] McClements ME, MacLaren RE. Adeno-associated Virus (AAV) Dual Vector Strategies for Gene Therapy Encoding Large Transgenes. Yale J Biol Med. 2017 1990(4):611-623. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5733846/

[15] Liu J, Seol DW. Helper virus-free gutless adenovirus (HF-GLAd): a new platform for gene therapy. BMB Rep. 202053(11):565-575. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7704218/#ref7

[16] Ricobaraza A., et al. High-Capacity Adenoviral Vectors: Expanding the Scope of Gene Therapy. Int J Mol Sci. 2020 2121(10):36. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7279171/

[17] Vemula SV, Mittal SK. Production of adenovirus vectors and their use as a delivery system for influenza vaccines. Expert Opin Biol Ther. 201010(10):1469-87https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2951029/

[18] Wang, Q. & Finer, M. H. Second-generation adenovirus vectors. Nat. Med. 2, 714–716 (1996).


Schau das Video: Grundlagen Vektoren Analytische Geometrie. Gehe auf u0026 werde #EinserSchüler (September 2021).