0 Daumen
433 Aufrufe

Aufgaben:

1. Eine Funktion schreiben die Vektoren addiert

2. Eine Funktion die Skalarprodukt berechnet

3. Eine Funktion die anhand des Skalarprodukts  bestimmen kann, ob der Winkel rechtwinkelig ist.


Meine Ansätze:

1.
addVectors:: (Num a) => a -> a -> a
addVectors (a1, a2, a3) (b1, b2, b3) = (a1 + b1) (a2 + b2) (a3 + b3)

2.
scalarProduct:: (Num a) => a -> a -> a
scalarProduct (a1, a2, a3) (b1, b2, b3) = (a1 * b1) (a2 * b2) (a3 * b3)

3.
Da bin ich mir nicht sicher wie ich es Ausdrücken soll. Am Ende soll halt True rauskommen. Das wahrscheinlich, wenn das Skalarprodukt 0 ergibt.

Avatar von

1 Antwort

0 Daumen

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.
Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community