Autor Beitrag
Estefania
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 20.04.08 15:01 
Hallo ihr lieben,
wir müssen zurzeit in der Schule ein Programm schreiben mit Delphi. Nun ist es aber so, dass dieses ganze programmieren überhaupt nicht mein Ding ist und ich es auch nicht wirklich verstehe. Ich hab schonmal geguckt über was ihr euch hier so unterhaltet und hoffe, dass wenn ich euch jetz die Aufgabenstellung erläutere, ihr mich nicht auslacht.
Also:
Wir müssen ein Programm schreiben das die Nullstellen verschiedener Funktionen berechnet.
Unsere Funktion ist: f(x) = ax 5 + bx 4 + cx ³ + dx ² + ex + f
(Es soll aber auch so sein, dass wenn man eine andere Gleichung dort einfügt, dass das Programm das dann auch berechnen)
Das Feld soll dann so aussehen: - oben in einem Labelfeld gibt man die Gleichung ein
- dann kommt a= (und dann ein editfeld), dass geht dann so bis f = editfeld
- dann gibt es eine obere und untere Grenze ( jeweils wieder mit einem Editfeld)
- und zum Schluss dann das Ausgabefeld mit Nullstellen

Dazu hat er uns folgenes gegeben:
Algorithmus:
1. Gebe Intervallgrenzen (oben, unten) ein.
2. Wenn Nullstelle dazwischen liegt, dh. f(u)= f (o) < 0 ist dann
- Bilde Mitte (m=o+u)/2
- wenn f(u)*f(m) < 0 dann ist neue obere Grenze die alte Mitte
sonst ist die alte untere Grenze die alte Mitte
( Wiederhole bis der Abstand der unteren Grenze zur oberen Grenze klein ist )


Ich hoffe da kann jetzt jemand was mit anfangen und möchte mir helfen... ich
weiß sonst nämlich nicht was ich dann machen soll...
Vielen Dank schonmal im Vorraus...
Liebe Grüße
Estefania


Zuletzt bearbeitet von Estefania am So 20.04.08 17:57, insgesamt 1-mal bearbeitet
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8549
Erhaltene Danke: 478

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: So 20.04.08 15:07 
Hallo und :welcome: in der Entwickler-Ecke!

Zuerstmal: Zum lachen ist das bestimmt nicht. Mal eben ein Iterationsverfahren zur Nullstellenberechnung beliebiger Funktionen ist nicht mal so eben hinprogrammiert ;-).

Soll die Gleichung wirklich so eingegeben werden können? :shock: Dann braucht man erstmal einen Suche in der Entwickler-Ecke PARSER. Und dann fängt der Algorithmus an. Was sind denn deine Ansätze?


btw.: Bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät.

Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

_________________
We are, we were and will not be.
Estefania Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 20.04.08 18:02 
Vielen Dank für deine Nachricht!

Ich denke mal, dass das für den Anfang für die Funktionsgleichung sein soll und wir das irgendwann umprogrammieren sollen sodass es dann auf alle Funktionsgleichungen geht. Meine Ansätze sind im Moment alle Mist da ich ja nicht mal weiß, mit welcher Schleife ich arbeiten soll (wir arbeiten fast nur mit schleifen, vielmehr kennen wir auch noch garnicht). Informatik fällt mir echt wahnsinnig schwer und ich würd mich echt sehr über Hilfe freuen.
Liebe Grüße
Estefania

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

ach so und da fällt mir noch ein: bei der gleichung ist mir ein fehler unterlaufen. Es heißt am anfang gleich ax hoch 5 und danach bx hoch 4... hab das nur nicht hinbekommen...
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: So 20.04.08 18:54 
@Schleife: würde ich while-do nehmen.
@Herangehensweise: Zuerst setzt du für X einen Wert ein, indem du X als Single-Variable deklarierst. Dabei gehst du alle Werte durch, durch inkrementieren. Danach testest du bei jedem Durchgang, ob round(x) 0 ist. wenn ja, testest du, x um (0,1 / 10) - also 0,01 - zu dekrementieren. Falls der Wert danach größer als der davor ist (bei positiven Zahlen) oder kleiner als der davor (bei negativen Zahlen), inkrementierst du den Wert um 0,01. Falls sich da der Wert auch weiter von Null wegbewegt, versuchst du es mit kleineren Schritten, also 0,001. Danach kannst du glaub ich aufhören, viel genauer brauchst du es wahrscheinlich sowieso nicht.

Falls du damit nichts anfangen kannst, schreib mal, was ax, bx, cx, dx, ex und f sind.
Estefania Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: So 20.04.08 20:02 
du hasr recht, ich kann damit nichts anfangen...
aber was meinst du mit was das is?
es is so: man soll für a,b,c,d,e,f einen wert eintragen können, wo delphi dann die nullstelle herrausfindet...
deswegen gibts ja auf dem monitor das a= und dann kommt ein editfeld wo man das eintragen soll weißte... und das geht dann halt so bis f= editfeld
liebe grüße
estefania
Horst_H
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1654
Erhaltene Danke: 244

WIN10,PuppyLinux
FreePascal,Lazarus
BeitragVerfasst: Mo 21.04.08 08:23 
Hallo,

de.wikipedia.org/wiki/Polynom hilft dir schon wesentlich weiter, in welchem Bereich Du überhaupt Nullstellen suchen musst, speziell die reellen.
Das Hornerschema de.wikipedia.org/wiki/Horner-Schema erleichtert die Berechnung und das kürzen des Polynom's (ergibt sich bei der Nullstelle automatisch ) , wenn Du eine reelle Nullstelle gefunden hast.
Ausserdem ist doch vorgegeben, dass Du Intervallschachtelung nutzen sollst. Es geht also erstmal nur um das Finden zweier Positionen x1,x2 deren Funktionswerte f(x1) und f(x2) unterschiedliches Vorzeichen haben.

Wenn Du die Koeffizienten a..f deiner Edit-Felder in ein Feld a[0]..a[Grad] einordnest , wobei hier Grad = 5 wäre, wird die Sache schon einfacher.

Gruß Horst