Formel aus Kennline < eindimensional < reell < Analysis < Hochschule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 16:54 Fr 12.08.2011 | Autor: | skandal |
Ich habe in einem Diagramm die Kennlinie eines Drucksensors gegeben. Es kann erkannt werden wie sich die Ausgangsspannung in Abhängigkeit des ausgeübten Druckes ändert. Mein Problem ist nun das ich diese Ausgangsspannung am PC - also z.B. mit Excel - gern in einen Druckwert umrechnen würde. Das Problem ist aber das die Kennlinie des Drucksensors nicht linear ist. So erhalte ich z.b. je nach Druck folgende Spannungswerte:
Gewicht Spannung
[g] [V]
19 0
20 0,3
50 0,5
100 0,75
200 1
320 1,25
440 1,45
580 1,55
710 1,75
900 1,95
1000 2
Um im Excel jede erhaltene Spannung in einen Druckwert umzurechnen benötige ich nun eine (annäherungsweise genaue) Formel aber habe leider keine Idee wie ich vorgehen könnte. Im Excel gibt es beispielsweise die Funktion der Polynomische Trennline mit der ich aus den Kennlinien des Drucksensors eine Formel erzeugen kann, dies muss ja auch irgendwie per Hand gehen?
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo!
Zunächst einmal prinzipiell:
Du kannst eine Grade berechnen, die duch 2 Punkte geht.
Die Formel hat zwei Unbekannte, du hast 2 xy-Werte, macht ein lin. Gleichungssystem mit 2 Gleichungen und zwei Unbekannten. Prima!
Bei mehr als zwei Werten funktioniert das nicht so richtig, insbesondere, wenn die Daten eben nicht alle zu 100% auf der Graden liegen (Und das tun sie bei einer Messung nie). Hier kannst du eine Lineare Regression machen, dabei wird die Grade bestimmt, die am besten in die Daten paßt. Excel nennt das Trendlinie.
Wenn du ein Polynom in deine Daten legen willst, kannst du ein Polynom wählen, welches exakt durch alle Datenpunkte geht, die Anzahl der Unbekannten ist dann gleich der Anzahl deiner xy-Werte, in dem Fall also 10, d.h. du bekommst ein Gleichungssystem aus 10 Gleichungen, jede ein Polynom bis [mm] x^9 [/mm] . Sehr unschön!
Aber vielleicht beschreibt auch eine Parabel 2. oder 3. Grades deine Daten gut. Soetwas wie eine lineare Regression gibt es dafür meist nicht mehr, sondern die Parameter werden mit einem iterativen Algorithmus so angepaßt, daß die Funktion gut in die Daten paßt. man nennt das in denglisch auch "Fitten"
Das wird Excel vermutlich im Hintergrund machen, aber du würdest es deinem schlimmsten Feind nicht wünschen, das per Hand zu rechnen...
So weit ich weiß, kann Excel die Formel anzeigen, die es in die Daten zeichnet. Steigung und y-Achsenabschnitt einer Graden kann man sich noch von Excel in eine Zelle schreiben lassen, aber die Koeffizienten des Polynoms? ich wette, eher nicht...
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:07 Fr 12.08.2011 | Autor: | skandal |
Danke für die Hilfe, ich habe bereits mit Excel Funktion Trendlinie und einem 6 fachen Polynom eine realtiv gute Annäherung erhalten, jedoch kann Excel leider nicht mehr als ein 6 faches Polynom.
Vielen Dank LG Eric
|
|
|
|
|
> Ich habe in einem Diagramm die Kennlinie eines Drucksensors
> gegeben. Es kann erkannt werden wie sich die
> Ausgangsspannung in Abhängigkeit des ausgeübten Druckes
> ändert. Mein Problem ist nun das ich diese
> Ausgangsspannung am PC - also z.B. mit Excel - gern in
> einen Druckwert umrechnen würde. Das Problem ist aber das
> die Kennlinie des Drucksensors nicht linear ist. So erhalte
> ich z.b. je nach Druck folgende Spannungswerte:
> Gewicht Spannung
> [g] [V]
> 19 0
> 20 0,3
> 50 0,5
> 100 0,75
> 200 1
> 320 1,25
> 440 1,45
> 580 1,55
> 710 1,75
> 900 1,95
> 1000 2
>
> Um im Excel jede erhaltene Spannung in einen Druckwert
> umzurechnen benötige ich nun eine (annäherungsweise
> genaue) Formel aber habe leider keine Idee wie ich vorgehen
> könnte. Im Excel gibt es beispielsweise die Funktion der
> Polynomische Trennline mit der ich aus den Kennlinien des
> Drucksensors eine Formel erzeugen kann, dies muss ja auch
> irgendwie per Hand gehen?
Nachdem ich mir die Punkte aufgezeichnet habe, würde ich
dir eine Funktion von der Form
$\ y\ =\ [mm] C*(x-A)^B$
[/mm]
vorschlagen. Eventuell sogar einfach noch A=19 setzen
(falls der Wert V=0 für g=19 gut abgesichert ist) und
nur noch die Parameter B und C mittels Regression bestimmen.
LG Al-Chw.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 22:02 Fr 12.08.2011 | Autor: | skandal |
Vielen Dank für deine aber auch die anderen Antworten. Ich verstehe leider noch nicht ganz wie ich mit Regression auf die Unbekannten B und C kommen kann (A würde ich dann auf 19 setzen, da das Ergebnis gesichert ist). Wäre sehr nett wenn du das vielleicht kurz erklären könntest.
Vielen Dank und LG Eric
|
|
|
|
|
> Vielen Dank für deine aber auch die anderen Antworten. Ich
> verstehe leider noch nicht ganz wie ich mit Regression auf
> die Unbekannten B und C kommen kann (A würde ich dann auf
> 19 setzen, da das Ergebnis gesichert ist). Wäre sehr nett
> wenn du das vielleicht kurz erklären könntest.
> Vielen Dank und LG Eric
Hallo Eric,
rechnerisch geht es wohl am besten, wenn man noch
Transformationen vornimmt, um dann ein lineares
Regressionsproblem zu haben.
Ich würde also substituieren:
$\ x:=ln(g-19)$
$\ y:=ln(V)$
$\ k:=ln(C)$
Dann hat man neu die lineare Gleichung $\ y=B*x+k$
Rechne also zuerst deine Datenpaare [mm] (g_i,V_i) [/mm] in neue
Datenpaare [mm] (x_i,y_i) [/mm] um und berechne dann die Regressions-
gerade für diese neuen Punkte.
LG Al-Chw.
Nachtrag 1:
kleines Problem: für V=0 klappt die Transformation y=ln(V) nicht ...
Nachtrag 2:
Da wir ja das Wertepaar (g,V)=(19,0) schon in der Formel berück-
sichtigt haben, kann man es aus der Liste weglassen. Damit ent-
fällt das genannte "kleine Problem".
Aber: die Rechnung zeigt, dass die erzielte Näherung deutlich
schlechter ist als jene, die Event_Horizon produziert hat. Meine
"vereinfachte Methode" liefert zwar eine recht gute Näherung
in der doppelt-logarithmischen Darstellung (mit den Hilfskoordinaten
x und y), ist aber bei den wahren Daten von g und V nicht wirklich gut.
LG Al-Chw.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 19:32 Fr 12.08.2011 | Autor: | ullim |
Hi,
mir scheint Du kannst auch die Funktion
J(a,b)=a*ln(x)+b nehmen um die Werte anzunähern.
Versuche den quadratische Fehler zu minimieren dann erhälst Du
a=0.45
b=-1.29
Das Ergebnis sieht dann so aus
[Dateianhang nicht öffentlich]
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:05 Fr 12.08.2011 | Autor: | skandal |
Danke für die Hilfe, ich kann zwar leider nicht nachvollziehen wie du auf die Lösung gekommen bist, aber die Funktion sieht wirklich sehr gut aus.
LG Eric
|
|
|
|
|
Hallo!
So gut sieht das nicht aus. Al-Chwarizmi hat da einen weitaus besseren Ansatz gewählt:
[Dateianhang nicht öffentlich]
ullims Formel steigt zu schnell an, und wird dann zu flach.
Für Al-Chwarizmis Ansatz [mm] A*(x-B)^C [/mm] habe ich
A = 0.138591
B = 19
C = 0.386874
raus. Das habe ich allerdings "gefittet", das heißt, der Rechner hat so lange an den Werten für A, B, C gedreht, bis die Funktion optimal auf die Daten paßt. Wie gesagt, das macht man nicht per Hand, und Excel kann sowas eher nicht.
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:02 Fr 12.08.2011 | Autor: | skandal |
Vielen Dank für deine Antwort. Ist dieses "Fitting" mit Open Source Tools möglich oder hast du das mit Matlab gemacht? Ich bräuchte eigentlich noch für vier weitere Kennlinien (U2-U5)die so ähnlich verlaufen die Koeffizienten:
Force (g)U1 U2 U3 U4 U5
19 0 0 0 0 0
20 0,3 0,95 2,25 2,5 3,5
50 0,5 1,45 2,6 3,2 4
100 0,75 1,8 3,15 3,55 4,25
200 1 2,25 3,5 3,95 4,45
320 1,25 2,5 3,75 4,1 4,51
440 1,45 2,75 3,95 4,25 4,55
580 1,55 3 4,15 4,35 4,6
710 1,75 3,15 4,25 4,45 4,7
900 1,95 3,35 4,3 4,5 4,8
1000 2 3,4 4,35 4,52 4,85
Falls es auch für Einsteiger möglich ist dies in einer Software zu ermitteln, würde es mich sehr freuen wenn du mir einen Tipp geben könntest wie. Wenn dies zu aufwendig ist, werde ich allerdings für die Kennlinien U2-U5 die über die Trendlinie in Excel ermittelten Gleichungen benutzen.
|
|
|
|
|
Hallo!
Ich hab das mit gnuplot (www.gnuplot.info) gemacht, damit ist das nicht weiter schwer. Das Programm wird allerdings per Kommandozeile bedient.
Zunächst mußt du deine Tabellen in eine Textdatei schreiben, also eine Datei, die du z.B. mit Notepad erstellst. Es reicht, das, was du hier geschrieben hast, auch in die Datei zu packen.
Dann mußt du noch alle Kommas gegen Punkte tauschen, weil eigentlich rechnen Computer mit Punkten...
Dann startest du Gnuplot, und wechselst zunächst in das Verzeichnis mit der Datei. (Am oberen Fensterrand gibts irgendwo ein cd oder chdir o.ä.)
Nun schauen wir uns erstmal deine Daten an. Ab jetzt ist die Tastatur dein Freund:
plot "meineDaten.txt" using 1:2 with linepoints
Das bedeutet, daß er die erste und zweite Spalte als x- und y-Werte betrachtet, und daß er beim Zeichnen Punkte setzen soll, die er auch mit Linien verbindet.
Nun noch die Funktion definieren:
f(x)=A*(x-B)**C
Das '**' bedeutet in gnuplot 'hoch'
Jetzt das Fitten:
fit f(x) "meineDaten.txt" using 1:2 via A, B, C
Das heißt: Finde Werte für A, B, C, damit die Funktion f(x) die Daten aus der 1. und 2. Spalte als x-y-Werte möglichst gut beschreibt.
Es kommt dann jede Menge Text, bei dem du siehst, wie er die zahlen anpasst. Zum Schluß findest du Angaben über die gefundenen Werte für A, B, C.
Nochmal nachgucken, ob es optisch auch paßt:
plot "meineDaten.txt" using 1:2 with linepoints, f(x)
Das ist die absolute Kurzform, da kam bei mir noch ein wenig Kosmetik und die Bildausgabe dazu.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:36 Fr 12.08.2011 | Autor: | skandal |
Wow super vielen Dank für die Anleitung. Ist wirklich sehr nett das du dir die Zeit genommen hast. Werde ich gleich ausprobieren. Ich wünsche dir ein schönes und erholsames Wochenende.
LG Eric
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 23:55 Fr 12.08.2011 | Autor: | skandal |
Funktioniert, das ist ja ein super Tool. Vielen Dank für den Tipp.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 00:07 Sa 13.08.2011 | Autor: | ullim |
Hi,
durch eine kleine Veränderung in der Funktion werden die beiden Ansätze fast gleich
f(x,a,b,c,)=a*ln(x-b)+c
a=0.639
b=-44.506
c=-2.48
erhält man das
[Dateianhang nicht öffentlich]
Rot = Messwerte
Grün = Al
Blau = ullim
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Hallo!
ja, damit sieht das tatsächlich ebenfalls gut aus.
Ich wundere mich darüber hinaus ein wenig über den Wert y=0 bei x=19, der paßt irgendwie so gar nicht zum Rest der Daten, vor allem zu dem bei x=20.
Keine Ahnung, ob der wirklich gemessen wurde, oder ob der aus irgendeiner Annahme stammt. Evtl ist auch die Messung fehlerhaft. (Oder: Der Messwert war so klein, daß er auf 0 abgerundet wurde)
Jedenfalls, wenn man diesen Wert weg läßt, könnten die Funktionen die restlichen Daten noch besser beschreiben.
Da wir aber nun nix genaueres zu den Daten wissen, ist es müßig, darüber zu diskutieren.
|
|
|
|