| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: Gleichungen lösen. im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo. Ich hab ein Programm selbst geschrieben, welches Gleichungen löst (Funktionsgleichungen....). Jetzt hab ich nur ein Problem.... Hier der ...
![]() |
| | #1 (permalink) |
| Anzeige Hallo. Ich hab ein Programm selbst geschrieben, welches Gleichungen löst (Funktionsgleichungen....). Jetzt hab ich nur ein Problem.... Hier der Code Der Quellcode x wird immer um o,1 erhöht... Ich habs mal mit der Gleichung a=+1 b=-6 und c=+9 probiert, ich weiß, dass da 3 hinmuss, um die Gleichung auf Null zu bringen (Es geht um Nullstellen in Parabeln) Aber wenn er dann bei 3 angekommen ist, so steh folgenes als Ergebnis da: 5,11591e-013 Wird x immer um 0,2 erhöht, so steht etwas ähnliches da und wenn es immer um 0,5 erhöht wird, dann funktionierts.... aber dann habe ich leider keine garantie, dass wirklich alle möglichkeiten mit einer nachkommarstelle getestet wurden.... Wo liegt da der Fehler? Danke schonmal im voraus... Gruß, D31~$0u1 | |
| | |
| | #2 (permalink) |
| Registriert seit: 23.10.06 ![]() Likes: 0 | Das Ergebnis ist richtig. Gib mal 5,11591*e^-13 im Taschenrechner ein... fast! 0 Ich denk mal, dass das Ausgabeformat eines Floats ist (hab grad erst mit C angefangen). Mal abgesehen davon... Eine Funktion kann ja auch nur negative Nullstellen haben. Also mit x=0 kanns passieren das du keine Nullstellen findest. Warum benutzt du eigentlich nicht die Lösungsformel? |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Moderator ![]() | Fließkommazahlen kannst du nicht einfach wie Ganzzahlen auf Gleichheit prüfen, da es zu Rundungsfehlern kommen kann. So eine Abfrage wie if ( l != 0 ) kann somit ziemlich in die Hose gehen, denn du vergleichst einen Float (der auch so gut wie niemals exakt 0 sein wird) mit einem Integer. Wenn du da auf Gleichheit prüfen willst, dann haut das nur über Toleranzbereiche hin, dass du diese Aussage also beispielsweise als wahr betrachtest, wenn l hinreichend weit unterschiedlich von 0 ist. Die Schreibweise 5,11591*e^-13 bedeutet übrigens nichts anderes als 5,11591 * 10^-13, also 0,000000000000511591, was ja schon ziemlich klein ist |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 30.03.04 ![]() Likes: 14 | Hallo, hier der Insider-Tipp um Nullstellen zu finden: Bei Parabeln kann man die PQ-Formel verwenden, lässt sich sehr leicht programmieren und führt immer zum richtigem Ergebnis. Bei Funktionen höheren Grades speichert man das Ergebnis des vorherigen durchlaufes zwischen. Wenn das alte Ergebnis * dem neuen Ergebnis eine negative Zahl (<0) ergibt, so war zwischen diesen beiden Ergebnissen eine Nullstelle. Natürlich sollte man auch überprüfen, ob das Ergebnis von vornherein 0 ist. |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Mathe Gleichung lösen | Ook! | Science & Fiction | 7 | 04.11.08 16:28 |
| crackmes lösen ??? | octron195 | Doppelte Beiträge | 1 | 17.08.08 14:51 |
| Gleichungen | :::Lük::: | Code Kitchen | 11 | 02.05.07 19:13 |
| Gleichungssystem lösen | Serow | Off topic-Zone | 1 | 11.12.06 19:21 |
| rätsel lösen | weedmenn | Hacks & Crackmes | 5 | 14.04.06 23:10 |