Hallo,
also erstmal solltest Du die sehr "ubersichtlichen
Variablen Namen richtig schreiben also statt
> Alpha=2*(1-Exp[-Enn/(RkJopule*x)])
Alpha = 2*(1 - Exp[-Enn/(RkJoule*x)]);
So dann hat If[] das Attribut HoldRest, die Zweige
von If[] in Deiner Differential Gleichung werden also
nicht ausgewertet, wodurch die vielen Variablen erhalten
bleiben und nicht durch die numerischen Werte ersetzt werden.
Letzteres f"uhrt dazu, dass NDSolve[] bei der Berechung der rechten
Seite
keine numerischen Werte erh"alt und sich folglich weigert einen
symbolischen
Ausdruck zu integrieren.
Mit
eqn = -0.5*B*y'[x] ==
If[y[x] <= 1.0,
Evaluate[Ades*NA*Xi*Exp[-(Edes - 2.0*z*y[x]*Ennn)/(RkJoule*x)]],
Evaluate[y[x]^2*Ades*NA*Exp[-(110.71 - 12.552*y[x])/(RkJoule*x)]]]
NDSolve[{deqn, y[300] == 1.0}, y, {x, 250, 600}]
gelingt die L"osung aber problemlos.
Gruss
Jens
cz wrote:
>
> Liebe mathematica-Nutzer,
>
> mathematica die folgende Fallunterscheidung in NDSolve bisher nicht
> lösen. Die der Fallunterscheidung zugrunde liegenden Einzelgleichungen
> kann NDSolve lösen. Den Übergang zwischen den beiden Funktionen in der
> Fallunterscheidung schafft der Solver anscheinend nicht (auch bei
> kleinen Schrittweiten). Woran liegt es und gibt es eine
> Alternativlösung, die funktioniert?
>
> Vielen Dank
>
> C. Z.
>
> Mathematica Input:
>
> z=6
> m=2*z-2
> Ades=2
> B=5
> NA=1.57*10^15
> RkJoule=0.00831441
> Edes=123.428
> Enn=1.67
> Ennn=0.71128
> Alpha=2*(1-Exp[-Enn/(RkJopule*x)])
> Thh=y[x]-(1-(1-2*Alpha*y[x]*(1-y[x]))^0.5)/Alpha
> Ths=2*(1-(1-2*Alpha*y[x]*(1-y[x]))^0.5)/Alpha
> Tss=1-y[x]-(1-(1-2*Alpha*y[x]*(1-y[x]))^0.5/Alpha
> Xi=Thh*((Thh*Exp[Enn/(RkJoule*x)]+0.5*Ths)/y[x])^m
>
> NDSolve[{-0.5*B*y'[x]==If[y[x]<=1.0,Ades*NA*Xi*Exp[-(Edes-2.0*z*y[x]*Ennn)/(RkJoule*x)],
>
> y[x]^2*Ades*NA*Exp[-(110.71-12.552*y[x])/(RkJoule*x)]],y[300]==1.0},y,{x,250,600}]
|