Kennt jemand den Algorithmus zur Besimmung von Nullstellen
wie es in Mathcad 2000 die Funktion „root“ macht?
Von einer Funktion werden die Nullstellen innerhalb eines frei
definierbaren Intervall berechnet.
Gruß
Chris
Kennt jemand den Algorithmus zur Besimmung von Nullstellen
wie es in Mathcad 2000 die Funktion „root“ macht?
Von einer Funktion werden die Nullstellen innerhalb eines frei
definierbaren Intervall berechnet.
Gruß
Chris
Hi Chris,
Für sowas läßt sich kein allgemein gültiger Algorithmus angeben. Es gibt eine ganze Spezialdisziplin in der Mathematik, die dich Numerik nennt und sich zu einem Großteil mit dem Problem der numerischen Nullstellenberechnung beschäftigt. Welches Verfahren für ein spezielles Problem geeignet ist, hängt dabei sehr stark von dem mathematischen Problem ( spricht - der zu berechnenden Funktion ) ab.
Um Dir irgendwas empfehlen zu können, müsstest du die Funktion, deren Nullstellen Du berechnen möchtest angeben, oder zumindest die mathematische Form dieser Funktion.
Gruss,
Jürgen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Erstmal will ich Jürgen zustimmen.
Und dann würde ich Dir, Chris, empfehlen doch mal die Hilfe zu der root-Funktion vom MathCad aufzurufen und ein bißchen zu stöbern, da wird nämlich ziemlich gut erklärt, wie das da funktioniert. Und ganz ähnlich wird’s sonst auch gemacht, der Rest sind Feinheiten, Details und Beschleunigungen.
Das Zentrum
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Chris,
Kennt jemand den Algorithmus zur Besimmung von Nullstellen
wie es in Mathcad 2000 die Funktion „root“ macht?
wie es Mathcad 2000 macht, weiß ich leider nicht.
Vor ca. 20 Jahren hab ich mir mal zur Lösung eines bestimmten Problems ein Basic-Programm zu diesem Zweck gemacht, bei dem die entsprechende Gleichung n-ten Grades eingegeben werden muss. n kann dabei beliebig groß sein und die Ganauigkeit entspricht (wenn man will) der Grenzgenauigkeit des Rechners.
Wenn Du sowas brauchst und Dich ein alter Basic-Dialekt nicht abschreckt, mail ichs Dir zu (faxen wäre für mich noch einfacher).
Gruß
Pat
Das meinte ich : Ein Verfahren zur Bestimmung der Nullstellen von Polynomen n-ten Grades anzugeben ist möglich.
Allerdings ist die Bedingung „Polynom n-ten Grades“ schon eine starke Einschränkung der gewünschten Funktionen.
Gruss,
Jürgen
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi Chris,
Kennt jemand den Algorithmus zur Besimmung von Nullstellen
wie es in Mathcad 2000 die Funktion „root“ macht?wie es Mathcad 2000 macht, weiß ich leider nicht.
Vor ca. 20 Jahren hab ich mir mal zur Lösung eines bestimmten
Problems ein Basic-Programm zu diesem Zweck gemacht, bei dem
die entsprechende Gleichung n-ten Grades eingegeben werden
muss. n kann dabei beliebig groß sein und die Ganauigkeit
entspricht (wenn man will) der Grenzgenauigkeit des Rechners.Wenn Du sowas brauchst und Dich ein alter Basic-Dialekt nicht
abschreckt, mail ichs Dir zu (faxen wäre für mich noch
einfacher).Gruß
Pat
Hi Jürgen,
Das meinte ich : Ein Verfahren zur Bestimmung der Nullstellen
von Polynomen n-ten Grades anzugeben ist möglich.
Allerdings ist die Bedingung „Polynom n-ten Grades“ schon eine
starke Einschränkung der gewünschten Funktionen.
woher stammt diese Bedingung? Meine Erwähnung der Gleichung n-ten Grades war nur ein Beispiel.
Gruss,
Jürgen
das oben erwähnte Basic-Programm beschreibt kein elegantes mathematisches Verfahren, sondern ist nichts weiter, als eine Brechstange namens „schneller Rechenknecht“. Es funktioniert bei jeder beliebigen Gleichung, die sich in der Form y=f(x) darstellen lässt.
Gruß
Pat
das oben erwähnte Basic-Programm beschreibt kein elegantes
mathematisches Verfahren, sondern ist nichts weiter, als eine
Brechstange namens „schneller Rechenknecht“. Es funktioniert
bei jeder beliebigen Gleichung, die sich in der Form y=f(x)
darstellen lässt.Gruß
Pat
Hallo Pat
Nach welchem Verfahren soll das denn funktionieren ?
Würde mich interessieren. Soviel ich weiss müsste das ein recht ausgeklügelter Algorithmus sein, da Nullstellenbestimmung ohne weitere Kenntnis über die Eigenschaften der zu analysierenden Funktion ein ziemlich schwieriges mathematisches Problem ist.
Deshalb erstaunt es mich ein wenig, daß Du sagst, daß ein relativ kleines BASIC-Programm das so einfach hinkriegen soll…
Gruß,
Jürgen
Hi Jürgen,
hier das Basic-Programm aus alten Tagen: (Erklärung weiter unten)
0 DEFSNG „A-Z“: CLS : PRINT : GOTO 40’ © R. Wolters, 15.3.1982
1 GOTO 80’
40 PRINT „dies ist ein Programm zur iterativen Suche der Nullstellen“
50 PRINT „von Gleichungen des Typs y = f(x).“: PRINT : PRINT
60 PRINT „nach Eingabe der Gleichung wird das Programm“
65 PRINT „mit dem Befehl goto 1 gestartet.“: PRINT : PRINT
70 PRINT „Eingabe der Gleichung erfolgt mit neuer Zeile 111“
75 PRINT „tippen Sie dreimal die Eins und tippen dann y = …usw.“
76 PRINT „danach goto 1 eingeben.“: END
80 INPUT "Anfangswert von x? ";An
90 INPUT „Endwert von x? „;En
95 INPUT „Schrittweite? „;Ursw:Sw=Ursw
100 N=0: PRINT : PRINT „Lösung:“: REM Zähler auf 0 w.g. Start mit GOTO 1
105 X=An
110 Q=Y
111 Y=X^4-6*X^3-87*X^2+600*X-900: REM hier nur Beispiel (Kiste mit Brett)
120 IF Y=Q THEN GOTO 300
125 IF ABS(Y)En THEN GOTO 300
150 GOTO 110
200 IF ABS(Y)En THEN END ELSE GOSUB 400:X=X+.1:Sw=Ursw: GOTO 110
301 END
400 N=N+1
410 X$=“ x“+ MID$( STR$(N),2)
420 PRINT X$;“ =“;X
430 IF N=1 THEN X1=X
440 IF N=2 THEN X2=X
450 IF N=3 THEN X3=X
460 IF N=4 THEN X4=X
490 RETURN
Aaaalsoooo: Die Nullstellensuche entspringt ja im Allgemeinen einem Problem. Für die obige Gleichung in Zeile 111 war das Problem: An einem rechten Winkel liegt mit einer Ecke im Scheitelpunkt ein Rechteck an. Länge (also x) gleich 3, Höhe (also y) =2. (Das soll eine 3 m lange und 2 m hohe Kiste an einer Wand sein) Nun soll eine Gerade mit der Länge 10 (also ein Brett mit 10 m Länge) so an y (=Wand) und an x (=Boden) anliegen, dass die Gerade so eben das Rechteck (das Brett so eben die Kiste) berührt. Gesucht sind nun die Berührungspunkte des Brettes bei y und bei x. Und weil das sowohl bei steilem als auch bei flachem Brett funktioniert, gibt es mindestens zwei Lösungen. Beide Lösungen für x müssen aber zwischen 0 und 10 m liegen!!! Da die Lösung des Problems aber zu einer Gleichung 4. Grades führt, sind also auch im negativen Bereich Lösungen möglich. Aber auch die können nur zwischen -10 und 0 liegen!
Damit ist der Gesamtbereich für alle möglichen Werte zuverlässig eingekreist. In Zeile 80 wird der Anfangwert abgefragt, also -10. Der Endwert (+10) in Zeile 90 wird nur abgefragt, damit der Rechner nicht ins Nirvana läuft.
Jetzt kommt das Wichtigste: Die Schrittweite für die Iteration wird in Zeile 95 abgefragt. Früher waren die Rechner ja noch langsam. Der, an dem ich dieses Programm geschrieben hab, hatte noch einen fest drangebauten Monitor im Blechgehäuse, 32 kB RAM fest verdrahtet! Also musste die Schrittweite so gewählt werden, dass der Programmlauf einerseits nicht zu lange dauerte (also möglichst groß), andererseits aber klein genug, damit nicht zwei eng hintereinander liegende Nulldurchgänge übersprungen wurden. Für das Problem Kiste mit Brett war eine Schrittweite von 1 praktikabel.
Mit dem Anfangswert war der erste Wert (in 105) für x festgelegt. In Zeile 111 wurde nun y mit diesem x berechnet. Dann kommen drei Abfragen deren wichtigste und alles entscheidende in Zeile 130 ist. Beim ersten Rechendurchgang ist Q noch 0. Damit ist die Abfragebedingung IF Q*Y
Hi nochmal Pat,
hast schon Recht - für viele Probleme wird die Rechengeschwindigkeit und wahrscheinlich auch die Genauigkeit reichen. Für diese Probleme ist dieses Programm ein ganz nützliches Tool. Aber sobald die zu berechnende Funktion etwas komplizierter und die geforderte Genauigkeit etwas höher wird, dann wird man mit dieser Methode entweder gigantische Rechenleistungen verschlingen oder das Problem wird sogar mit dieser Methode völlig unlösbar.
Ausserdem muss man im Vorfeld schon sehr viel von der zu berechnenden Funktion wissen, damit man dem Programm Parameter angeben kann, die zu einer befriedigenden Lösung führen. Zum Beispiel muss man den Bereich, in dem eine Nullstellen liegen wird zumindest in eine Richtung ( oben oder unten ) abgrenzen können. In dem Fall, den Du jetzt als Beispiel angegeben hast, ist zum Beispiel auch möglich solche Parameter mit geringem Aufwand zu bestimmen. Allerdings könnte man auch das ganze Problem ohne weiteres exakt analytisch „per Hand“ lösen.
Aber im Allgemeinen kann man davon ausgehen, daß mathematische Funktionen, für die man Nullstellen mit dem Rechner numerisch bestimmen will, deswegen mit dem Rechner numerisch berechnet werden sollen, weil es sich um Funktionen handelt, welche analytisch gar nicht lösbar sind. Aber jetzt stell dir doch mal folgende Funktion vor :
f(x) = 26.54*x7-12.22*x4+2.789*x3-0.011*x2+19.89*x+27.2
Wohlgemerkt : Das ist immer noch ein (relativ) einfaches Polynom - allerdings 7ter Ordnung. Aber in der Rangfolge von Funktionen, die man theoretisch zu lösen haben könnte immer noch eine ganz einfache. Keine trigonometrischen Funktionen, keine gebrochenrationale Funktion, keine ungeraden Exponenten.
Trotzdem hat man schon hier das Problem, dass man mit dem verwendeten Algorithmus keine socheren Lösungen erhalten kann, und auch nicht weiß, ob man - wenn man zufällig doch Lösungen bekommt - alle Lösungen hat, und inwiefern diese Lösungen richtig sind.
Denn :
Woher weiß ich jetzt, wieviele Nullstellen dieses Polynom hat ?
Wie nah liegen diese Nullstellen vielleicht beieinander ? Wenn ich das nicht weiß, dann kann ich auch keine maximale Schrittweite für die Suche nach ihnen angeben.
Annahme :
Eine Nullstelle liegt bei x1=2.01, eine andere bei x2=2.03, eine weitere bei x3=2.06
Die Funktion verlaufe unter x=2.01 im positiven Bereich, zwischen 2.01 und 2.03 im negativen, zwischen 2.03 und 2.06 im positiven und oberhalb von x=2.06 wieder im negativen Bereich.
Ich weiß nicht, wieviele Nullstellen die Funktion hat und nicht wie nah sie beeinander liegen. Also stelle ich mal ein : Suche ab 3 abwärts mit einer Schrittweite von 0.1, weil so genau will ich die Orte der Nullstellen wissen. Das Programm sucht und findet :
x=3.0 -> negativ
x=2.9 -> negativ
.
.
.
x=2.1 -> negativ
x=2.0 -> positiv
Aha ! Also sagt mir das Programm :
Es gibt eine Nullstelle zwischen 2.0 und 2.1 !
Das ist aber völlig verkehrt, denn es gibt 3 Nullstellen.
Anderes Beispiel :
f sei positiv für x positiv
x=2.0 -> positiv
.
.
.
x=2.1 -> positiv
x=2.0 -> positiv
…
x=0.0
…
Der Algorithmus wird keine einzige Nullstelle finden, obwohl die Funktion davon zwei Stück hat !
Noch kritischer ist es, wenn die Funktion nur für einen Punkt Null wird. Zum Beispiel f(x)=x2.
Diese Funktion wird niemals einen Vorzeichenwechsel haben, so daß der Algorithmus niemals eine Nullstelle finden kann. Trotzdem hat diese Funktion offensichtlich eine Nullstelle bei x=0 ! Und dieses gilt für sämtliche Funktionen, welche die x-Achse nur berühren statt sie zu schneiden…
Noch viel mehr solcher Probleme könnte man schon bei einfachen Polynomen angeben und noch viel viel mehr bei komplizierteren Funktionen.
Deswegen gibt es auch diese Spezialdisziplin „Numerik“ in der Mathematik, welche sich mich solchen Schwierigkeiten auseinandersetzt. Denn wenn man „echte“ Probleme in der Technik durch solche Berechnungsverfahren lösen muß, kann man durch solche - in Grunde genommen gemeine - Stolperfallen in Teufels Küche kommen.
Deswegen war ich so erstaunt, daß dieser Algorithmus für alle denkbaren Funktionen Lösungen liefern können sollte.
Aber danke für die Mühe, daß Du das Programm gepostet hast. Vielleicht ist der Lösungsalgorithmus für den ursprünglichen Fragensteller und die Berechnungen, die er damit anstellen will ja auch völlig genügend.
Gruss,
Jürgen
Bibliothekarischer Ansatz: Numerical Recipies
Hi,
leider habe ich Mathcad nicht zur Verfügung (ich arbeite mit Mathematica und MATLAB), die genaue Recherche musst du selber machen: In der Dokumentation von Mathcad sollte beschrieben sein, welcher Algorithmus für „root“ verwendet wird, zusammmen mit der passenden Literaturfundstelle. Die Doku sollte eigentlich in der Uni- bzw. Institutsbibliothek zu finden sein.
Sobald du die Literaturfundstelle hast, kannst du dir den Algorithmus über die Unibibliothelk beschaffen.
Evtl. reicht für Deine Problemstellung auch schon ein Blick in die „Numerical recipies“ (http://www.nr.com/ , die Printausgabe steht in so ziemlich jeder mathematisch-naturwissenschaftlichen Institutsbibliothek)
Die Onlineausgabe findest du bei:
http://www.ulib.org/webRoot/Books/Numerical_Recipes/ (Beachte bitte: Permitted Use of Numerical Recipes Books On-Line).
Kapitel 9: „Root finding“ (z.B. http://www.ulib.org/webRoot/Books/Numerical_Recipes/…) sollte Dir weiterhelfen.
Ein kleiner Tipp aus leidvoller Erfahrung: Achte beim Einsatz eines numerischen Verfahrens darauf, dass es für Dein Problem überhaupt geeignet ist. Die grosse Tücke der Numerik ist die, dass Du fast immer eine Lösung bekommst, du aber oft nicht weisst, ob die Lösung korrekt und vollständig ist.
Viel Erfolg
Rossi
Hi nochmal Jürgen,
für Dich als Mathematiker ist die Methode vom Typ „Brechstange“ sicher sowas wie Gotteslästerung! Kann ich verstehen! Aber…
Aber sobald die zu berechnende Funktion etwas
komplizierter und die geforderte Genauigkeit etwas höher wird,
dann wird man mit dieser Methode entweder gigantische
Rechenleistungen verschlingen oder das Problem wird sogar mit
dieser Methode völlig unlösbar.
Keineswegs!!!
Ausserdem muss man im Vorfeld schon sehr viel von der zu
berechnenden Funktion wissen, damit man dem Programm Parameter
angeben kann, die zu einer befriedigenden Lösung führen.
Wer sich mit der Lösung solcher Gleichungen beschäftigt, wird wissen, was er tut!
Zum
Beispiel muss man den Bereich, in dem eine Nullstellen liegen
wird zumindest in eine Richtung ( oben oder unten ) abgrenzen
können. In dem Fall, den Du jetzt als Beispiel angegeben hast,
ist zum Beispiel auch möglich solche Parameter mit geringem
Aufwand zu bestimmen. Allerdings könnte man auch das ganze
Problem ohne weiteres exakt analytisch „per Hand“ lösen.
Wird nicht bestritten, ist aber nicht gerade einfach!
Aber im Allgemeinen kann man davon ausgehen, daß mathematische
Funktionen, für die man Nullstellen mit dem Rechner numerisch
bestimmen will, deswegen mit dem Rechner numerisch berechnet
werden sollen, weil es sich um Funktionen handelt, welche
analytisch gar nicht lösbar sind.
Eben!!!
f(x) =
26.54*x7-12.22*x4+2.789*x3-0.011*x2+19.89*x+27.2Wohlgemerkt : Das ist immer noch ein (relativ) einfaches
Polynom - allerdings 7ter Ordnung.
Mit erstaunlicherweise nur einer Nullstelle bei x=-0,79178936
(Dafür hab ich meinen alten ATARI im Keller aus der Kiste gekramt und angeworfen. Der hat eine Taktfrquenz von 8 Mhz, heutige Rechner sind hundertfach schneller!)
Keine trigonometrischen Funktionen,
selbstverständlich auch trig. Funktionen!!!
keine gebrochenrationale Funktion, keine ungeraden Exponenten.
oh doch! Alles, was per x hoch irgendwas berechenbar ist! Der Exponent dürfte auch Wurzel(2) heißen, nur nicht z. B. (1/y).
Trotzdem hat man schon hier das Problem, dass man mit dem
verwendeten Algorithmus keine sicheren Lösungen erhalten kann,
und auch nicht weiß, ob man - wenn man zufällig doch Lösungen
bekommt - alle Lösungen hat, und inwiefern diese Lösungen
richtig sind.
Denn :
Woher weiß ich jetzt, wieviele Nullstellen dieses Polynom hat
?
Alles ne Frage der Genauigkeit der Rechners mit seinem Betriebssystem.
Das Einzige, was mit diesem Programm NICHT geht, es findet keine IMAGINÄREN Lösungen!
Noch kritischer ist es, wenn die Funktion nur für einen Punkt
Null wird. Zum Beispiel f(x)=x2.
Diese Funktion wird niemals einen Vorzeichenwechsel haben, so
daß der Algorithmus niemals eine Nullstelle finden kann.
Trotzdem hat diese Funktion offensichtlich eine Nullstelle bei
x=0 ! Und dieses gilt für sämtliche Funktionen, welche die
x-Achse nur berühren statt sie zu schneiden…
Auch kein Problem: Der Gleichung kann problemlos ein zusätzliches Glied, nennen wir es +zg, angehängt werden. Im ersten Durchlauf ist zg=0, im zweiten ist zg=1 und im dritten ist zg= -1. Spätestens jetzt sehe ich an der Anzahl der Lösungen, ob eine Nullberührung vorliegt.
Deswegen gibt es auch diese Spezialdisziplin „Numerik“ in der
Mathematik, welche sich mich solchen Schwierigkeiten
auseinandersetzt.
die will ich Dir nicht nehmen!!!
Denn wenn man „echte“ Probleme in der
Technik durch solche Berechnungsverfahren lösen muß, kann man
durch solche - in Grunde genommen gemeine - Stolperfallen in
Teufels Küche kommen.
aufpassen muss man immer!!!
Gruß
Pat
Nichts gegen die Brechstange, nur sollte man wissen, dass diese sehr schnell versagt. Und doppelte Genauigkeit loest nicht alle Probleme.
entweder gigantische
Rechenleistungen verschlingen oder das Problem wird sogar mit
dieser Methode völlig unlösbar.Keineswegs!!!
Doch. Such mal nach Mersenne-Polynomen, das sind solche mit zwei Nullstellen sehr
dicht bei 0 und einer grossen. Die meisten Algorithmen finden nur die grosse. Oder expandiere (x-5/7)^50 numerisch und bestimme dann alle (auch die komplexen) Nullstellen.
f(x) =
26.54*x7-12.22*x4+2.789*x3-0.011*x2+19.89*x+27.2Wohlgemerkt : Das ist immer noch ein (relativ) einfaches
Polynom - allerdings 7ter Ordnung.Mit erstaunlicherweise nur einer Nullstelle bei x=-0,79178936
Bist Du Dir da ganz sicher? Sagt Dir der Name Sturm etwas? Oder Uspensky, von Vincent ganz zu schweigen?
Keine trigonometrischen Funktionen,
selbstverständlich auch trig. Funktionen!!!
Du weisst, wie trigonometrische Funktionen im Computer dargestellt werden? Du hast schonmal die Differenz von Sin(x) und seinem Taylorpolynom 4. Grades durch x^5 dividiert und dann dargestellt? Ist sehr ernuechternd.
keine gebrochenrationale Funktion, keine ungeraden Exponenten.
oh doch! Alles, was per x hoch irgendwas berechenbar ist! Der
Exponent dürfte auch Wurzel(2) heißen, nur nicht z. B. (1/y).
Das Maximum was der Koprozessor macht, ist all diesen Zauber durch stueckweise Polynome maximal vom Grad 10 zu approximieren, nix mit exakter Bestimmung von Nullstellen.
Alles ne Frage der Genauigkeit der Rechners mit seinem
Betriebssystem.
Das hat mit dem Betriebssystem nichts zu tun, eher mit der Bibliothek zum Rechnen in beliebiger Genauigkeit. Und die Urspruengliche Frage bleibt: Der Rechner liefert was. Du kannst es Ergebnis nennen. Aber was hat es mit dem urpruenglichen Problem zu tun? Wie vollstaendig ist es?
Das Einzige, was mit diesem Programm NICHT geht, es findet
keine IMAGINÄREN Lösungen!
Du meinst komplexe. Was ist mit Situationen, wo die Maschinengenauigkeit den Unterschied zwischen reell und sehr kleiner Imaginaerteil verwischt? Angenommen der kleine Imaginaerteil waere korrekt, wegen Rundungsfehlern findet Dein Programm aber einen reellen Punkt. Im Rahmen der Maschinengenauigkeit ist es unmoeglich zu entscheiden, dass dies keine reelle Nullstelle ist.
Noch kritischer ist es, wenn die Funktion nur für einen Punkt
Null wird. Zum Beispiel f(x)=x2.
Auch kein Problem: Der Gleichung kann problemlos ein
zusätzliches Glied, nennen wir es +zg, angehängt werden. Im
ersten Durchlauf ist zg=0, im zweiten ist zg=1 und im dritten
ist zg= -1. Spätestens jetzt sehe ich an der Anzahl der
Lösungen, ob eine Nullberührung vorliegt.
Ignorant! Wenn Du weisst, dass bei Null eine doppelte Nullstelle ist, dann brauchst Du diese nicht mehr auszurechnen. Ansonsten s.o.
Denn wenn man „echte“ Probleme in der
Technik durch solche Berechnungsverfahren lösen muß, kann man
durch solche - in Grunde genommen gemeine - Stolperfallen in
Teufels Küche kommen.aufpassen muss man immer!!!
Warum tust Du es dann nicht?
Ciao Lutz
PS: google nach „citeseer Victor Pan“ fragen. Die neuesten Techniken zum Finden aller Nullstellen eines Polynoms.
Hi Lutz,
und bestimme
dann alle (auch die komplexen) Nullstellen.
In der Überschrift steht, dass imaginär nicht geht!!!
f(x) =
26.54*x7-12.22*x4+2.789*x3-0.011*x2+19.89*x+27.2Wohlgemerkt : Das ist immer noch ein (relativ) einfaches
Polynom - allerdings 7ter Ordnung.Mit erstaunlicherweise nur einer Nullstelle bei x=-0,79178936
Bist Du Dir da ganz sicher? Sagt Dir der Name Sturm etwas? Oder Uspensky, von Vincent ganz zu schweigen?
Wen willst Du denn damit beeindrucken??? Nenn mir doch einfach eine weitere Nullstelle ohne imaginären Anteil und ich werde Dich lobpreisen!!
Keine trigonometrischen Funktionen,
:
selbstverständlich auch trig. Funktionen!!!
Du weisst, wie trigonometrische Funktionen im Computer dargestellt werden? Du hast schonmal die Differenz von Sin(x) und seinem
Taylorpolynom 4. Grades durch x^5 dividiert und dann dargestellt? Ist sehr ernuechternd.
:
Hoffentlich verwechselst Du hier nicht PC mit Computer!
keine gebrochenrationale Funktion, keine ungeraden Exponenten.
:
oh doch! Alles, was per x hoch irgendwas berechenbar ist! Der
Exponent dürfte auch Wurzel(2) heißen, nur nicht z. B. (1/y).
Das Maximum was der Koprozessor macht, ist all diesen Zauber durch stueckweise Polynome maximal vom Grad 10 zu
approximieren, nix mit exakter Bestimmung von Nullstellen.
:
Da haben wir´s: KOPROZESSOR!!! Ein heutiger Prozessor für einen PC wird für Multi Media Anwendungen konzipiert! Musik laden, Videos schneiden, Internet. Damit der dann auch noch für „den Notfall“ rechnen kann, kriegt er einen Ko-Prozessor verpasst. Diese Politik verfolgt Micro$oft schon seit ca. 20 Jahren, besser geworden ist es dadurch nicht, die Masse macht´s halt! Wenn ich Rechner oder Computer sage, meine ich einen, mit dem man mathematische Probleme lösen kann, ich meine dann keinen PC!
Vor knapp 20 Jahren hatte Motorola den 68000er Prozessor entwickelt, der dann 3 Jahre rumlag, weil erst niemand was damit anzufangen wusste. Dann schließlich entdeckten zwei Männer die Fähigkeiten dieses Prozessors und gingen gleich ans Werk. Der eine hieß Steve Jobs und der andere Jack Tramiel. Beide entwickelten verschiedene Betriebssysteme für den Prozessor. Der eine baute Computer um den Prozessor und klebte als Logo einen angebissenen Apfel drauf und der andere half der damals dahinsiechenden Firma ATARI wieder auf die Beine.
Etwas später gab´s dann für den ATARI Omikron-BASIC. Dieses Basic war ganz speziell auf das TOS (Tramiel OS) und den Prozessor abgestimmt, die drei bildeten eine geschlossene Einheit. Die Genauigkeit lag bei 19 Stellen! Das ist für Brechstangen völlig ausreichend!!!
:
Alles ne Frage der Genauigkeit der Rechners mit seinem
Betriebssystem.
Das hat mit dem Betriebssystem nichts zu tun, eher mit der Bibliothek zum Rechnen in beliebiger Genauigkeit.
Das hat ganz viel damit zu tun!!! Tipp: Kümmer Dich mal um ältere Rechner und deren Betriebssysteme, die nicht von M$ waren.
Das Einzige, was mit diesem Programm NICHT geht, es findet
keine IMAGINÄREN Lösungen!
Du meinst komplexe.
Wenn ich imaginär sage, meine ich das auch, Du Naseweis! Damit Du das auch begreifst, hab ich extra langsam geschrieben. Hier noch eine Beschreibung: Wenn ich sage, dass ich keine Kartoffeln mag, mag ich selbstverständlich auch keinen Kartoffelsalat! Würde ich sagen, dass ich keinen Kartoffelsalat mag, könnte ich dennoch einen Heißhunger auf Bratkartoffeln haben. Hier steht das Wort Kartoffel für rein imaginär (die Gleichung x²+4=0 hat rein imaginäre Lösungen) und Kartoffelsalat steht für komplexe Zahlen. Wenn ich sage, dass er keine imaginären Lösungen finden kann, ist es logisch, dass er AUCH keine komplexen Lösungen finden kann, weil komplexe Zahlen einen imaginären Anteil enthalten. Jetzt alles klar?
aufpassen muss man immer!!!
Warum tust Du es dann nicht?
Ich pass schon auf, nur Du interpretierst das falsch, weil Du die anderen Rechner und deren Betriebssysteme nicht kennst. Mach Dich da ruhig mal schlau, das erweitert den Horizont.
Ciao Lutz
PS: google nach „citeseer Victor Pan“ fragen. Die neuesten Techniken zum Finden aller Nullstellen eines Polynoms.
Ist sicher freundlich und gut gemeint, aber ich bin weder Nullstellenjäger noch Genauigkeitsfanatiker. Für meine Probleme reicht die alte Brechstange völlig aus.
Gruß
Pat
Hi Pat,
vielleicht naechstes Mal doch ein paar Smileys einfuegen. Ich will doch keine Glaubenskriege anfangen. Nur bei Graden ueber 100 und wenn man wirklich alle reellen Nullstellen haben will, sollte man sich Gedanken machen…
Danke uebrigens fuer den Kurs antike:wink: Prozessoren und Betriebssysteme (TOS).
Und um meinen Standpunkt zu untermauern: Mignotte-Polynome sehen so aus
p(x)=(x-c)^d-2*(a*(x-c)-1)^2,
z.B. mit c=5/7, d=10, a=200 sollten drei reelle Nullstellen rauskommen, in reduzierter Genauigkeit haben diese aber einen kleinen Imaginaerteil.
Ciao Lutz
Und auch Motorola kocht nur mit Wasser, auch wenn man dies sicher besser machen kann, als Wintel.
Hi Lutz zum 2.,
antik gilt glaub ich auf Trödelmärkten alles über 60 Jahre, so genau weiß ichs aber nicht. Dazu würde aber der ZUSE Z3 passen, der seit ungefähr einem Jahr im Deutschen Museum in München steht.
Mitte der 60er Jahre gehörte er zur TU Berlin, sein Standort war aber eine (große) Wohnung am Ku´damm, Nähe Joachimsthaler, auf der Südseite. Jedenfalls hab ich in der Zeit auf diesem Rechner mit Hilfe der Programmiersprache ALGOL den NPSH-Wert für bestimmte Kreiselpumpen optimiert. Das Programm wurde mit 5-Kanal-Lochstreifen eingelesen, die Ausgabe erfolgte entweder als Druck (geschrieben auf Fernschreiber) oder als Lochstreifen, der dann über den Fernschreiber gelesen werden konnte.
Ein Betriebssystem im heutigen Sinne hatte er noch nicht, er hatte aber einen Compiler, der das Programm sofort maschinenlesbar machte und dann dem Rechner zuführte.
Höflich wie er war, schrieb er unter jede Berechnung seinen Namen - ZUSE Z3. In meinen alten Unterlagen hab ich noch welche gefunden.
Gruß
Pat
Hi Lutz zum 2.,
antik gilt glaub ich auf Trödelmärkten alles über 60 Jahre, so
genau weiß ichs aber nicht. Dazu würde aber der ZUSE Z3
passen, der seit ungefähr einem Jahr im Deutschen Museum in
München steht.
Siehe auch virtuell:
http://irb.cs.tu-berlin.de/~zuse/Konrad_Zuse/de/inde…
5-Kanal-Lochstreifen eingelesen, die Ausgabe erfolgte entweder
als Druck (geschrieben auf Fernschreiber) oder als
Hab ich leider nicht miterlebt, bzw. nur als kleiner Schuljunge am Buerorechner meiner Mutter. Dafuer den KC 1 mit Mikrotastern und Chaos-Betriebssystem. Als 8086-Klon natuerlich meilenweit von den Moeglichkeiten zeitgleicher Computer entfernt.
Ciao Lutz