mathematische Funktionen in C++ einlesen



  • Liebe community,

    ich möchte eine mathematische Funktion mittels einer Klasse einlesen. Ist hierfür eine Liste, ein nicht alloziertes Pointer-Feld oder eine Baumstruktur am besten? Wie würde diese ausschauen.
    Das Problem ist, dass ich nicht nur einfache Funktionen wie x² + 1 einlesen muss, sondern auch wesentlich komplexere wie z.B. Wurzelfunktionen, Sinusfunktionen.

    Danke für eure Hilfe 🙂



  • "einlesen" bedeutet was?



  • Der User gibt eine beliebige Funktion im zB command window ein.


  • Mod

    fourier schrieb:

    Der User gibt eine beliebige Funktion im zB command window ein.

    Das nennt man 'eingeben'. Das war nicht gefragt.

    Wir wollen wissen, was der Zustand deines Programms sein soll, nachdem das 'einlesen' geschehen ist.



  • fourier schrieb:

    Der User gibt eine beliebige Funktion im zB command window ein.

    ...
    string eingabe;
    getline(std::cin, eingabe);
    ...
    




  • ich wollte die eingegebene Funktion in einer anderen klasse für weitere rechenoperationen verwenden



  • fourier schrieb:

    Ist hierfür eine Liste, ein nicht alloziertes Pointer-Feld oder eine Baumstruktur am besten? Wie würde diese ausschauen.

    Hausaufgabe.



  • fourier schrieb:

    ein nicht alloziertes Pointer-Feld

    Was ist das und wie kommt man drauf, solche Namen zu verwenden?

    Das schreit natürlich nach Hausaufgabe, ist aber anscheinend viel zu kompliziert. Wenn man sich erst Gedanken über nicht allozierte Pointer-Felder machen muss, und meint, Wurzel- oder Sinusfunktionen wären komplexer als x²+1, dann ist man noch unendlich weit davon entfernt, die Aufgabe lösen zu können.



  • hustbaer schrieb:

    fourier schrieb:

    Ist hierfür eine Liste, ein nicht alloziertes Pointer-Feld oder eine Baumstruktur am besten? Wie würde diese ausschauen.

    Hausaufgabe.

    Mechanics schrieb:

    fourier schrieb:

    ein nicht alloziertes Pointer-Feld

    Was ist das und wie kommt man drauf, solche Namen zu verwenden?

    Das schreit natürlich nach Hausaufgabe, ist aber anscheinend viel zu kompliziert. Wenn man sich erst Gedanken über nicht allozierte Pointer-Felder machen muss, und meint, Wurzel- oder Sinusfunktionen wären komplexer als x²+1, dann ist man noch unendlich weit davon entfernt, die Aufgabe lösen zu können.

    Vielen Dank, eure Tipps helfen mir jetzt natürlich weiter. 👎
    Zu eurer Info: es handelt sich nicht um eine Hausaufgabe, sondern um ein freiwilliges Projekt im Rahmen meines Studiums. Hierbei soll ich die Fourier-Reihe numerisch programmieren (für alle die behaupten, ich scheitere an einer einfachen Wurzelfunktion). Da ich die eingegebene Funktion zur Bestimmung der Parameter ak und bk benötige, wollte ich mir einen Tipp von jemanden, der sich auskennt holen, wie ich die Funktion am besten für weitere Berechnungen abspeichere, wobei ich sie evtl. auch ggf. umformen muss.
    Da ich das Projekt unter Zeitdruck fertigstelle und meine Ansprechperson in Programmieren momentan nicht erreichbar ist, wollte ich mir Hilfe in diesem Forum holen. Hat ja nicht so toll geklappt. Stattdessen muss ich mir anhören, dass ich meine Hausaufgaben zu erledigen habe und die Lösung kaum schaffen werde. Es wäre besser, ihr würdet euch mal wie Erwachsene verhalten und die unnützen Kommentare stecken lassen, denn Meldungen wie "Hausaufgabe." helfen wirklich niemandem weiter! Aber gut, anscheinend wisst ihr die Antwort auch nicht.

    PS:
    mit schwierigeren Funktionen war übrigens so etwas gemeint:
    F(t) = (1/2π) * 0 ∫ 2π |sin((t-τ)/2)| *τ dτ



  • sondern um ein freiwilliges Projekt im Rahmen meines Studiums

    Das ist natürlich etwas ganz anderes als Hausaufgaben...



  • Deine Aussagen (und die in dem letzten Beitrag genauso) zeugen halt davon, dass du zu wenig Ahnung von dem Problem hast. Du hast immer noch überhaupt nicht verstanden, was an dem ganzen komplex ist, und dass die Wurzelfunktion oder das was du zuletzt geschrieben hast nichts zur Komplexität beitragen.
    Und da ich das Problem und anhand deiner Aussagen/Annahmen auch deinen Kenntnisstand einschätzen kann, bleibe ich bei der Aussage, dass es viel zu kompliziert für dich ist.



  • Um deine ursprüngliche Frage doch zu beantworten, das musst du als Baumstruktur darstellen (implementierungstechnisch könnte man das zwar auch flach darstellen, aber vom Konzept her brauchst du einen Baum).
    Schau dir die Antwort von Th69 an, falls du das noch nicht getan hast.



  • fourier schrieb:

    Vielen Dank, eure Tipps helfen mir jetzt natürlich weiter. 👎

    Wie sehr die die Art und Weise wie sich dieser Thread entwickelt hat weiter hilft, liegt ganz bei dir.

    fourier schrieb:

    Zu eurer Info: es handelt sich nicht um eine Hausaufgabe, sondern um ein freiwilliges Projekt im Rahmen meines Studiums.

    Macht für mich keinen Unterschied.

    fourier schrieb:

    Hierbei soll ich die Fourier-Reihe numerisch programmieren (für alle die behaupten, ich scheitere an einer einfachen Wurzelfunktion).

    Ich weiss nicht inwiefern das was du machen sollst etwas darüber aussagen soll was du machen kannst. Komische Idee.

    fourier schrieb:

    Da ich die eingegebene Funktion zur Bestimmung der Parameter ak und bk benötige, wollte ich mir einen Tipp von jemanden, der sich auskennt holen, wie ich die Funktion am besten für weitere Berechnungen abspeichere, wobei ich sie evtl. auch ggf. umformen muss.

    Und genau diese Umformung ist nicht ganz trivial. Mathematisch überhaupt nicht spannend, nichtmal annähernd, aber wenn man sowas noch nie programmiert hat gibt es da erstmal einiges zu kniffeln.

    fourier schrieb:

    Da ich das Projekt unter Zeitdruck fertigstelle und meine Ansprechperson in Programmieren momentan nicht erreichbar ist, wollte ich mir Hilfe in diesem Forum holen. Hat ja nicht so toll geklappt. Stattdessen muss ich mir anhören, dass ich meine Hausaufgaben zu erledigen habe und die Lösung kaum schaffen werde.

    Liegt aber grösstenteils an dir.

    fourier schrieb:

    und die unnützen Kommentare stecken lassen, denn Meldungen wie "Hausaufgabe." helfen wirklich niemandem weiter!

    Vielleicht hilft es dir wenn ich es etwas genauer erkläre...

    Wenn du Hilfe bei der Lösung einer Aufgabe (Schule/FH/Uni/Kurs, Wahlfach oder Pflichtfach, alles egal) willst, dann ist es meist besser gleich klar dazuzuschreiben dass es sich um eine Aufgabe handelt. So lange du keine Antworten erwartest die du nur noch abschreiben musst, sind die Mitglieder hier normalerweise durchaus bereit zu helfen. Also Tips zu geben, (zumeist konstruktive) Kritik zu Ansätzen die du zeigst zu äussern etc.

    Wenn ich dagegen was lese wo...
    - die klare Aussage dass es sich um eine Aufgabe handelt fehlt,
    - aus der Formulierung bzw. Art der Frage trotzdem ziemlich klar erkennbar ist dass es sich um eine Aufgabe handelt und
    - der Fragesteller den Eindruck macht so wenig von der Sache (Programmieren) zu verstehen dass er kaum in der Lage sein wird auch nur irgend einen Teil davon selbst zu machen...
    dann reagiere halt zumindest ich etwas ... unwillig. Was sich dann z.B. so wie hier äussern kann. Ist schon verständlich, oder?

    fourier schrieb:

    Es wäre besser, ihr würdet euch mal wie Erwachsene verhalten

    Die Antwort die mir dazu einfällt verkneif ich mir mal. Ich will dich nicht beleidigen und es besteht immer die Chance dass ich mit meiner Einschätzung völlig daneben liege - ich kenne ja weder dich persönlich noch die genauen Umstände.

    Nur noch ein kleiner Tip: Mit solchen Äusserungen machst du dir hier normalerweise keine Freunde.

    fourier schrieb:

    Aber gut, anscheinend wisst ihr die Antwort auch nicht.

    Naja die Antwort auf deine erste Frage hast du ja bereits erhalten: "Baum". Und die Antwort ist auch gut, denn so eine Formel/Funktion ist ein Baum - macht daher auch Sinn sie als Baum abzuspeichern.

    Die Frage danach wie diese (Baumstruktur) aussehen könnte...
    Naja, überleg dir einfach mal wie so ne Formel aufgebaut ist, dann solltest du das alleine hinbekommen. Also aus welchen Teilen so ne Formel besteht. Und dann überleg dir "wo da der Baum ist". Denn wie gesagt, das Ding ist bereits ein Baum, da musst du dir nichtmal wirklich selbst was ausdenken dazu.

    Kleiner Tip: ignorier erstmal Dinge wie Summen oder Integrale und beschränk' dich auf unäre und binäre Operatoren, Variablen und Konstanten.
    Wenn du das erstmal raus hast ist die Erweiterung auf ein System mit dem du auch Dinge wie Summen oder Integrale darstellen kannst relativ einfach.


Log in to reply