DMUG-Archiv 2002

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Ungleichung/Nebenbedingungen

>-----Original Message-----
>From: Jochen Haller [mailto:haller@XXXXXXX.de]
>Sent: Thursday, December 05, 2002 6:27 PM
>To: Mathematica Mailingliste
>Subject: Ungleichung/Nebenbedingungen
>
>
>Hallo Liste!
>
>Ich habe eine Frage, die hier wahrscheinlich schon öfters gestellt 
>wurde. Ich habe aber bisher keine zureichende Antwort hierfür irgendwo 
>gefunden.
>
>Problemstellung: Habe eine Funktion mit 3 Variablen und möchte 
>(ohne per 
>Trial & Error-Verfahren irgendwelche Werte per Table[.] auszurechnen) 
>alle Wertekombinationen der 3 Varibalen bekommen (bzw. wissen, ob es 
>überhaupt welche gibt) für die die Funktion negativ wird. Die 3 
>Variablen sind hierbei in ihrem Wertebereich eingeschränkt.
>
>Habe als Beispiel ein kleines Notebook mitgechickt, daß das Problem 
>verdeutlicht.
>
>Es geht also um die Behandlung von Nebenbedingungen. Zwar gibt es 
>'theoretisch' den Parameter 'Assumptions', doch ich habe den Eindruck, 
>daß Mathematica diesen (zumindest bei mir) gar nicht verarbeitet.
>
>Zweites Problem hierbei besteht darin, daß ich keinen Weg kenne (außer 
>durch Abschätzung) Ungleichungen näher in Mathematica zu analysieren. 
>Kann Mathematica event. damit nicht umgehen? Oder gibt es einen Trick?
>
>
>MfG
>
>Jochen Haller
>
>PS: Bitte entschuldigt event. Fehler/Ungeschicktheiten bei dem 
>Beispiel-Notebook. :)
>
>-- 
>Dipl.-Kfm. Jochen Haller
>
>Inst. VWL und Recht, Abt. Mikroökonomik und Räumliche Ökonomik
>Keplerstraße 17, 10. OG, 70174 Stuttgart
>0711/121-3557, 0711/121-2450 (FAX)
>http://www.sofo.uni-stuttgart.de/mikro/haller.html
>


Jochen,

für das Beispiel:

In[30]:= << Algebra`InequalitySolve`

In[32]:=
InequalitySolve[(\[Gamma]*(\[Alpha] - c))/(2*\[Alpha]*(\[Alpha] - \[Gamma]))
< 
    0 && c >= 0 && \[Alpha] > c && \[Gamma] > 0, {c, \[Alpha], \[Gamma]}]
Out[32]=
c >= 0 && \[Alpha] > c && \[Gamma] > \[Alpha]

Es gibt auch noch

In[1]:= << "Developer`"

In[33]:=
InequalityInstance[(\[Gamma]*(\[Alpha] - c))/(2*\[Alpha]*(\[Alpha] -
\[Gamma])) < 
    0 && c >= 0 && \[Alpha] > c && \[Gamma] > 0, {c, \[Alpha], \[Gamma]}]
Out[33]=
{\[Gamma] -> 1, \[Alpha] -> 1/2, c -> 1/4}

für einen Beispielwert, nachdem man durch Anstarren der Formel die
Grenzebenen gesehen hat.

Ich gehe davon aus, daß dein wirkliches Problem komplizierter ist. Wenn
diese Methoden versagen, kannst du Mathematica immerhin benutzen, das
Problem zu untersuchen. Ein Mittel dazu ist z.B.

In[4]:= << "Graphics`ContourPlot3D`"

In[17]:=
ContourPlot3D[If[\[Alpha] == 0 || \[Alpha] == \[Gamma], 1000, 
   (\[Gamma]*(\[Alpha] - c))/(2*\[Alpha]*(\[Alpha] - \[Gamma]))], {c, -0.1,
1.1}, 
  {\[Alpha], -0.1, 1.1}, {\[Gamma], -0.1, 1.1}, 
  PlotPoints -> {5, 5}, MaxRecursion -> 1]

Nun ist ContourPlot3D lausig langsam. Ich hab mal eine Implementierung davon
geschrieben, die um einen Faktor 10 bis 20 schneller ist, aber besser ist es
wohl, Jens-Peer Kuska's MathGL Paket zu nehmen. 

Jedenfalls siehst du erstmal die Grenzflächen und kannst versuchen, sie
explizit zu beschreiben, durch Lösung von algebraischen Gleichungen,
Differentialgleichungen oder whatever.

Das Problem ist in MathGroup oft diskutiert worden, schau 'mal im Archiv
nach!

--
Hartmut Wolf


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html