ForHosting KIT · Mathematik

Gram-Schmidt-Rechner

Geben Sie unabhängige Vektoren ein und erhalten Sie eine Orthonormalbasis desselben Raums: (1, 1, 0), (1, 0, 1) und (0, 0, 3) werden zu drei senkrechten Einheitsvektoren, der erste ist Ihr erster Vektor auf Länge 1 gebracht. Kostenlos in Ihrem Browser.

  • Kostenlos
  • Läuft in Ihrem Browser
  • Ohne Anmeldung
  • Ihre Daten bleiben auf Ihrem Gerät
Nutzen Sie es über WebAPIE-MailTelegramApp bald

Das Gram-Schmidt-Verfahren nimmt eine Menge linear unabhängiger Vektoren und liefert eine Orthonormalbasis: gleich viele Vektoren, jeder mit Länge eins, jeder senkrecht zu allen anderen, und sie spannen exakt denselben Unterraum auf wie die ursprünglichen Vektoren. Sind die Vektoren linear abhängig, meldet der Rechner dies, statt ein falsches Ergebnis auszugeben.

Was das Gram-Schmidt-Verfahren tatsächlich tut

Orthonormalbasen erleichtern nahezu jede Berechnung in der linearen Algebra: Projektionen werden zu Skalarprodukten, Koordinaten werden trivial und numerische Fehler bleiben klein. Das Gram-Schmidt-Verfahren konstruiert eine solche Basis aus jeder unabhängigen Menge. Es nimmt den ersten Vektor und skaliert ihn auf Einheitslänge; das ist der erste Basisvektor.

Für jeden weiteren Vektor zieht es den Anteil ab, der in Richtung jedes bereits gefundenen Basisvektors zeigt – die Projektion, berechnet als Skalarprodukt – und skaliert dann das Verbleibende. Dieser Rest steht konstruktionsbedingt senkrecht auf allem Davor. Wiederholen Sie das für alle Vektoren, und Sie erhalten eine Orthonormalbasis desselben Spanns.

Der Rechner auf dieser Seite führt exakt dieses klassische Verfahren aus: Sie geben Vektoren als Arrays von Zahlen ein, alle mit derselben Dimension, und erhalten die orthonormalen Vektoren in der entsprechenden Reihenfolge. Der erste Ausgabevektor ist lediglich Ihr erster Eingabevektor, normalisiert; jede spätere Ausgabe ist der wirklich neue Anteil Ihrer Eingabe, auf Einheitslänge gebracht. Da die gesamte Berechnung schlichte Arithmetik mit Doubles ist, liefert dieselbe Eingabe stets dieselbe Ausgabe – genau das macht sie sicher für den Einbau in automatisierte Pipelines.

Warum lineare Abhängigkeit ein Fehler ist und kein Ergebnis

Gram-Schmidt hat keine sinnvolle Antwort, wenn die Eingabevektoren linear abhängig sind. Ist ein Vektor eine Kombination der vorherigen, entfernt das Subtrahieren der Projektionen ihn vollständig: Es bleibt nichts zum Normieren übrig, und eine Division durch einen Rest der Länge null wäre unsinnig. Ein Rechner, der diesen Vektor stillschweigend wegließe oder eine Nullzeile ausgäbe, würde Ihnen eine Basis liefern, die nicht zur Anzahl Ihrer Eingaben passt und einen Modellierungsfehler verbirgt.

Dieselbe Prüfung erkennt die offensichtlichen Grenzfälle: einen Nullvektor, einen doppelten Vektor oder mehr Vektoren als die Dimension des Raums, was allein durch Abzählen abhängig ist. Die Toleranz ist numerisch, nicht exakt, sodass auch nahezu abhängige Mengen aus Messrauschen gemeldet werden. Wenn Sie die Menge für unabhängig hielten, sagt Ihnen die Fehlermeldung, welchen Vektor Sie prüfen sollten – das reicht meist, um die doppelte Zeile oder den Kopierfehler in Ihren Daten zu finden.

Praktische Details: Eingabeform, Genauigkeit und Grenzen

Die Eingabe ist ein einziges Feld, vectors, als Array von Arrays endlicher Zahlen – ein inneres Array pro Vektor, alle mit derselben Dimension, bis zu 50 Vektoren der Dimension bis zu 50. Die Ausgabe nennt die Dimension, die Anzahl der erzeugten Orthonormalvektoren und die Basis selbst als Array von Einheitsvektoren. Die Komponenten werden auf sechs Nachkommastellen gerundet, sodass Ergebnisse maschinenübergreifend stabil und sicher vergleich- und speicherbar sind; jeder zurückgegebene Vektor hat die euklidische Norm 1 und steht bis auf diese Rundung senkrecht auf seinen Gefährten.

Der Rechenaufwand ist O(n² mal der Dimension), was bei diesen Grenzen Mikrosekunden bedeutet – die beobachtete Latenz ist also im Wesentlichen Transport, nicht Arithmetik. Ein nützlicher Plausibilitätscheck vor dem Senden: Kein Vektor darf der Nullvektor sein, keine zwei Vektoren dürfen gleich sein, und die Anzahl der Vektoren darf die Dimension nicht überschreiten. Für stark schlecht konditionierte Mengen in ernsthafter numerischer Arbeit bieten modifiziertes Gram-Schmidt oder eine Householder-QR-Zerlegung zusätzliche Stabilität, doch für die Größen, die dieser Rechner akzeptiert, ist das klassische Verfahren weit über die sechs gemeldeten Dezimalstellen hinaus genau.

Richtungen in Grafik- oder Simulationsprojekten orthogonalisieren

Wandeln Sie nahezu orthogonale Frame-Vektoren in eine echte Orthonormalbasis um, bevor Sie Rotationen zusammensetzen, damit sich Rundungsdrift nicht anhäuft.

Eine Basis für einen Least-Squares- oder Projektionsschritt vorbereiten

Projizieren Sie Daten auf einen Unterraum, indem Sie mit Orthonormalbasisvektoren multiplizieren, statt jedes Mal ein lineares Gleichungssystem zu lösen.

Hausaufgaben und Lehrbeispiele nachprüfen

Verifizieren Sie eine von Hand gerechnete Gram-Schmidt-Aufgabe Schritt für Schritt und sehen Sie genau, welcher Vektor die Unabhängigkeit bricht, wenn die Menge abhängig ist.

Was kostet das?

Auf dieser Seite läuft es kostenlos in Ihrem Browser, mit demselben Code.

Welche Eingabe wird erwartet?

Ein vectors-Feld: ein Array von Arrays endlicher Zahlen, ein inneres Array pro Vektor, alle mit derselben Dimension – bis zu 50 Vektoren der Dimension bis zu 50.

Wie genau ist das Ergebnis?

Die Komponenten werden in doppelter Genauigkeit berechnet und auf sechs Dezimalstellen gerundet. Jeder Ausgabevektor hat Einheitsnorm und steht bis auf diese Rundung senkrecht auf den anderen.

Spielt die Reihenfolge der Eingabevektoren eine Rolle?

Ja. Der erste Ausgabevektor ist die normalisierte erste Eingabe; spätere Ausgaben sind die orthogonalisierten Reste in derselben Reihenfolge. Eine Vertauschung der Eingabe ergibt daher eine andere, ebenso gültige Orthonormalbasis.

Was passiert, wenn meine Vektoren linear abhängig sind?

Der Rechner bricht ab und nennt Ihnen den Vektor, der keine neue Richtung beiträgt, statt ihn wegzulassen oder eine Nullzeile auszugeben. Ein Nullvektor, ein doppelter Vektor oder mehr Vektoren als die Dimension gelten als abhängig.

Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.

POSThttps://api.kit.forhosting.com/math/gram-schmidt

Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.

curl -X POST https://api.kit.forhosting.com/math/gram-schmidt \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"vectors":[[1,1,0],[1,0,1],[0,0,3]]}'
{
  "vectors": [
    [
      1,
      1,
      0
    ],
    [
      1,
      0,
      1
    ],
    [
      0,
      0,
      3
    ]
  ]
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.gram_schmidt",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.

pro Anfrage$0.002

Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.

max_vectors50
max_dimension50
HTTPCodeBedeutung
401unauthorizedDer API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer).
402insufficient_balanceIhr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht.
404unknown_typeUnbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog.
429rate_limitedZu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt.

Fügen Sie Ihre Vektoren hier ein und erhalten Sie die Orthonormalbasis Schritt für Schritt im Browser berechnet, oder rufen Sie die API auf, um Vektormengen in einem Skript, einer Tabellen-Pipeline oder einem numerischen Workflow zu orthogonalisieren.

Warum lineare Abhängigkeit ein Fehler ist und kein Ergebnis

Dieser Endpunkt behandelt Abhängigkeit als Vertragsverletzung: Er prüft der Reihe nach, ob jeder Vektor eine neue Richtung beisteuert, und liegt Vektor k im Spann der vorherigen, antwortet er mit einem invalid_input-Fehler, der den betreffenden Vektor benennt – und ein Fehleraufruf wird nicht abgerechnet.

Was passiert, wenn meine Vektoren linear abhängig sind?

Die Anfrage schlägt mit einem invalid_input-Fehler fehl, der den ersten Vektor benennt, der im Spann der vorherigen liegt. Fehleraufrufe werden nicht abgerechnet.

Kann ich ihn für komplexe Vektoren verwenden?

Nein. Es werden nur reelle Vektoren akzeptiert; die Einträge müssen endliche JSON-Zahlen sein.

Vollständige KIT-Dokumentation lesen →