Kurvendiskussion

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

NForcer

Betreff: Kurvendiskussion

BeitragMi, Sep 21, 2005 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin, ich wollte mir mal nen Programm schreiben, das für mich eine Kurvendiskussion durchführt^^.
Da bin ich schon beim wichtigsten Teil (der Schritt, der zuerst gemacht wird) auf nen Problem gestoßen.

und zwar:
Erst wollt ich nen test starten ob das Programm eine Funktion NUR mit "+" Subtermen trennen kann ... (mit dem Minus wollte ich dann danach anfügen...hätt auch schon ne idee wie...)
Jedenfalls dachte ich mir so, das ich ne Funktion, sagen wir
Funktion$ = "5x+22+33x^3" nehme
Diese will ich nun auseinanderfuzzeln.
dazu hab ich folgende Funktion geschrieben (wiegesagt noch ohne "+" und "-" unterscheidung)

BlitzBasic: [AUSKLAPPEN]

Function Term_Zerlegen(Funktionv$)
;Subterme_Anzahl = 1
Funktionbla$ = Funktionv$
Repeat

Stelle_Plus = Instr(Funktionbla,\"+\")

SubTerme(i) = Mid$(Funktionbla,1,Stelle_Plus)
Funktion22$ = Replace$(Funktionbla,SubTerme(i),\"\")
Funktionbla$ = Funktion22$

i = i + 1

If Stelle_Plus = 0 Then Subterme_Anzahl = 0
Until Subterme_Anzahl <> 1

Print SubTerme(0)
Print SubTerme(1)
Print Subterme(2)

Print \"Funktion: \" + Funktion
Print \"Funktion22: \" + Funktion22
End Function


komischerweise stürzt das Programm ab, und ich hab keine Erklärung warum :(
es muss was mit "Funktion22$ = Replace$(Funktionbla,SubTerme(i),"") " zu tun haben, weil, wenn man diesen schritt nur einmal durchzieht, funktioniert alles korrekt, aber da ich ja 3 Subterme habe, soll das Programm auch 3 Subterme ausspucken verdammt... *grrr*

Im endeffekt hab ich's mir so gedacht:

1. man gibt Funktion a la "3x+3x^3+...+x" ein
2. Programm prüft auf "+"/"-"
3. das Zeichen, dessen position kleiner ist, wird zuerst gespeichert (da die Funktion von links nach rechts gelesen wird)
4. man speichert den Subterm bis zum Vorzeichen in einem Feld
5. Man "replaced" den String bis einschließlich Vorzeichen mit ""
und fängt wieder von vorne an...

also in meinem Fall "MÜSSTE" es also so aussehen:
Funktion gleich 5x+22+33x^3
1. Term: 5x
Funktion: 22+33x^3
2. Term: 22
Funktion: 33x^3
3. Term 33x^3
Funktion: " "

Ende...

natürlich muss ich noch in nem 2. Feld die Vorzeichen der einzelnen Terme speichern etc. aber das brauch ich ja erst machen, wenn das aufsplitten funktioniert :(...


ps: falls jemand von euch nen besseren Weg/Algorithmus zum Durchführen einer Kurvendiskussion hat, wär's cool wenn ihr eure Schritte kurz erläutern würdet (speziell auf das aufslitten der Terme bezogen)

danke für eure Aufmerksamkeit. mfG
 

Nox

Betreff: Re: Kurvendiskussion

BeitragMi, Sep 21, 2005 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
NForcer hat Folgendes geschrieben:
ps: falls jemand von euch nen besseren Weg/Algorithmus zum Durchführen einer Kurvendiskussion hat, wär's cool wenn ihr eure Schritte kurz erläutern würdet (speziell auf das aufslitten der Terme bezogen)

danke für eure Aufmerksamkeit. mfG


Hierfür eignen sich Binary Trees hervorragend. Du gehst deine Funktion durch und erstellst bei jedem Operator eine neue Abzweigung, wobei verschiedene Operatoren natürlich unterschiedliche Prioritäten haben (* und / vor + und - z.B.). Einfach mal bei der Wikipedia nach Binary Trees suchen.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group