Kubische Gleichung für konkrete Anwendung

Neue Frage »

Sheridan Auf diesen Beitrag antworten »
Kubische Gleichung für konkrete Anwendung
Hallo!

Ich bastle zur Zeit an einer Wasserstandsmessung die mit einem Infrarot-Distanzsensor funktioniert. Die Abhängigkeit zwischen Wasserhöhe (x) und die vom Sensor gelieferte Spannung (y) ist nicht linear.

Habe daher einige Werte gemessen und in Excel eingetragen. Mit Hilfe der Trendlinienfunktion fand ich durch Experimentieren folgende kubische Gleichung als Beste Annäherung an die Messwerte

code:
1:
2:
3:
4:
5:
y = -0,0003x3 + 0,0178x2 - 0,0489x + 1,1322
wobei y die Spannung ist (Werte zwischen 1 und 4 Volt) und
x die Wasserhöhe (Werte zwischen 0 und 14 cm)


Ich will dann eine Software schreiben, wo ich mit y reingehe, und x bekomme, also x = f(x).

Im Wikipedia habe ich zwar die Cardanische Formeln gefunden, aber da ich seit 15 Jahren aus der Schule draussen bin, habe ich absolut keinen Tau mehr, wie ich aus dieser Formel x rausbekomme!

Was muss ich als nächstes machen?

Danke
Sheridan Auf diesen Beitrag antworten »
RE: Kubische Gleichung für konkrete Anwendung
Hallo,

habe im Internet folgende Seite gefunden:
Cardano Formel mit Beispiel

Wenn ich das mit Excel nachrechene, komme ich auf dieses Ergebnis:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
A	B	C	D
-0,0003	0,0178	-0,0489	1,1322

3P	-8,1849E-12	
Formel	(3*A2*C2-B2*B2)/3*A2*A2
P	-2,7283E-12		

2Q	-3774	
Formel	2*POTENZ(B2;3)/27*POTENZ(A2;3)-B2*C2/3*POTENZ(A2;2)+D2/A2
Q	-1887		

D	3560769	
Formel	POTENZ(B9;2)+POTENZ(B6;3)


Gehe ich das so richtg an?
nexperty Auf diesen Beitrag antworten »
RE: Kubische Gleichung für konkrete Anwendung
hi, warum so kompliziert? wenn du anstelle y(x) auch die Umkehrfunktion x(y) brauchst, dann führe mit Excel einfach eine zweite Berechnung (Fit) durch, bei der x und y vertauscht sind. So erhältst du das neue Polynom x = b0 + b1y + b2y^2+b3y^3 Big Laugh
mfg. nexp
Sheridan Auf diesen Beitrag antworten »

Hi,

danke für deinen Tipp.

Das habe ich auch schon versucht, aber die von Excel gefunde Formel ist dann interessanterweise nicht so genau (auch wenn ich mit den Werten und den Graden des Polynoms herumspiele, da habe ich Abweichungen bis zu 20%: Gegenüberstellung gerechnet/gemessen)

In einem ersten Schritt mache ich es so, dass ich programmiertechnisch in einer Schleife y Ausrechnen lasse und dann mit dem gemessenen Wert vergleiche. Ist der gleich oder größer habe ich den Wert, wenn nicht erhöhe ich x in zB 0,2cm Werten. Da ich einen vorgegeben Bereich habe (0 bis 15 cm) ist die Schleife bald durchgelaufen.

Das reicht mal für eine erste Annäherung.

Schöner wäre aber eine Umformung ...

Wenn die Wertebereiche (0 bis 15 cm bzw. 0 bis 3,1 V) vorgegeben sind, müßte doch eine Umkehrung möglich sein. Umformungen bei qudratischen Gleichungen ist ein Kinderspiel, aber bei kubischen...

Vielen Dank und

LG
Georg!
tesuji Auf diesen Beitrag antworten »

Hallo Sheridan,
das ist aber schade. allerdings ist das Ergebnis der Umkehrfunktionsberechnung ungewöhnich. Stelle einige Testdaten hier ein, dann kann ich das mit Matlab überprüfen (Excel wäre mir da etwas suspekt)
vg tesu
Sheridan Auf diesen Beitrag antworten »

Hi,

danke für deine nette Hilfe.

Habe mit dem Sharp Distanzsensor folgende Werte gemessen:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
cm = Wasserstand, V= Spannugn
V ger. = Spannung nachgerechet mit Excelformel
Fehler = Abweichung in Prozent (gerechnet, gemessen)

[cm]	[V]	Prozent	V ger.        Fehler
14,00	3,10	100%	3,11	0,43%
13,30	3,05	95%	2,92	-4,11%
12,50	2,75	89%	2,72	-1,23%
12,00	2,60	86%	2,59	-0,38%
11,00	2,45	79%	2,35	-4,13%
10,30	2,25	74%	2,19	-2,71%
9,50	2,05	68%	2,02	-1,62%
8,70	1,85	62%	1,86	0,35%
8,00	1,70	57%	1,73	1,56%
7,20	1,55	51%	1,59	2,64%
6,40	1,45	46%	1,47	1,36%
5,70	1,35	41%	1,38	1,94%
4,80	1,30	34%	1,27	-1,97%
4,00	1,20	29%	1,20	0,18%
3,00	1,20	21%	1,14	-5,20%
2,40	1,15	17%	1,11	-3,20%
1,50	1,10	11%	1,10	-0,19%
0,70	1,10	5%	1,11	0,60%
0,00	1,10	0%	1,13	2,93%



Excel hat mir folgende Formel geliefert:
y = -0,0003x3 + 0,0178x2 - 0,0489x + 1,1322

Wobei x der Wasserstand ist und y die Spannung.

Brauche aber die Umkehrung, da der Distanzsensor eine Spannung (also y) liefert und ich eine Wasserhöhe gerne hätte (also x).

Möglich das Excel da nicht so sauber arbeitet.
Habe einfach mit Trendlinie hinzufügen ein Polynom dritter Ordnung ausgewählt und die Option "Gleichung anzeigen" ausgewählt.

Wie gesagt, wenn ich die Spalten vertausche, schaut die Kurve auch nicht so schön aus, deto die Trendlinie nicht...
 
 
tesuji Auf diesen Beitrag antworten »

Hallo Sheridan,

Excel hat richtig gerechnet. Der Grund für den schlechten Fit sind deine Daten. Die Umkehrfunktion, Höhe=g(Spannung), hat auch mit Matlab gerechnet einen wesentlich größeren maximalen Fehler als Spannung=f(Höhe). Der Grund liegt in den mehrfachen Meßwerten:

Spg Höhe
1,20 4,00
1,20 3,00
1,10 1,50
1,10 0,70
1,10 0,00

Ein eindeutiger funktionaler Zusammenhang ist für die Umkehrfunktion in den Messdaten nicht mehr gegeben, denn es gibt für einen Abszissenwert (Spg) nun mehrere Funktionswerte (Höhe). Eine untere Grenze (Infimum) für den maximalen Fehler kann man aus den Daten abschätzen mit (1,50+0,0)/2 =0,75 cm. Diese Grenze kann nicht unterschritten werden, egal welche Fit-Methode und welcher Funktionsansatz gewählt wird.

Das Problem läßt sich auch nicht mit einer Umkehrfunktion beseitigen, die man durch Lösen einer algebraischen Gleichung 3. Grades erhält, auch wenn Spannung(Höhe) einen besonders kleinen max. Fehler besitzt. Denn wie deine Daten zeigen, wird z.B. für die Höhe 0,0 cm eine Spannung von 1,13V berechnet. Nun ist aber 1,11 < 1,13 < 1,14V und die Umkehrfunktion kann dann auch eine Höhe zwischen 2,4 und 3,0 cm liefern (falls die Umkehrfunktion überhaupt existiert).

Den Grad des Polynoms der Umkehrfunktion beim Gauß-Fit zu erhöhen bringt auch nicht viel:

Grad max. Höhenfehler (cm)
3 1,276
4 0,956 Alle max. Fehler treten
5 0,833 bei der Spannung 0V auf.
6 0,810
7 0,753
8 0,752



Beispiel: Koeffizienten für 7. Grad

a0 -1.491493199e+03
a1 5.398199583e+03 H = a0 + a1*U + a2*U^2 + ..
a2 -8.293925836e+03 + a7*U^7, H = Höhe, U = Spannung
a3 7.009298531e+03
a4 -3.508156515e+03
a5 1.038375791e+03
a6 -1.681716773e+02
a7 1.149367273e+01

Etwas besser sieht es aus, wenn anstelle Gauss- ein Tschebyscheff-Fit durchführt wird. Hier wird das Infimum von 0,750cm bereits mit einem Polynom 4. Grades erreicht (das ist aber (fast) reiner Zufall):

a0 -1.61147336971e+02
a1 3.29421519557e+02
a2 -2.37625593303e+02 H = a0 + a1*U +
a3 7.48597837544e+01 a2*U^2 + a3*U^3 + a4*U^4
a4 -8.59076485354e+00

Unter Umständen kann man die unteren Werte soweit reduzieren, daß ein eindeutiger Abszissenwert übrig bleibt. Der Sensor scheint auch bei kleinen Höhen schlecht zu messen.

Viele Grüsse von Tesu
Sheridan Auf diesen Beitrag antworten »

Hi Tseu,

vielen lieben Dank für deine tolle Hilfe.

Wenn ich das richtig interpretiere, würden die Werte besser werden, wenn die Daten nicht mehrdeutig sind, oder?

D.h. ich könnte zB definieren, dass alles was unter 1,2 Volt ( = ca. 1,5 cm) liegt nicht mehr im gültigen Bereich ist.

Da ich das ganze programmiertechnisch auswerte, kann ich sagen, alles was zwischen 3,1 und 1,2 ist, wird die Funktion angewandt.

1,1 Volt ist dann irgendwo zwischen 0 und 1,5 cm Volt wäre dann die andere Abfrage im Programm.

Würde fürs erste voll ausreichen.

Vielen Dank und

LG
Georg
tesuji Auf diesen Beitrag antworten »

hi,
hab dich fast vergessen, sorry.
im Prinzip kann man es so machen und die doppelten Messwerte für die Umkehrfunktion wegstreichen. Zur Absicherung, dass man da keine groben Fehler macht, sollte man einige Messreihen genau analysieren. Beim Weglassen von Meßwerten im unteren Bereich tritt das Problem auf, dass deine Approximationsfunktion nicht mehr für Werte zwischen der berücksichtigten minimalen Höhe und Höhe 0 verwendet werden kann, d.h. du darfst es z.B. dann nur bis h=1,2cm benutzen, darunter geht nicht. Fall du jedoch auch werte zwischen z.B. h=1,2cm und h=0 cm benötigst, könnte man vielleicht in diesem Bereich linear interpolieren (oder einen besseren Sensor verwenden)

viele grüße von tesu

ps: Ein Polynom 3. Grades ist für die geposteten Messdaten vollkommen in Ordnung. Wegen des Meßwerverlaufs sollte es auch ungerade sein.
Neue Frage »
Antworten »



Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »