kartesischer Vektor im n-dimensionalen Raum.

Status
Nicht offen für weitere Antworten.

stevarino

Mitglied
Hallo

Ich hab folgende Aufgabe
Ein Vektor ist im n-dim. Raum mit den kartesischen Koordinaten durch n
Gleitkommazahlen, etwa ein Array gegeben.
Erstellen Sie eine Klasse Vektor, welche das Arbeiten mit Vektoren ermöglicht:
Die Methoden (Funktionen) für die Addition void add(Vektor V), die Skalarmultiplikation
scalar(double d) und den Betrag double length() sind zu realisieren.
Erzeugen und Initialisieren Sie diese Klasse mit geeigneten Konstruktoren.
Erweitern Sie Ihre Klasse um die Funktionen boolean equals(Vektor V) zur Prüfung auf
gleichen Inhalt, toString() zur Ausgabe eines Vektors sowie Vektor clone() zum
duplizieren der Werte eines Vektors.

Mein Problem liegt wie deklariere ich einen n-Dimensionalen Vector?

für 2 Dimensionale Vektoren sieht das glaub ich so
Code:
class Vector {

	double x, y;

	Vector(double x, double y) {
								this.x = x; this.y = y;
						}
könnte das vielleicht so gehen
Code:
class Vector {

	double[] a;

	Vector(double[]a)              {
								this.x = x; this.y = y;// was muss ich hierfür schreiben???



						}
Ich hoffe ich konnte mein Problem irgendwie rüberbringen

Danke schon mal

lg Stevo

[Edit by Beni: Codetags repariert]
 
Schreib:
Code:
public Vector( double[] a ){
  this.a = a;
}

Oder wenn du Java 1.5 verwendest:
Code:
public Vector( double...a ){
  this.a = a;
}

Später kannst du dann "a" verwenden, um z.B. die Länge auszurechnen:
Code:
public double length(){
  double sum = 0;
  for( double x : a )
    sum += x*x;
  
  return Math.sqrt( sum );
}
 
nenn deine Klasse lieber nicht "Vector" sondern "Tupel", leider gibts in der API schon eine java.util.Vector und da wäre das für die meisten Javaianer irgendwie verwirrend

die obige Lösung ist schon sehr elegant und leistungsfähig, aber in dem Fall musst du aufpassen und immer "den kürzeren nehmen"
Code:
public void add(Vector v){
    for( int i=0;i<Math.min(a.length(),v.length()); i++ )
    this.a[i] += v.a[i];
}
 
Hallo

Später kannst du dann "a" verwenden, um z.B. die Länge auszurechnen:
Code:
public double length(){
  double sum = 0;
  for( double x : a )
    sum += x*x;
  
  return Math.sqrt( sum );
}

Ich verstehe die for Schleifen Bedingung nicht ganz was beudeutet x:a

hier ich hätte mir das so vorgestellt

Code:
void length() 	{
					double sum=0,
					for(i=0;i<=a.length-1;i++)	{
												sum = sum+(a[i]*a[i]);
												}
                                Math.sqrt(sum)
					}


Danke

Stevo
 
Ah, das "double x : a" ist nur eine Kurzform für "for( int i = 0; i < a.length; i++ ){ double x = a }"
 
Hallo

Ich bins nochmal ich hab das Programm jetzt fertig aber ich bekomms einfach nicht zum laufen hier mal mein code

Code:
class Tupel {

	double []a;

	public Tupel(double[] a)	{
  								this.a = a;
								}

	double length(Tupel v) 	{
					double sum=0;
					for(i=0;i<=a.length-1;i++)	{
												sum = sum+(a[i]*a[i]);
												}
					return Math.sqrt(sum);
					}

	void add(Tupel v) 	{
						for(i=0;i<=a.length-1;i++) 	{
													this a[i]=a[i]+v.a[i];
													}

						}

	void multiply(double d) 	{
								for(i=0;i<=a.length-1;i++)	{
															this a[i]=a[i]*d;
															}
								}

	double scalarProduct(Tupel v) 	{
									double skalar=0;
									for(i=0;i<=a.length-1;i++)	{
																skalar=skalar+a[i]*v.a[i];
																}
									return skalar;
									}

	public String toString() 	{
								for(i=0;i<=a.length-1;i++)	{
															String s =s+"(," + a[i] + ")";
															}
								return s;
								}
				}

public class A3 {

	public static void main(String args[]) {
											Tupel v = new Tupel(new double[]a={1,2,3,4});
											v.add(new Tupel(new double[]a={4,3,2,1}));
											Out.println("v = " + skalar);
											Out.println("scalar product = " + v.scalarProduct(new                       Tupel(new double[]a={3,3,3,3})));
											}
				}
wo ich mir nicht sicher bin ist besonders die ToString Methode und das main Programm der rest sollte eigentlich passen beim compilieren sagt er ; expected oder ) expected ich hab aber alle Klammern geschlossen und überall wo ein ; hingehört ein ; stehen
Und beim array steht Dimension missing aber a[] heißt doch 1.dimensional a[][] 2.dimensional und so weiter

ich danke euch jetzt schon mal recht herzlich für eure Hilfe


lg Stevo
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben