Ableitung < Maxima < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich hab in Maxima eine Funktion wie folgt definiert:
[mm]f\left(x\right):=\left(x+1\right)/\left(x-1\right)[/mm]
sowie die 1. Ableitung
[mm]fs\left(x\right):=diff\left(f\left(x\right),x\right)[/mm]
Nun, wenn ich versuche den Wert der 1. Ableitung an einer Stelle [mm] x \not= 1[/mm] ausgeben zu lassen, erhalte ich folgendes:
fs(0)
Non-variable 2nd argument to diff:
0
#0: fs(x=2) -- an error. Quitting. To debug this try debugmode(true);
Wie erreiche ich nun, dass mir der Wert der ersten Ableitung an der Stelle 0 ausgegeben wird?
Gruß
MathePower
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 18:03 Mo 10.03.2008 | Autor: | rainerS |
> Hallo,
>
> ich hab in Maxima eine Funktion wie folgt definiert:
>
> [mm]f\left(x\right):=\left(x+1\right)/\left(x-1\right)[/mm]
>
> sowie die 1. Ableitung
>
> [mm]fs\left(x\right):=diff\left(f\left(x\right),x\right)[/mm]
>
> Nun, wenn ich versuche den Wert der 1. Ableitung an einer
> Stelle [mm]x \not= 1[/mm] ausgeben zu lassen, erhalte ich
> folgendes:
>
> fs(0)
> Non-variable 2nd argument to diff:
> 0
> #0: fs(x=2) -- an error. Quitting. To debug this try
> debugmode(true);
>
> Wie erreiche ich nun, dass mir der Wert der ersten
> Ableitung an der Stelle 0 ausgegeben wird?
Der Operator := definiert eine Funktion; dabei wird der Funktionskörper (also Alles, was rechts vom Operator steht) nicht ausgewertet. Beim Aufruf werden die formalen Parameter durch die aktuellen ersetzt. Daher ergibt fs(2) den Ausdruck
diff(f(2),2)
ersetzt, was zur genannten Fehlermeldung führt.
Du musst erst auswerten, dann ersetzen, also zum Beispiel
subst(x=2,fs(x))
Du kannst das auch durch einen Block erreichen: dabei wird eine lokale ungebundene Variable für die Differentiation benutzt und danach durch den aktuellen Parameter ersetzt:
fs(x) := block([_x],subst(_x=x,diff(f(_x),_x)));
Dadurch ergibt fs(2):
block([_x],subst(_x=2,diff(f(_x),_x)))
Der Block sorgt dafür, dass die Variable _x keinen Wert hat, ansonsten ist der Inhalt das Gleiche wie oben.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:09 Mo 10.03.2008 | Autor: | MathePower |
Hallo rainerS,
> > Hallo,
> >
> > ich hab in Maxima eine Funktion wie folgt definiert:
> >
> > [mm]f\left(x\right):=\left(x+1\right)/\left(x-1\right)[/mm]
> >
> > sowie die 1. Ableitung
> >
> > [mm]fs\left(x\right):=diff\left(f\left(x\right),x\right)[/mm]
> >
> > Nun, wenn ich versuche den Wert der 1. Ableitung an einer
> > Stelle [mm]x \not= 1[/mm] ausgeben zu lassen, erhalte ich
> > folgendes:
> >
> > fs(0)
> > Non-variable 2nd argument to diff:
> > 0
> > #0: fs(x=2) -- an error. Quitting. To debug this try
> > debugmode(true);
> >
> > Wie erreiche ich nun, dass mir der Wert der ersten
> > Ableitung an der Stelle 0 ausgegeben wird?
>
> Der Operator := definiert eine Funktion; dabei
> wird der Funktionskörper (also Alles, was rechts vom
> Operator steht) nicht ausgewertet. Beim Aufruf werden die
> formalen Parameter durch die aktuellen ersetzt. Daher
> ergibt fs(2) den Ausdruck
>
> diff(f(2),2)
>
> ersetzt, was zur genannten Fehlermeldung führt.
>
> Du musst erst auswerten, dann ersetzen, also zum Beispiel
>
> subst(x=2,fs(x))
>
> Du kannst das auch durch einen Block erreichen: dabei wird
> eine lokale ungebundene Variable für die Differentiation
> benutzt und danach durch den aktuellen Parameter ersetzt:
>
> fs(x) := block([_x],subst(_x=x,diff(f(_x),_x)));
>
> Dadurch ergibt fs(2):
>
> block([_x],subst(_x=2,diff(f(_x),_x)))
>
> Der Block sorgt dafür, dass die Variable _x keinen Wert
> hat, ansonsten ist der Inhalt das Gleiche wie oben.
Jetzt funktioniert's.
Danke.
>
> Viele Grüße
> Rainer
>
Gruß
MathePower
|
|
|
|