Differenzieren von "Piecewise" < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 23:02 So 05.11.2006 | Autor: | Karohemd |
Hallo zusammen,
aufgrund eines Problems, das ich in Maple habe, bin ich auf dieses Forum gestoßen. Ich habe Maple erst letzten Monat anfangen zu lernen und habe noch demenstprechend meine Schwierigkeiten damit. Vielleicht kann mir einer der "alten Maple-Hasen" bei meinem Problem helfen.
Nun zu meiner Frage:
Ich habe eine Funktion, die ich mittels "piecewise" zusammengesetzt habe. Die zusammengesetzte Funktion ist stetig. Nun habe ich das Problem, dass ich die "piecewise"-Funktion zwei mal differenzieren will.
Ich habe mir zunächst Funktionen definiert die ich über Punkte ermittelt habe.
Funktionsteil 1:
> h1(t):=20;
Funktionsteil 2:
> M:=[1,2,3,4,5,6,7]:
> n:=nops(M)-1:
> MP:=[seq([P[M[j]][1],P[M[j]][2]],j=1..n+1)]:
> lgn:=solve({seq(f2(MP[k+1][1])=MP[k+1][2],k=0..n)},{a[k]$k=0..n}):
> assign(lgn);
> for l from 0 to n do a[l]:=evalf(a[l],5):od:
> f2(phi):=sort(f2(phi)):
> phi(t):=t*54000:
> h2(t):=f2(phi(t));
h2(t):=...
Funktionsteil 3:
> h3(t):=eval(h2(t), t=0.0012962962962963);
h3(t) := 23.5701684
Nun die stückweise definierte Funktion:
> h(t):=piecewise(t>=0.0000000000000000 and t<0.0002962962962963,h1(t),
> t>=0.0002962962962963 and t<0.0012962962962963,h2(t),
> t>=0.0012962962962963 and t<0.0066666666666667,h3(t)):
> plot(h(t),t=0.0..0.0066666666666667);
Hier will ich nun differenzieren:
> [mm] h_1(t):=diff(h(t),t);
[/mm]
Das bekomme ich geliefert:
[mm] h_1(t) [/mm] := PIECEWISE([0., t < 0.], [Float(undefined), t = 0.], [0., t < 0.2962962963e-3], [Float(undefined), t = 0.2962962963e-3], [mm] [-18011.70000+147852864.*t-0.4795251192e12*t^2+0.8035047796e15*t^3-0.6282066275e18*t^4+0.1793415934e21*t^5, [/mm] t < 0.1296296296e-2], [Float(undefined), t = 0.1296296296e-2], [0., t < 0.6666666667e-2], [Float(undefined), t = 0.6666666667e-2], [0., 0.6666666667e-2 < t])
Wenn ich dann plotten will kommt natürlich nichts.
> [mm] plot(h_1(t),t=0.000000000001..0.000296);
[/mm]
Ich denke das Problem ist, dass die Grenzen keine Ableitung haben?!
Gibt es einen entsprechenden Befehl in Maple, der es mir erlaubt, stückweise definierte Funktionen zu differenzieren?
Ich habe schon die Hilfefunktion von Maple 9 bemüht und im Internet gesucht, leider aber nichts entsprechende gefunden.
Für euere Hilfe möchte ich mich im Voraus Bendanken.
Axel.
Nun der Pasus für einen Erstposter:
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Hallo,
ich wollte das Ganze mal ausprobieren, aber du hast die Definition der Ps unterschlagen. Kannst du die evtl. nachliefern?
Außerdem: Eine Funktion muss nicht nur stetig sondern auch differenzierbar sein, damit sie sich differenzieren lässt. Da ich jetzt aber nicht die Ps habe, kann ich da nix zu sagen...
Gruß
Martin
|
|
|
|
|
Hallo Martin,
erst einmal Danke für deine Hilfe. Kannst du mir auf die Sprünge helfen (auch auf die Gefahr hin, dass ich mich blamiere), ich weiß nicht was "Ps" heißt?
Gruß Axel.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 14:56 Mo 06.11.2006 | Autor: | Martin243 |
Hoppla,
ich meinte natürlich die P's in:
MP:=[seq([P[M[j]][1],P[M[j]][2]],j=1..n+1)]:
Das scheinen deine Punkte zu sein. Ohne die bekomme ich nicht die konkrete Lösung, die du angibst.
Gruß
Martin
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:30 Mo 06.11.2006 | Autor: | Karohemd |
Hallo Martin.
Klar, die Funktion willst du aus den Punkten bauen... Ich habe die Funktion die ich mir durch die Punkte ermittelt habe noch in Abhängigkeit der Zeit gebracht (Weg, Geschwindigkeit, Beschleunigung... da soll es hin).
Deshalb poste ich dir gleich die Funktion, mit der ich arbeite:
[mm] h2(t):=21.725-18011.70000*t+73926432.00*t^2-0.1598417064e12*t^3+0.2008761949e15*t^4-0.1256413255e18*t^5+0.2989026557e20*t^6
[/mm]
Nachmals danke für deine Mühe, Axel.
|
|
|
|
|
Hallo,
ich hoffe, jetzt verschwindet endlich das Brett vor unser beider Köpfen!
Du schreibst:
> Wenn ich dann plotten will kommt natürlich nichts.
1. Kommt nichts, eine Fehlermeldung oder ein leerer Plot?
Ich wette, es ist ein leerer Plot.
2. Was erwarten wir für einen Plot?
Richtig! In diesem Intervall ist die Ableitung überall 0, da die Funktion konstant (=20) ist.
Die Tatsache, dass bei der Ableitung undefinierte Werte herauskommen, ist natürlich auf die (wenigen) nicht differenzierbaren Stellen zurückzuführen. Aber die können uns nix anhaben. Es sind ja nur die drei. Den Plot stört es nicht. Nur müssen wir genau überlegen, was wir sehen wollen, wenn wir die Nullfunktion plotten :)
Hat bei mir etwas länger gedauert...
Gruß
Martin
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 20:31 Mo 06.11.2006 | Autor: | Karohemd |
Hallo Martin,
jetzt verstehe ich etwas nicht. Ich habe ja mehrere Funktionen las piecewise definiert. D.h. für den einen Funktionsteil h1(t) ist die Ableitung gleich null, klar, wo keine Wegänderung da keine Geschwindigkeit ... Wenn ich nun aber den Funktionsteil h2(t) differenziere sollte doch was zu "holen" sein.
Also nochmal: Mir ist klar, dass der erste Teil Null wird, der zweite darf es aber auf keinen Fall?!
Oder bin ich verkehrt?
Gruß Axel.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 20:33 Mo 06.11.2006 | Autor: | Karohemd |
Nochmal als Nachtrag: Mit [mm] "h_1(t)" [/mm] meinte ich natürlich die erste Ableitung!
|
|
|
|
|
Hallo,
du schreibst:
> Wenn ich nun aber den Funktionsteil h2(t) differenziere sollte doch was
> zu "holen" sein.
Na klar! Aber du hast beim Plotten nur das erste Intervall angegeben.
Ich versuche das mal nachzuvollziehen. Ich schreibe meine Eingaben mal auf:
h1(t):=20;
h2(t):=21.725-18011.70000*t+73926432.00*t^2-0.1598417064e12*t^3+0.2008761949e15*t^4-0.1256413255e18*t^5+0.2989026557e20*t^6;
h3(t):=eval(h2(t), t=0.0012962962962963);
h(t):=piecewise(t<0.0002962962962963,h1(t),t<0.0012962962962963,h2(t),t<0.0066666666666667,h3(t));
plot(h(t),t=0.0..0.0066);
und erhalte
[Dateianhang nicht öffentlich]
Nun differenziere ich die gesamte Funktion
h_1(t) := diff(h(t),t);
erhalte dreimal 0, dreimal undefined und ein schönes Polynom. Also plotte ich nun (den gesamten Bereich, du hast ja nur das erste Intervall genommen):
plot(h_1(t),t=0..0.0066);
und erhalte
[Dateianhang nicht öffentlich]
Es klappt bei mir bestens. Bekommst du evtl. noch irgendwelche Warnungen?
Gruß
Martin
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich] Anhang Nr. 2 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:37 Mi 08.11.2006 | Autor: | Karohemd |
Hallo Martin,
menschenskinder... Ich habe mich selber aus dem Konzept gebracht! Als ich h(t) differenziert habe und mir das Ergebnis mit ";" habe anzeigen lassen hat mich das so aus dem Konzept gebracht, dass ich beim Plotten vergessen habe, den ganzen Wertebereich anzugeben. *Peinlich*. Ich habe mich vermutlich so in das Ding verrant dass ich den Wald vor lauter Bäumen nicht gesehen habe.
Vielen Dank, dass du dir für das "Problem" Zeit genommen hast.
Axel.
|
|
|
|