Norm des Rn

Hallo folgende Aufgabe: Norm des Rn
Der n-dimensionale Raum Rn hat die Standardnorm |x| = Wurzel aus *dann das Summenzeichen mit oben n und unten i = 1* xi^2
, wobei x = (x1; x2; :::; xn) ein n-Tupel ist. Diesen Tupel fassen wir in Java als double-Array auf. Sie können also in
Java eine Funktion double getNorm(double [] array); schreiben, welche die Norm dieses
Arrays berechnet. Die Dimension des Arrays können Sie mit array.length abfangen,
s.d. Sie n 2 N abstrakt halten können/sollen.

Kann mir mal jemadn erklären was hier gemeint ist ? also keinen Programcode, sondern ich möchte wissen was ich hier machen soll ich versteh nicht was das soll ?

angenommen ich schreibe zwei Methoden, eine getNorm und eine main-Methode

in der main-Methode bestimme ich das n (bsp. 2) dann kommt raus |x|=x1^2+x2^2 oder was ? und was soll dann das programm machen ? x ist doch auch nicht bestimmt ?

checkt das jemand auch wenn ich die Formel hier nicht geshceit abbilden kann ?
 
S

SlaterB

Gast
die Methode heißt doch nicht
[c]double getNorm(); // denk dir dein x selber [/c]

sondern
[c]double getNorm(double [] array);[/c]
der Parameter array ist der Vektor bzw. dasTupel, jede einzelne Koordinate ist exakt vorgegeben,
diese nur zusammenrechnen


aus einem Vektor mit n = 2, z.B. (1,3) ist die Norm wurzel(1*1+3*3)
 

icarus2

Top Contributor
Also wenn ihr die euklidische Norm verwendet (denke ich jetzt mal), dann gilt

||x|| = sqrt(x' * x) = sqrt( sigma( x^2, k = 1, n ) ), wobei x' die Transponierte von x ist.

*Edit
Und ich war mal wieder zu langsam ^^
 

Andi_CH

Top Contributor
... und vor allem hat es rein gar nichts mit JAVA zu tun - und dann noch im Anfänger-Thread:shock:

SCNR - aber es muss doch wieder mal gesagt werden. Es gibt sicher irgendwo ein Forum dass sich mit Mathe-Themen auseinandersetzt.
 
ok, d.h. es gilt für n = 2 und der Zahlen (1,3) aber woher kommen die Zahlen bzw. n

ich schreibe 2 Methoden eine die, die Formel ausrechnet und eine main-Methode die die Werte übergibt nämlich n = 2 aber woher kommen dann 1,3 oder muss ich die da auch festlegen
 
S

SlaterB

Gast
n=2 ist aber nicht der Mitterwert von 1 und 3 sondern allein die Anzahl, die Länge des Arrays ;)

@Andi_CH
'hat rein gar nichts mit JAVA zu tun' habe ich glaube ich heute + gestern mindestens dreimal von dir gelesen,
versuch doch mal etwas stärker 'to resist'

500 Postings in 2 Monaten müssen auch nicht sein, wenn hier einer soviel schreibt, dann ich ;)
(ok das war jetzt Spass bzw. Anerkennung)
 
Zuletzt bearbeitet von einem Moderator:
ok meine Aufgabe sieht jetzt so aus
Java:
public class Aufgabe18 {
public double getNorm(double[]array){
	double a=0;
	double formel,quadrat,n;
	n=array.length;
	for (int i = 0;i<array.length;i++){
	formel = Math.sqrt((array[i]*array[i]));
	}
	return a;
}
public static void main (String [] args){
	System.out.println(getNorm(1,2));
}
}

2 Sachen:

1. Was muss ich bei return schreiben, is mir schon klar das a falsch ist, aber wenn ich formel anstatt a schreibe sagt er mir es ist ein Fehler, da die formel noch nicht initialisiert wurde

2. Was passt bei der main Methode nicht? Eclipse unterringelt mir hier getNorm ?
 

Andi_CH

Top Contributor
Erklären dauert zu lange:
Java:
public class Aufgabe18 {
	public static double getNorm(double[]array){
		double formel = 0.0;
		for (int i = 0;i<array.length;i++){
			formel = Math.sqrt((array[i]*array[i]));
		}
		return formel;
	}
	public static void main (String [] args){
		double[] arr = {1.0,2.0};
		System.out.println(getNorm(arr));
	}
}
 

icarus2

Top Contributor
*Edit

Oder eigentlich müsste es doch so sein:
[Java]
public static double getNorm(double[]array){
double formel = 0.0;

for( int i = 0; i < array.length; i++ ){
formel += array * array;
}

return Math.sqrt(formel);
}
[/Java]
 
Zuletzt bearbeitet:
ok, jetzt funktionierts shcon mal, aber

@ andi: hier gibt er nur die letzte Stelle des Arrays aus, das in der main-Methode definiert wurde

@icarus2: 1. warum das + ? aber jetzt gibt er shcon mal was anderes aus, nur bei {1.0,2.0,3.0} kommt er auf 6.0 d.h. er rehcnet alles zusammen, sollte der aber nicht wurzel aus (1^2+2^2+3^2) also wurzel aus 15 ausgeben ?
 

icarus2

Top Contributor
Ich habe oben gepostet wie es meiner Meinung nach richtig ist.

Du addierst immer die Quadrate der einzelnen Zahlen, also array * array zu formel. Und dann gibst du die Wurzel vom ganzen zurück.

Müsste meiner Meinung nach bei mir stimmen. Oder liege ich falsch?
 

Ähnliche Java Themen

Neue Themen


Oben