DMUG-Archiv 2011

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

Re: Problem mit Variablen

Hallo Robert,

In[1]:= rho[r_]:=rho0/(rm - r0)*(rm - r)

Hier wird einfach nur eine Funktion rho definiert, die
einen Parameter hat.

Sie hat 3 Parameter und eine unabhängige Veränderliche.

Ich möchte nun den Ausdruck [2] als Funktion in r0 und rm
auffassen:

In[3]:= m1[r0_,rm_]:=Integrate[rho[r]*r^2,{r,r0,rm}]

Das ist

In[7]:= Remove[m2]
m2[r0_, rm_] := Evaluate[Integrate[rho[r]*r^2, {r, r0, rm}]]

In[9]:= m2[2.1, 2.2]
Out[9]= 0.227583 rho0

(oder statt Evaluate und SetDelayed einfach Set, wie von Thomas bemerkt).

Das unerwartete Ergebnis kommt jetzt:

In[4]:= m1[2.1,2.2]

         -0.994375 rho0   0.462333 rho0 rm
Out[4]= -------------- + ----------------
            -r0 + rm          -r0 + rm

Das ist nicht unerwartet:

In[21]:= Trace[m1[2.1, 2.2]]

Bei der Auswertung werden die Integralgrenzen numerisch ersetzt, erst dann sucht mma nach einer Definition für rho und weiss nicht, dass die Argumente von m1[] gleich den Parametern von rho[] sein sollen. Man sieht alles!

Man kann sich auch überzeugen durch Definition[m1], das enthält rho[] unaufgelöst, dagegen Definition[m2] weiss nichts mehr von rho.

Eine andere Art:

In[24]:= m3[x_, y_] := Block[{r0 = x, rm = y}, Integrate[rho[r] r^2, {r, x, y}]]

In[25]:= m3[2.1, 2.2]
Out[25]= 0.227583 rho0

Mit den besten Grüssen
Udo.



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

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