umkehrfunktion 3. grades

Status
Nicht offen für weitere Antworten.

alias_host

Aktives Mitglied
also ich möcht eine formel, mit der ich ein kugelvolumen in abhängigkeit von der höhe(mommentaner füllstand) nach ser höhe umformen. also ich möchte eine funktion h0(vo) die formel ist hier zu finden:
K.Abschnitt

nun möcht ich eine annäherung programmieren:

also h1=h0-( f(h0) / f1(h0) )

wobei f1 die ableitung von f ist und f(h0)=((Pi*h0^2)/3)*(3*rg-h0)-v0 ist.

ich habe dies so programmiert:
Code:
	public double getH0vonV0(double v0){
		v0=35.0;
		double h1=hoehe-0.001;
		double h0=0;
		while(Math.abs((h0-h1))>0.001){
			h0=h1;
			h1=h0-(((Math.PI/3)*h0*h0*h0-Math.PI*(hoehe/2)*h0*h0-v0)/(Math.PI*h0*h0-2*Math.PI*(hoehe/2)*h0));
		}
		return h1;
	}

aber es wird ein falsches ergebniss ausgespuckt...

findet jemand von euch den fehler???
 

Quickbeam2k1

Aktives Mitglied
Mir ist nich tklar was du genau machen möchtest. Wozu die Näherung? Du kannst doch im allgemeinen die Formel ja gerade nach der höhe Umstellen?

Was hat es mit dem Füllstand und der Höhe auf sich?

Wieso suchst du Nullstellen? Warum ist 0 dein Startwert für das Newtonverfahen, vielleicht liegt es schon genau da dran!
 

alias_host

Aktives Mitglied
also nichts für ungut aber ich möchte sehen, wie du eine gleichung dritten grades nach x umstellst. soviel ich weiß geht das nur mit annäherung oder den kubanschen verfahren, das echt scheiße zu programmieren ist. also meine gedankenzüge:

ich habe eine gleichung:
ax^3+bx^2+cx+d=y <=> ax^3+bx^2+cx+d+y=0 <=> f(x)=ax^3+bx^2+cx+d+y

wenn ich in diese formel mein gegebenes y einsetze, dann muss ich sie eben gegen null annähern. verstanden???
 

Quickbeam2k1

Aktives Mitglied
Also, die Gleichungen kann man auflösen, aber Umkehrfunktionen existieren natürlich im allgemeinen nicht global.

Ich wollte nur gerne deine Problemstellung besser verstehen, weil ich nicht sehe inwieweit das mit der Füllhöhe mit der höhe des Gesamten zu tun hat, und wie du dann auf deine Gleichung kommst.

Okay nun zu der Nullstellengeschichte:

Ein Polynom 3ten Grades hat im "Idealfall" 2 Extremstellen und 3 Nullstellen.

Das Problem beim Newtonverfahren:
Seien x_1 x_2 die Extremstellen.
Dann gibt es mit obigen Annahmen meisten 3 Nullstellen in den offenen Intervallen:
(-oo,x_1), (x_1,x_2), (x_2,oo).

Du fängst jetzt aber durch den Startwert h_0=0 z.B im linken Intervall an, aber deine gesuchte Nullstelle liegt im rechten Intervall. Diese wird dir das Newtonverfahren aber nie liefern können, da die Nullstelle im linken Intervall ein Fixpunkt für das Newtonverfahren ist. Das heisst du kannst mit diesem Startwert immer nur zu dieser Nullstelle gelangen.

Ich hoffe das hilft dir, trotzdem würde ich gerne dein Problem besser verstehen können :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben