/**
* Interface zur Modellierung eines m
-dimensionalen Vektors.
* Eine implementierende Klasse sollte immutable sein.
*/
public interface Vektor {
/**
* Gibt die Länge des Vektors zurück.
*
* @return Länge des Vektors
*/
int getLaenge();
/**
* Gibt den Wert des Vektors an Position position
* zurück.
*
* Für gültige Positionen position
in einem Vektor
* v
gilt: position
≥1 und
* position
≤ v.{@link #getLaenge()}
.
*
* @return der Wert des Vektors an Position position
*/
double get(int position);
/**
* Berechnet die Summe zwischen diesem Vektor und einem weiteren Vektor
* v
.
*
* @param v
* der Vektor, der addiert wird
* @return das Ergebnis der Addition dieses Vektors mit v
*/
Vektor plus(Vektor v);
/**
* Berechnet das Produkt skalar*v
von diesem Vektor
* v
und einem Skalar skalar
.
*
* @param skalar
* Skalar, mit dem dieser Vektor multipliziert wird
* @return das Ergebnis der Skalarmultiplikation
*/
Vektor mal(double skalar);
/**
* Berechnet das kanonische Skalarprodukt vT*w
* aus diesem Vektor v
und dem gegebenen Vektor
* w
.
*
* @param w
* Vektor, der als Spaltenvektor von rechts auf diesen Vektor
* (als Zeilenvektor) multipliziert werden soll
* @return das kanonische Skalarprodukt vT*w
aus
* diesem Vektor v
und dem gegebenen Vektor
* w
*/
double kanonischesSkalarprodukt(Vektor w);
/**
* Wendet die Matrix m
auf diesen Vektor v
an.
*
* Das Ergebnis ist die Transformation m*v
.
*
* @param m
* Matrix, die auf diesen Vektor angewendet wird
* @return das Ergebnis der Anwendung der Matrix m
auf diesen
* Vektor
*/
Vektor transformiere(Matrix m);
/**
* Gibt eine einfache String-Repräsentation dieses Vektors zurück.
*
* @return String-Repräsentation des Vektors
*/
String toString();
/**
* Gibt eine String-Repräsentation dieses Vektors zurück
*
* Die Einträge sollen dabei in Dezimalpunktnotation mit einer festen
* Anzahl von Nachkommastellen dargestellt werden.
*
* @param nachkommastellen
* erwünschte Anzahl der Nachkommastellen
* @return String-Repräsentation des Vektors
*/
String toString(int nachkommastellen);
}