Antwort mit KI erzeugt
Vektoren in Haskell addieren, Skalarprodukt berechnen und Rechtwinkligkeit bestimmen
1. Vektoren addieren
Zuerst müssen wir die Funktion zur Vektorenaddition korrigieren. Die Funktionssignatur und die Funktion selbst sollten wie folgt aussehen:
haskell
addVectors :: (Num a) => (a, a, a) -> (a, a, a) -> (a, a, a)
addVectors (a1, a2, a3) (b1, b2, b3) = (a1 + b1, a2 + b2, a3 + b3)
Hier ist die Korrektur zu beachten: Die Ausgabe der Summe der Komponenten wird als ein Tupel wiedergegeben.
2. Skalarprodukt berechnen
Die Funktionssignatur und die Funktion zur Berechnung des Skalarprodukts sollten wie folgt aussehen:
haskell
scalarProduct :: (Num a) => (a, a, a) -> (a, a, a) -> a
scalarProduct (a1, a2, a3) (b1, b2, b3) = a1 * b1 + a2 * b2 + a3 * b3
Das Skalarprodukt ist die Summe der Produkte der jeweiligen Komponenten der beiden Vektoren.
3. Bestimmen, ob der Winkel rechtwinkelig ist
Um zu bestimmen, ob der Winkel zwischen zwei Vektoren rechtwinkelig ist, prüfen wir, ob das Skalarprodukt 0 ist:
haskell
isOrthogonal :: (Eq a, Num a) => (a, a, a) -> (a, a, a) -> Bool
isOrthogonal v1 v2 = scalarProduct v1 v2 == 0
Hier verwenden wir die Funktion
scalarProduct
, die wir bereits definiert haben, um zu überprüfen, ob das Produkt Null ergibt.
Insgesamt sollten die Funktionen so aussehen:
haskell
-- Addieren der Vektoren
addVectors :: (Num a) => (a, a, a) -> (a, a, a) -> (a, a, a)
addVectors (a1, a2, a3) (b1, b2, b3) = (a1 + b1, a2 + b2, a3 + b3)
-- Skalarprodukt der Vektoren
scalarProduct :: (Num a) => (a, a, a) -> (a, a, a) -> a
scalarProduct (a1, a2, a3) (b1, b2, b3) = a1 * b1 + a2 * b2 + a3 * b3
-- Überprüfung rechtwinkliger Winkel
isOrthogonal :: (Eq a, Num a) => (a, a, a) -> (a, a, a) -> Bool
isOrthogonal v1 v2 = scalarProduct v1 v2 == 0
Mit diesen Funktionen kann man Vektoren addieren, das Skalarprodukt berechnen und überprüfen, ob zwei Vektoren orthogonal (rechtwinklig) zueinander sind.