Nun möchte ich aber folgendes Integral auswerten, wobei ich jedoch hier zur Vereinfachungn immer die Grenzen zw. 0 und 1 gesetzt habe.
Den Integralausdruck findet man auf dem Bild, oben den Originalausdruck und unten den vereinfachten Ausdruck, den ich zunächst zum testen integrieren wollte.
Folgendes Problem tritt dabei auf:
Ersetze ich überall die Grenzen zwischen 0 und 1, so rechnet der mehrere Stunden und bricht dann am Ende ab mit einer Fehlermeldung.
Dass das so lange dauert, liegt vermutlich darin, dass ich im ersten (bzw. innersten) Integral die Variable x nicht mit 1 ersetzen darf, da sonst nichts bei rauskommt.
Gut, dann habe ich die 1 im ersten Integral mit dem x ersetzt und bekomme jetzt logischerweiße eine Fehlermeldung, dass x nicht definiert ist.
Ersetze ich überall die Grenzen zwischen 0 und 1, so rechnet der mehrere Stunden und bricht dann am Ende ab mit einer Fehlermeldung
.
Mit welcher Fehlermeldung? Hier würde ich definitiv das Testen von integraln vom File Exchange empfehlen. Der einzige Grund, warum das vorher nicht anwendbar war, war die partielle Ableitung (und auch da denke ich inzwischen, dass man das umformen könnte).
Grüße,
Harald
Benjamin Nels
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.10.2015, 12:37
Titel:
Hallo Harald,
also mit integraln komme ich zwar zurecht, jedoch bekomme ich auch hier die Fehlermeldung, dass x nicht definiert ist.
Mit integraln funktioniert es genau so wie mit deinem Code, d.h. für Funktionen wo die Grenzen klar vorgegeben werden, passt das super.
Muss jedoch einmal symbolisch gerechnet werden (da ymax hier x ist), so funktioniert das nicht, oder übersehe ich etwas?
ich würde es so versuchen... statt von 0 bis x von 0 bis 1 integrieren, in die Funktion aber eine Fallunterscheidung einbauen, dass der Integrand 0 wird, falls y>x.
Grüße,
Harald
Benjamin Nels
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.10.2015, 13:48
Titel:
Harald vielen Dank für deine Antworten, aber was habe ich dadurch gewonnen bzw. ist dass mathematisch äquivalent, wenn ich das einfach so mache?
Also wenn ich dein Code auf das 5 fach Integral mit den Grenzen zwischen 0 und 1 ersetze, so bekomme ich folgende Meldung:
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
> In funfun\private\integral2Calc>integral2t at 129
In funfun\private\integral2Calc at 9
In integral2 at 106
Ich versteh aber das mit der Fallunterscheidung noch nicht, also die Intention:
Ich frage ab, ob y>x ist, sofern das stimmt, bekomme ich entweder 1 oder null....
Weil, was ist, wenn y kleiner als x ist, dann passt doch das Ergebnis nicht mehr, oder?
die Warnung bekomme ich auch, das Ergebnis stimmt aber überein.
Du kannst ja testhalber die Anzahl der Funktionsauswertungen erhöhen (bei mir Zeile 32 von integral2calc). Das dauert dann allerdings (noch) länger.
y < x: es wird "normal" integriert
y > x: es wird über 0 integriert (somit kein Beitrag).
Und damit wird umgesetzt, dass für y von 0 bis x integriert werden soll.
Grüße,
Harald
Benjamin Nels
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.10.2015, 16:34
Titel:
Harald hat Folgendes geschrieben:
y < x: es wird "normal" integriert
y > x: es wird über 0 integriert (somit kein Beitrag).
Und damit wird umgesetzt, dass für y von 0 bis x integriert werden soll.
Hallo Harald.
aber du hast ja geschrieben:
f = @(x, y) (x + y.^2) .* (y>x), d.h. für y<x bekomme ich doch eine 0 und somit wird über 0 integriert, oder?
Aber es tut mir leid, ich bin so total der Matlab-liebhaber, aber auf diesen Trick wäre ich nie gekommen zumal ich es immer noch nicht verstanden habe. Kannst du mir diesen Ansatz vll. etwas ausführlicher erklären, ich stehe total auf den schlauch. Habe eben auch mit meinem Kommilitonen darüber diskutiert, der Ansatz ist immer noch nicht verstanden.
ihr habt recht, ich hatte mich im Code in der Richtung des Vergleichs geirrt. Dummerweise kommt in diesem Beispiel das gleiche heraus, egal ob man < oder > verwendet.
Besseres Beispiel mit richtiger Vergleichsrichtung:
klappt wunderbar! Vielen Dank für deine Mühe! Hast uns sehr geholfen!
Benjamin Nels
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.10.2015, 09:10
Titel:
Hallo Harald,
ich versuche nun den Integralausdruck auszuwerten, er rechnet und rechnet, dabei bekomme ich andauern folgende Meldung im Matlab-command-window:
Warning: Reached the maximum number of function evaluations (10000). The result fails the global error test.
> In funfun\private\integral2Calc>integral2t at 129
In funfun\private\integral2Calc at 9
In integral2 at 106
In @(z,p,q)integral2(@(x,y)F1(x,y,z,p,q)-F2(x,y,z,p,q),0,1,0,k)
In @(z,p,q)intFun(z,p,q)
In @(z,p,q)arrayfun(@(z,p,q)intFun(z,p,q),z,p,q)
In @(z,p,q)IF(z,p,q)
In integral3>@(y,z)FUN(x(i)*ones(size(z)),y,z) at 147
In funfun\private\integral2Calc>integral2t/tensor at 228
In funfun\private\integral2Calc>integral2t at 88
In funfun\private\integral2Calc at 9
In integral3>innerintegral at 146
In funfun\private\integralCalc>iterateScalarValued at 314
In funfun\private\integralCalc>vadapt at 132
In funfun\private\integralCalc at 75
In integral3 at 121
>>
Soll ich das weiterlaufen lassen und beobachten, oder ist da was falsch, was ich ändern muss?
Ich kann mich nur wiederholen: eine Schachtelung von integral2 und integral3 ist nur sinnvoll, wenn es "nicht anders geht" (z.B. wegen partieller Ableitungen dazwischen).
Für ein "normales" 5fach-Integral würde ich integraln von File Exchange nehmen.
Ich weise Dich in diesem Thread jetzt zum 8. Mal darauf hin, dass in diesem Forum die vorhergehenden Nachrichten nicht vollständig gequotet werden. Es ist zeitaufwändig Deine Nachrichten so zu editieren, dass sie den Thread nicht mit redundantem Rauschen füllen.
Bitte, Benjamin, blähe Deine Nachrichten nicht unnötig auf. Es ist immer eine gute Idee, sich an den Stil eines Forums zu halten.
Danke, Jan
Zuletzt bearbeitet von Jan S am 14.10.2015, 09:57, insgesamt einmal bearbeitet
Benjamin Nels
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 14.10.2015, 09:55
Titel:
Hallo Jan,
sorry, ich mache nichts absichtlich. Was heißt denn hier quoten oder was mache ich falsch?
Geht es ums zitieren? Die anderen zitieren doch auch, oder soll das nicht gemach werden?
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.