|
Hallo. Im Verlaufe meines Mathematica Programms loese ich numerisch ein System von gewoehnlichen Differentialgleichungen. Die gesuchten Funktionen haben die Namen R[i] und alpha[k,i], wobei k von 1 bis n und i von 0 bis m laufen. Die unabhaengige Variable heisst t. Sie umfasst das Intervall von 0 bis 10*tq, wobei tq=2/25 ist. Dazu nun meine Fragen: 1. Nach der Eingabe der beiden Zeilen: test[i_,t_]:=Evaluate[R[i][t]/.sol] test[3,tq] bekomme ich als Ausgabe: {R[3][2/25]} Fuege ich stattdessen in der ersten Eigabezeile auf der rechten Seite einen beliebigen (trivialen) Term hinzu, so dass die Eingabe zum Beispiel lautet: test[i_,t_]:=Evaluate[R[i][t]/.sol] + 0 test[3,tq] so bekomme ich als Ausgabe: {0.00245828} Wieso liefern die beiden Eingaben unterschiedlich Ausgaben? (Benutze ich die zweite Eingabe, kann ich uebrigens test[i,t] fuer ein beliebiges i gegen t plotten, was mir im Falle der ersten Eingabe nicht moeglich ist.) 2. test[i_,t_] ist aufgrund seiner Definition nur fuer Integerzahlen von i sinnvoll. (Und das auch nur fuer solche, die nicht groesser als m und nicht kleiner als 0 sind.) i ist in meinem Problem aber im Grunde nichts anderes als eine Diskretisierung einer kontinuierlichen Variablen. Es waere fuer mich daher sinnvoll, einen 3D-Plot fuer test[i,t] zu machen. Das ist mir bislang nicht gelungen. Ich denke, es scheitert daran, dass test[i,t] nur fuer ganze Zahlen i definiert ist. Wie kann ich es schaffen, einen 3D-Plot von test[i,t] zu erzeugen? 3. Aus den oben genannten Funktionen alpha[k,i] defniere ich die folgende Funktion w: w[eta_, i_, t_] := Sum[Evaluate[alpha[k, i][t] /. sol] * (eta^(2*k) - 1), {k, 1, n}] Ohne Probleme lassen sich die beiden folgenden Plots erstellen: Plot[w[eta,5,tq],{eta,0,1}]; Plot[w[0,5,t],{t,0,tq}]; Einen 3D-Plot hingegen kann ich nicht erzeugen lassen. Die Eingabe: Plot3D[w[eta,5,t],{eta,0,1},{t,0,10tq}]; hat bringt die folgenden Meldungen: Plot3D::plnc : w[eta, 5, t] is neither a machine-size real number at {eta, t}={0., 0.} nor a list of a real number and a valid color directive. (Es folgen noch zwei weitere Meldungen derselben Art fuer andere Paare {eta,t}.) und SurfaceGraphics::gmat : {<<1>>, <<13>>, {{6.45911*10^-6}},<<13>>, {{-1.52046*10^-20}}} is not a rectangular array larger than 2 x 2. Gebe ich stattdessen ein: Plot3D[Evaluate[w[eta,5,t]],{eta,0,1},{t,0,10tq}] bekomme ich zwar keine Fehlermeldung mehr, die Meldung: Plot3D[{(-1 + eta^12)*InterpolatingFunction[][t] + (-1 + eta^10)*InterpolatingFunction[][t] + (-1 + eta^8)*InterpolatingFunction[][t] + (-1 + eta^6)*InterpolatingFunction[][t] + (-1 + eta^4)*InterpolatingFunction[][t] + (-1 + eta^2)*InterpolatingFunction[][t]}, {eta, 0, 1}, {t, 0, 10*tq}] hilft mir aber auch nicht so wahnsinnig viel weiter. Wie bringe ich Mathematica dazu, mir die Funktion w in der gewuenschten Weise dreidimensional zu plotten? Hendrik Willig |