Verfasst am: 19.11.2008, 10:46
Titel: Problem bei Darstellung einer Funktion mit mesh
Hallo,
ich bin neu hier im Forum und hab erst vor einer Weile angefangen mich mit Matlab zu beschäftigen.
Nun zu meinem Problem: ich soll eine Funktion in Abhängigkeit von zwei Variablen darstellen.
Um mein Problem besser darzustellen, hier noch ein paar Erklärungen:
Die Funktionen O stellt den Materialverbrauch eines Tetra-Briks (allgemeine Bezeichnung für eine ziegelförmige Tetra-Pak Verpackung) für ein Fassungsvermögen V (in diesem Beispiel 1 Liter) dar.
Die Variable k ist die Breite des Klebefalzes. Der Materialverbrauch ist abhängig von der Schlauchbreite d (denn ein Tetra-Brik wird aus einem Schlauch gefaltet) und der Tiefe c.
Aufgabenstellung ist demnach, einen minimalen Materialaufwand O zu berechnen und zur besseren Verdeutlichung die Funktion grafisch darzustellen. Als Nebenbedingung kann man noch ableiten, dass 0<c<d/2 gelten muss.
Das Minimum läßt sich ja recht einfach über den folgenden Befehl berechnen:
function O = tetrabrik(x,V,k) % Oberfläche eines Tetra-Brik mit x=(Schlauchbreite d, Tiefe c), Volumen V und Klebefalz k
a=x(1)-x(2);
b=V/(a*x(2));
O=2.*x(1)*(b+x(2)+2.*k);
Damit bekomme ich heraus, dass das Minimum bei d=17.6161 und c=6.2756 angenommen wird und der optimale Verpackungsaufwand bei 769.0052 cm² liegt. Laut meinem Professor sollen diese Werte auch stimmen.
Wenn ich mir allerdings den mesh ansehe, dann kann ich gar nichts davon ablesen.
Wenn ich die Funktion umstelle, dann erhalte ich wenigstens eine ordentliche Ausgabe.
Aber mein Problem ist, dass ich dann nicht nachvollziehen kann das an der beschriebenen Stelle das Minimum angenommen wird.
Außerdem hatte ich noch folgende Überlegungen:
1. Wenn d gegen Null geht, dann müßte O immer größer werden, da ja immer noch ein Fassungsvermögen von beispielsweise 1 Liter verpackt werden soll
und
2. gilt die gleiche Überlegung für die Tiefe c.
Also meiner Meinung nach, gibt keine der beiden Ausgaben diesen Sachverhalt korrekt wieder und wenn ich mir bei der zweiten Ausgabe (die mit der umgestellten Funktion) das Optimum anschaue, dann schaut es auch nicht korrekt aus.
Meine Frage nun: mache ich irgendwas falsch oder muss ich die Ausgabe doch irgendwie anders angehen?
Das größte Problem entsteht auf der Geraden d=c, weil da für die Berechnung von O durch Null geteilt wird. Als Wert ergibt sich Inf, was die Grafik dominiert.
vielen lieben Dank , das sieht schon mal sehr gut aus.
Also stimmte die Ausgabe, aber durch die Inf-Werte hab ich nichts davon gesehen.
Das ist eine super Idee dem aus dem Weg zu gehen, indem man diese in der Ausgabe umgeht und damit also nur einen rechteckigen Ausschnitt aus der Anfangsausgabe nimmt.
Kriegt man es irgendwie hin, dass man nur den positiven Teil der O-Werte plottet?
Ich hab es jetzt selber hinbekommen indem ich zwei FOR-Schleifen (einmal über die Zeilen und dann noch über die Spalten) genommen habe und über das gesamte O gegangen bin.
Dabei hab ich jedesmal überprüfen lassen, ob der Wert an dieser Stelle Inf ist oder die Spaltennummer kleiner gleich der Zeilennummer ist. Wenn das zutrifft wird dieser Wert auf NaN gesetzt.
Somit werden alle "uninteressanten" Werte einfach entfernt und ich erhalte eine Grafik die ein bißchen aussieht wie der Bug eines Bootes, da 1. die Funktion für c gegen 0 gegen unendlich geht und 2. die Funktion für c gegen d auch gegen unendlich geht.
Ein herzliches Danke geht an Bijick für die tolle und schnelle Hilfe.
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
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.