|
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}] |