Seite 1 von 1

Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 16:35
von Gyplay_GER
Hallo,
als erstes: Ich habe keine Ahnung von Python, allerdings brauche ich ein paar Zeilen um eine Ableitung zu erstellen.
Bis jetzt habe ich die Lösung mit SymPy gefunden:

from sympy import Symbol, diff

x = Symbol('x')
func = input("Funktion hier:")
diff(func, x)
print(diff(func, x))

Das Problem damit ist, dass ich das Programm auf meinem Taschenrechner (CASIO FX CG50) brauche. Allerdings hat der Rechner nur 16 MB Speicher und SymPy mehr. Ich brauche nun also eine Methode, unter 16 MB eine Ableitung einer Funktion mit Python zu berechnen.

Als Beispiel könnte man z.B. 2*x**5+70 nutzen.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 17:56
von __deets__
Allerdings hat der Rechner nur 16 MB Speicher und SymPy mehr.
ist kein deutscher Satz. Ich nehme mal an du meinst ".. und SymPy braucht mehr."

Wenn dem so ist: es gibt keinen einfachen Trick, wie man so etwas komplexes wie symbolisches Rechnen selbst machen kann. Wenn SymPy nicht zum laufen zu bringen ist, stehen die Chancen schlecht, dass du eine Alternative findest, geschweige denn, dass sie dir hier jemand kurz hinschreibt.

Da haettest du eher eine Chance zu versuchen, den Speicherverbrauch zu reduzieren.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 18:04
von Gyplay_GER
__deets__ hat geschrieben: Sonntag 24. März 2019, 17:56
Allerdings hat der Rechner nur 16 MB Speicher und SymPy mehr.
ist kein deutscher Satz. Ich nehme mal an du meinst ".. und SymPy braucht mehr."

Wenn dem so ist: es gibt keinen einfachen Trick, wie man so etwas komplexes wie symbolisches Rechnen selbst machen kann. Wenn SymPy nicht zum laufen zu bringen ist, stehen die Chancen schlecht, dass du eine Alternative findest, geschweige denn, dass sie dir hier jemand kurz hinschreibt.

Da haettest du eher eine Chance zu versuchen, den Speicherverbrauch zu reduzieren.
Wie verringert man denn den Speicherverbrauch von SymPy?

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 18:07
von __deets__
Bitte kein full-quote eines Postings direkt davor. Den kann man ja schon so ganz gut lesen.

Und den Verbrauch verringert man, indem man zB versucht, Teile zu identifizieren die nicht benoetigt werden. Das ist allerdings ein zaeher Prozess. Du kannst zB schauen, ob es Unter-Module/Pakete gibt, fuer die du keine Verwendug hast, und die loeschen. Wenn dann importe die benoetigen, kannst du die entfernen, aber das klappt natuerlich nur, wenn diese importe dann nicht auch benoetigt werden.

Ein generisches Rezept kann es nicht geben - sonst wuerde man das automatisch machen koennen, und von vorne herein weniger Speicher brauchen.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 18:10
von Sirius3
@Gyplay_GER: Dein Casio benutzt MicroPython, hat also wahrscheinlich viel weniger Speicher als die 16MB Flash. Und auch nicht alles läuft so, wie bei einem normalen Python.
Was willst Du denn erreichen? Was soll das Ziel sein?

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 18:47
von Gyplay_GER
Sirius3 hat geschrieben: Sonntag 24. März 2019, 18:10 Was soll das Ziel sein?
Das Ziel soll sein, die erste Ableitung einer Funktion anzeigen zu lassen. Der Taschenrechner kann zwar von Haus aus eine Ableitung anzeigen, allerdings nur als Graph.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 19:12
von Gyplay_GER
Ist es vielleicht auch irgendwie möglich eine Ableitung ohne CAS zu bilden?
Ich habe das hier gelesen, aber irgendwie nicht richtig verstanden: viewtopic.php?t=21148

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 19:27
von __deets__
Naja, das bedeutet am ende, dass man das von dir gegebene Polynom

2*x**5+70

transformiert zu einer Semi-Normalform

2*x**5+70*x**0

womit klar ist, dass es auch im Grunde nur eine Liste von (koeffizient, exponent)-Werten ist:

Code: Alles auswählen

p = [(2, 5), (70, 0)]
Und daraus das abgeleitete Polynom zu berechnen ist ja nun trivial:

Code: Alles auswählen

p_d = [(10, 4)]
Das kann man mit einer einfachen For-Schleife erledigen.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 19:50
von Gyplay_GER
Okay, Danke!
Ich habe nur leider keine Ahnung von Python und einer For-Schleife.
Kannste mir bitte (wenns nicht zu kompliziert ist) einfach kurz ein paar Zeilen schreiben (mit input, anstatt mit einer Funktion)?

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 20:24
von __deets__
Das ist nicht so voellig trivial, denn die Eingabe eines solchen Polynoms einzulesen in der Form wie du die hier haben willst (also "4*x**5" etc) - dafuer muss man einen eigenen Parser schreiben. Das sind ein paar dutzen zeilen und eine Stunde oder so Arbeit. Vielleicht findet sich jemand, aber mir fehlt dafuer die Zeit und die Lust.

Re: Funktionen ableiten mit/ohne CAS

Verfasst: Sonntag 24. März 2019, 20:26
von Gyplay_GER
Ok aber danke trotzdem!