Interpolation einer Funktion < MathCad < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 17:06 Fr 02.12.2011 | Autor: | horst32 |
Hallo,
Ich habe für ein Studienfach ("Fahrzeugantriebe -Grundlagen") den Druckverlauf auf den Kolben eines Zylinders in einem Verbrennungsmotor ermittelt.
Allerdings habe ich diesen Verlauf nur über 2 Vektoren darstellen können: einmal den Winkel-Vektor (von 0 bis 720° in 0.1er Schritten) und dazu den Druckvektor.
Hier das Bild, wie mein Mathcad Dokument jetzt aussieht:
[Dateianhang nicht öffentlich]
Links sieht man das Diagramm mit dem reellen Druckverlauf, und rechts mein Versuch der Interpolation mit Hilfe von "linanp". Damit komme ich allerdings zu keinem passendem Ergebnis.
Die Frage wäre jetzt: Ist es irgendwie möglich eine Funktion zu ermitteln, die meine Punkte im Diagramm näherungsweise abdeckt, und wie genau mache ich das? (Für mich ist es wichtig, dass ich am Ende eine Funktion in der Form: "p(x)" erhalte. (x steht an dieser Stelle für den Griechischen Buchstaben "Phi")
Für jede Hilfe bin ich sehr Dankbar.
Mit freundlichen Grüßen
Thomas
PS: Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:30 Sa 03.12.2011 | Autor: | horst32 |
Ich hab mir nochmal ein paar Gedanken gemacht und bin zu ein paar Ergebnissen gekommen, die mir aber immernoch nicht wirklich weiterhelfen:
hier mein Mathcad-Dokument:
[Dateianhang nicht öffentlich]
auf der linken Seite hab ich mein Glück weiter mit einer linearen Regression versucht (Funktion: linanp) - Eigentlich das, was ich will, da am Ende eine Funktion rauskommt, die ich Problemlos weiterverwenden kann.
Als Ansatzfunktionen (bei G(Phi)) hab ich verschiedene ausprobiert.
Das grüne Ergebnis, im unteren linken Diagramm ist das Beste, was ich erreicht hab.
Auf der rechten Seite hab ich eine lineare Interpolation zwischen den Punkten gebildet und so einen sehr genauen Funktionsverlauf erzielt.
Leider gibt es keine mir bekannte Möglichkeit diesen Verlauf in einer Funktion auszugeben.
Desweiteren hab ich noch eine Fourier-Transformation und eine Spline-Funktion erstellt, diese sind aber zu ungenau und geben beides wieder nur Vektoren und keine Funktion aus.
Ich hoffe ich konnte noch ein paar Ansätze darlegen, die zur Ergebnisfindung beitragen.
mfg
Thomas
Dateianhänge: Anhang Nr. 1 (Typ: PNG) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:32 Mo 05.12.2011 | Autor: | Peter_Pein |
Hallo Thomas,
leider beherrsche ich MathCad nicht; dennoch ein Tip:
Es macht bei diesem Datensatz augenscheinlich wenig Sinn, nach einer (womöglich auch noch stetig differenzierbaren) Funktion zu suchen.
MathCad sollte wohl auch über stückweise definierte Funktionen verfügen (heißen in anderen Matheprogrammen "piecewise" oder ähnlich).
Bis zum sprunghaften Anstieg des Drucks könnte eine Funktion der Form [mm]a*e^{-b*(x-x_0)^{2}}[/mm] recht gut passen - evtl auch eine verschobene und gestreckte Variante von [mm]\frac{1}{1+x^{2}}[/mm], dann folgt ein kurzes lineares Stückchen und der parabelförmige Druckabfall könnte auf ein Polynom vierten Grades oder eine Exponentialfunktion passen. Das kurze Stückchen Nullfunktion ist wohl der einfachste Abschnitt .
Ich habe mit Mathematica [mm]\pi[/mm] mal Auge was zusammengebastelt, das dann folgendermaßen aussieht:
[Dateianhang nicht öffentlich].
Hoffentlich hilft dies ein wenig,
Peter
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:33 Mo 05.12.2011 | Autor: | horst32 |
Das ist ne sehr gute Idee!
Verwirklichen lässt sich das mit Mathcad bestimmt, blöd dass ich nicht selber auf die Idee gekommen bin..
Ich werd mich morgen mal da dransetzen - kann aber ne weile dauern, da ich ja zusätzlich noch versuche das ganze parametrisch zu machen.
Wenn die Teilfunktionen sich dann bei jedem Druckverlauf anders aufbauen könnte das zu Problemen führen..
Aber mal schauen, ich probiers mal aus. Danke auf jeden Fall, dass du dir die Mühe gemacht hast! :)
Grüße
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 16:13 Mo 05.12.2011 | Autor: | leduart |
Hallo
deine kurve sieht aus, wie die Überlagerung von 2 Gausskorven,
[mm] f(x)=A*e^{-b*(x-x_0)^2}+B*e^{-b*(x-x_1)^2}
[/mm]
wobei [mm] x_0 [/mm] und [mm] x_1 [/mm] etwa bei den 2 Maxima liegen .
Allerdings versteh ich auch nix von dem cad programm und ob du sowas eingeben kannst.
Kann es sein, dass das ne Überlagerung von 2 Effekten ist, die du eventuell trennen kannst?
Gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:40 Mo 05.12.2011 | Autor: | horst32 |
Hi,
Du meinst mit einer verknüpften e-Funktion könnte es klappen?
Einzelne e-Funktionen hatte ich schon versucht durch Mathcad ausrechnen zu lassen, allerdings hat das nie wirklich ein passendes Ergebnis geliefert, bzw. Fehlermeldungen ausgegeben..
Ich hab allerdings in diese Richtung noch nicht viel rumprobiert (hab eher versucht mit trigonometrischen Funktionen zum Ziel zu kommen) und werd mich morgen mal mehr damit beschäftigen.
Danke auf jeden Fall für deine Hilfe.
Grüße
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:59 Mo 05.12.2011 | Autor: | leduart |
Hallo
ich hab gemerkt, dass ich nen tipfehler in meinen Kurven hatte! es muss unbedingt [mm] e^{-b(x-x1^2} [/mm] heissen, in meinem post ist es verbessert
gruss leduart
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:00 Mi 07.12.2011 | Autor: | horst32 |
Hi,
also ich hab das mal mit deiner Funktion versucht, und mir die Koeffizienten (A,B,b) von Mathcad ausrechnen lassen... Leider macht das mein Programm nicht, da kommt der Fehler: "Ein Gleitkommafehler ist aufgetreten".
(Ich hab auch mal versucht mir die Punkte x0 und x1 mit ausrechnen zu lassen, aber das macht er auch nicht.)
Grüße
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 22:27 Di 06.12.2011 | Autor: | ullim |
Hi,
gut wäre es, wenn Du die Druckwerte mal komplett posten würdest. Dann könnte ich probieren eine Funktion, vielleicht die von Leduart zu fitten.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 10:44 Mi 07.12.2011 | Autor: | horst32 |
Hi,
das ganze ist leider nicht so einfach, da ich jeweis 7200 Werte für den Druck und den Winkel habe..
ich hab dir hier mal meine Berechnung zur Ermittlung der Punkte aus dem Seiliger Prozess hochgeladen:
[Dateianhang nicht öffentlich]
rechts in der Tabelle und darunter stehen die gegeben Werte, die du zuweilen in den Schleifen brauchst.
Grüße
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 22:37 Mi 07.12.2011 | Autor: | ullim |
Hi,
ich weiss nicht wie die Funktion [mm] v_Z [/mm] definiert ist. Bei den Werten [mm] v_i [/mm] gehe ich davon aus das diese über die Tabelle mit den Zuständen definiert sind. Ebenso die Werte für [mm] p_i. [/mm] p_max ist der maximale Druck?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:07 Do 15.12.2011 | Autor: | horst32 |
Hey, entschuldige, dass ich erst jetzt schreibe. Hatte einigen Stress in letzter Zeit..
Oh ja klar, hab die Volumenfunktion vergessen.
hier nochmal ein Bild, mit (hoffentlich) allen fehlenden Werten:
[Dateianhang nicht öffentlich]
Grüße
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:49 Fr 16.12.2011 | Autor: | ullim |
Hi,
leider fehlen immer noch Werte und zwar für für r, D und [mm] \lambda_P [/mm] sowie [mm] p_a
[/mm]
Vielleicht kannst Du auch mal das ganze Mathcadfile posten als xmcd oder hmtl File, dann habe ich auf jeden Fall alle Werte.
Ich habe Mathcad 15.0 (15.0.0.436)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:57 Fr 16.12.2011 | Autor: | horst32 |
Hi,
oh man, stimmt.. sorry für das hin und her..
Also das ganze Dokument kann ich leider nicht hochladen, da es nicht meine alleinige Arbeit ist und ich nicht weiß ob ich das einfach veröffentlichen kann.
Aber ich lad mal den Teil des Dokuments hoch, welcher die Ermittlung des Druckverlaufs aus vorgegebenen Werten enthält. Das läuft auch eigenständig und müsste so funktionieren.
Datei-Anhang
Allerdings hab ich Mathcad Version 14 (14.0.1.286) - kannst du das trotzdem öffnen?
grüße
Dateianhänge: Anhang Nr. 1 (Typ: xmcd) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:40 Fr 16.12.2011 | Autor: | ullim |
Hi,
ja das Dokument kann ich lesen. Ich schau jetzt mal was ich machen kann und gebe Dir dann Antwort.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 09:11 Mo 19.12.2011 | Autor: | ullim |
Hi,
ich habe mal ein bisschen probiert und das ist rausgekommen.
[Dateianhang nicht öffentlich]
[Dateianhang nicht öffentlich]
Ein ähnliches Ergebnis kann auch mit der Funktion Minfehl erreicht werden. Allerdings scheint mir, das hier die Abhängigkeit von der Anfangsbedingung empfindlicher ist. LeastSquaresFit rechnet dagegen sehr viel länger. Allerding kann man hier den Parametervektor durch Lower und Upperbound einschränken. Bei Minfehl kamen manchmal negative Werte heraus.
Ich lege die geänderte Datei auch mal bei. LeastSquaresFit ist übrigens eine Funktion aus dem DataAnalysisExtension Pack.
LeastSquaresFit
Dateianhänge: Anhang Nr. 1 (Typ: png) [nicht öffentlich] Anhang Nr. 2 (Typ: png) [nicht öffentlich] Anhang Nr. 3 (Typ: xmcd) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:36 Di 20.12.2011 | Autor: | horst32 |
Hallo,
Ok, das sieht wirklich nich schlecht aus.. Muss ich mal probieren ob das von den maximalen Abweichungen die hier auftreten akzeptabel ist, aber ich denke schon.
Auf jeden Fall danke vielmals! Ihr wart mir eine sehr große Hilfe und ich werd wohl in Zukunft öfter mal mit meinen Problemen hier ins Forum kommen.
Danke dass ihr euch die Zeit genommen habt!
Frohes Fest und einen guten Rutsch ins neue Jahr :)
mfg
Thomas
|
|
|
|