|
|
Unterschied "gradient()"-Funktion zu "händis |
|
DF |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 07.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.08.2014, 15:12
Titel: Unterschied "gradient()"-Funktion zu "händis
|
 |
|
 |
|
Hallo Zusammen!
ich habe ein Problem mit der Funktion gradient(). Ich habe eine Funktion für eine Druckberechnung p(x)=... Der Druck wird über die Länge eines durch strömten Schmierspaltes berechnet und die Werte in einer Matrix gespeichert. Die Matrix repräsentiert ein diskretes Gitter, welches den Schmierspalt unterteilt. Da der Druck über die Hoehe z sich nicht verändert, varriert er nur in Strömungs- also x-Richtung. Die Unterteilung des Schmierspaltes in x-Richtung sind bei mir 16 Knoten (könnten aber auch beliebig viele sein). Die Matrix hat also 16 Spalten.
Um nun die Geschwindigkeit zu berechnen, benötige ich die partielle Ableitung erster Ordnung von p(x) nach x, also dp/dx. Da liegt es nahe für mich die von MATLAB bereitgestellte "gradient(p(x),dx)" Funktion zu benutzen. (Das dx gibt hier meine Schrittweite an, sonst wird von MATLAB automatisch die Schrittweite 1 verwendet).
Wenn ich nun aber "händisch" die erste Ableitung dp/dx meiner Formel für p(x) bilde und an jeder Stelle x (also 16 mal, mittels for-Schleife) den Wert berechne, bekomme ich eine Matrix mit leicht unterschiedlichen Werten. Die Größenordung ist dieselbe, jedoch gerade am Anfang und zum Ende hin (wo der Gradient auch recht steil ist) werden die Unterschiede mit 0.3 bis 0.5 relativ groß.
Kann mir jemand erklären woran das liegt? Und noch viel wichtiger, hat jemand damit Erfahrungen und kann mir raten, welche Methode (gradient() oder "händische" Ableitung) ich für meine Berechnungen lieber verwenden sollte?
Ich freue mich über eure Antworten!
Viele Grüße, Dennis
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.08.2014, 16:21
Titel:
|
 |
Hallo,
am besten wäre es, wenn du ein kleines Beispiel zur Verfügung stellst und insbesondere, wie du die Gradienten berechnest.
Grüße,
Harald
|
|
|
DF |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 07.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.08.2014, 14:30
Titel:
|
 |
|
 |
|
Hi,
also es handelt sich um einen 2D, konvergenten Spalt, dazwischen befindet sich Öl. Die untere Wand wird mit einer vergegeben Geschindigkeit bewegt, sodass auch das Öl im Spalt bewegt wird und sich eine Strömung einstellt. Die bewegte Wand hat eine Länge L und die Höhe das Spaltes nimmt mit der Lauflänge x (in L-Richtung) ab. Meine Matrix repräsentiert ein Gitter welches die Höhe h(x) in 7 Elemente teilt (also 8 Knoten) und die Länge L in 15 Elemente (also 16 Knoten) teilt. Die Einträge der 8x16 Matrix für die Höhe bzw. des Druckes stellen also die Höhe/ Druck für jeden Knoten dar. Für Höhe und Druck sind natürlich die Einträge pro Spalte gleich. Höhe und Druck sind also nur von x abhändig. Wenn ich die Geschwindigkeit berechne bekomme ich ein bestimmtes Geschwindigkeitsprofil. die Geschwindigkeit ja von x und z (Höhenrichtung) abhängig, also wird jeder Eintrag einer Spalte unterschiedlich sein.
Um nun die Geschwingikteit an jedem Knoten zu berechnen brauche ich aber den Druckgradienten dp/dx (laut Formel für die Funktion der Geschwindigkeit u(x,z)).
Zunächst zum Druck. Wie gesagt ich habe eine Funktion p(x) die über h(x) die Druckverteilung abhängig von den Gewählten Randbedigungen (Eintritts-/Austrittshöhe, Wandgeschwindigkeit) beschreibt. Nun habe ich zwei Möglichkeiten die für die Geschwindigkeitsberechnung gesuchte Ableitung dp/dx für finden. Endweder ich leite "händisch" meine Formel p(x) ab oder ich lasse Matlab die Funktion gradient(p_x, dx) brechnen. Wobei dx=L/(16-1) ist. Das Problem ist dass ich dafür (gerade am Rand) auf unterschiedliche Werte komme und ich nicht weiß woran es liegt. Die Werte weiter weg vom Rand scheinen mehr oder weiger (aber nicht genau!) übereinzustimmen.
Ich hoffe mal man sich kann das Problem so besser vorstellen. Falls nicht poste ich euch mal die unterschiedlichen Matrizen. Bin aber nur einmal pro Woche an dem PC in der Uni wo die Matlabskripte drauf sind, deswegen vorerst nur mal in Worten erklärt
Viele Grüße
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|