Programm in PrologProgrammiersprache dass stammf

hi Leute :smile:
ich muss gerade meine Facharbeit schreiben und mein
Lehrer hat mir gerade mit geteilt dass ich ei n Programm inprogrammieren soll daSs die stammFunktion einer Gleichung berechnen kann … hiiiiiiilfe wie soll das geh … danke i.v

weder programmiere ich in Prolog, noch gebe ich Mathe-Nachhilfe, so dass ich dir nicht weiterhelfen kann, außer:

  1. „Stammfunktion einer Gleichung“ ist Schwachsinn. Es gibt nur Stammfunktionen anderer Funktionen.
  2. http://de.wikipedia.org/wiki/Stammfunktion
  3. http://www.google.de/search?q=%22Stammfunktion+einer…

Außerdem finde ich, bei einer Fragestellung, von der du dir ja eine lesbare, verständliche Antwort erhoffst, würde ein Mindestmaß an korrekter Ausdrucks- und Schreibweise, an Genauigkeit, von einem gewissen Respekt gegenüber den Personen zeugen, von denen du eine Antwort wünschst.

In Prolog kannst du einfach Mustererkennung (Pattern Matching) verwenden und für Integrationsregeln ein Prädikat zu erstellen. Für die Regel „Stammfunktion von einer Zahl ist Zahl*x“ wird das etwa:

stammf(Zahl, Zahl \* x) :- number(Zahl).

(Das number-Prädikat erkennt Zahlen). Bzw. wenn statt nur für „x“ es für beliebige Integrationsvariablen funktionieren soll:

stammf(Zahl, Zahl \* IntVar, IntVar) :- number(Zahl).

Die Summenregel „Stammfunktion einer Summe ist die Summe der Stammfunktionen der Summanden“ wird zu:

stammf(A + B, C + D, IntVar) :- stammf(A, C, IntVar), stammf(B, D, IntVar).

Die Regel für Exponenten (x hoch b ist hier als x^b geschrieben) „a*x^b hat die Stammfunktion: (a/b-1)*x^(b-1)“ wir dann zu

stammf(X \* IntVar ^ P, Y \* IntVar ^ Q, IntVar) :-
 Q is P + 1, Y is X / Q.

Ein Aufruf von

stammf(2+8\*x^3, St, x).

ergibt mit obigen dann die Antwort:

St = 2\*x+2\*x^4

Dann musst du noch Fälle wie eine Variable ohne Exponenten oder Faktor behandeln (x ist ja 1*x^1). Und Regeln für alle weiteren Konstrukte die du brauchst anlegen (Differenzen, Sinus, …).

Am Ende ruft man dann ein Prädikat auf, das noch „+c“ anhängt:

stammfunktion(X, Y + c, IntVar) :- stammf(X, Y, IntVar).

Hallo,

erstmal solltest du an deier Rechtsschreibung arbeiten. Rechtschreibfehler können Computer nämlich nicht entziffern und quittieren das mit einer Fehlermeldung.

Mir ist zum Beispiel nicht klar ob du ein Programm „umprogrammieren“ sollst, oder neu schreiben. Das Verb Inprogrammieren sagt mir nichts.

Als nächstes würde ich mal das Mathematikbuch aufschlagen und nachgucken, wie man generell Stammfunktionen ableiten kann.

Ob dein Problem allerdings tatsächlich mit Prolog lösbar ist kann ich nicht sagen. Sofern du es umprogrammieren sollst - dann gibt es ja schon Bausteine, die du nutzen kannst. Sollte es neu programmieren heißen, bin ich überfragt, da ich Prolog nicht kenne.

Viel Erfolg.

Hi mp,

Welche Programmiersprache sollst du dabei benutzen? Wäre schon wichtig zu wissen.
Gruß