Zum Inhalt springen

Nullstellen mit Bisektion finden?


Ocram7

Empfohlene Beiträge

Ich möchte die Nullstellen des folgenden Polynoms finden. Deshalb habe ich es mit 0 gleichgesetzt:

(5-x)*(25-x)-11*11 = 0

Diese Gleichung löse ich mit der Bisektion (Intervallhalbierung) als Näherungsverfahren. Leider bekomme ich nur eine Nullstelle (0.133). Die andere (29.866) finde ich damit leider nicht. Woran liegt das? Kann man die auch mit der Bisektion finden?

Danke im Voraus für eure Hilfe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, da hast du Recht. Diese Gleichung könnte man auch einfacher lösen. Aber ich möchte eine Methode haben, mit der ich jede Gleichung lösen kann, also z.B. auch:

(20-x)*(-1)^(1+1)*+(10-x)*(-1)^(1+1)*(0-x)*(0-x)-0*0+0*(-1)^(1+2)*0*(0-x)-0*0+0*(-1)^(1+3)*0*0-0*(0-x)+14*(-1)^(1+2)*+14*(-1)^(1+1)*(0-x)*(0-x)-0*0+0*(-1)^(1+2)*0*(0-x)-0*0+0*(-1)^(1+3)*0*0-0*(0-x)+0*(-1)^(1+3)*+14*(-1)^(1+1)*0*(0-x)-0*0+(10-x)*(-1)^(1+2)*0*(0-x)-0*0+0*(-1)^(1+3)*0+0*(-1)^(1+4)*+14*(-1)^(1+1)*0*0-0*(0-x)+(10-x)*(-1)^(1+2)*0*0-0*(0-x)+0*(-1)^(1+3)*0 = 0

Dafür wäre die Bisektion oder ein anders Näherungsverfahren perfekt. Leider finde ich mit der Bisektion auch bei der Gleichung oben nur eine Nullstelle. Deshalb suche ich eine Lösung für das Problem bei der Bisektion ...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich empfehle Dir allgemeines Lösungsverfahren, die "Nullstellensuche nach Laguerre". Den Code findest Du in den Numerical Recipes. Er findet "fast" alle komplexen Nullstellen bei beliebigen Startwert und wird z.B. in der Computergraphik eingesetzt um Schnittflächen von komplexen Körpern zu berechnen

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

hi,

lass uns mal systematisch vorgehen:

Aus einer rationalen Gleichung n-ter Ordnung sollen die n Nullstellen bestimmt werden, d.h.

a(n)*x^n+a(n+1)*x^n-1+...+n=0

soll in eine Form

(x-x(n))*(-x(n-1)*...(x-x(0))=0

überführt werden, wobei x(n) die Nullstellen darstellt.

Es gäbe also n-1 Intervalle in denen die Funktion die x-Achse überschreitet, und bei denen die Werte an den Intervallgrenzen unterschiedliche Vorzeichen haben. Innerhalb dieser Intervalle kann die Funktion steigend oder fallend sein.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dafür wäre die Bisektion oder ein anders Näherungsverfahren perfekt. Leider finde ich mit der Bisektion auch bei der Gleichung oben nur eine Nullstelle. Deshalb suche ich eine Lösung für das Problem bei der Bisektion ...

Die Bisektion funktioniert nur, wenn Du Dein Problem in 2 gleiche Teilprobleme zerlegen kannst und wie willst Du das machen? Du könntest das Verfahren nur dazu verwenden um gut eine Startposition für ein Näherungsverfahren z.B. Newtonverfahren oder einfacher über die Definition des Mittelwertsatzes zu erhalten. Generell wird es aber nicht möglich sein, für "jede Gleichung" zu erhalten, denn nicht jede mathematische Funktion hat Nullstellen. Soll "jede Gleichung" bei Dir "jedes reelle / komplexe Polynom" sein?

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

@AndiE: Der höchste Exponent in der Gleichung gibt also an, wie viele Nullstellen es gibt?

@flashpixx: Ich meinte, man kann damit für alle Gleichungen, die auch Nullstellen haben, diese Nullstellen finden. Also: Dem Verfahren "entgeht" praktisch keine Nullstelle. Aber das stimmt wohl auch nicht, oder? Du meinst also, die Bisektion ist kein geeignetes Verfahren für das Finden von Nullstellen? Welches Verfahren wäre denn besser?

Link zu diesem Kommentar
Auf anderen Seiten teilen

@AndiE: Der höchste Exponent in der Gleichung gibt also an, wie viele Nullstellen es gibt?

umgangssprachlich: ja

siehe dazu den "Fundermentalsatz der Alegbra" Fundamentalsatz der Algebra ? Wikipedia

@flashpixx: Ich meinte, man kann damit für alle Gleichungen, die auch Nullstellen haben, diese Nullstellen finden. Also: Dem Verfahren "entgeht" praktisch keine Nullstelle.

Welchem Verfahren? Wenn Du das Verfahren von Laguerre meinst wird dieses Verfahren die komplexen Nullstellen liefern: SpringerLink - Journal Article

Aber das stimmt wohl auch nicht, oder? Du meinst also, die Bisektion ist kein geeignetes Verfahren für das Finden von Nullstellen? Welches Verfahren wäre denn besser?

Die Biselektion ist erstmal eine Intervallschachtelung, mehr nicht (Bisektion ? Wikipedia). Du kannst mit Hilfe des Zwischenwertsatzes Zwischenwertsatz ? Wikipedia und der Bisektion Deine Nullstellen iterativ bestimmen. Aber wie genannt es gibt bessere Verfahren.

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

OK, danke für die Hinweise!

Ich habe aber noch eine neue Idee, wie man mehrere Nullstellen mit der Bisektion finden könnte:

Man hat z.B. die folgende Gleichung: (x-1)^2-1=0

Die Nullstellen, die man sucht, sind 0 und 2.

Als erstes findet man mit der Bisektion die 2. Damit man die 0 auch noch findet, ändert man die Gleichung. Man teilt die eigentliche Funktion durch (x-NULLSTELLE):

((x-1)^2-1) / (x-2)=0

Da man nicht durch 0 teilen darf, kann hier 2 nicht mehr als Nullstelle rauskommen. Also findet man automatisch die 0.

Geht das so? Meint ihr, das wird funktionieren?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mein Algorithmus mit dem Rest der Testdatei:


<?php
function in_gleichung_einsetzen($gleichung, $wert) {
$ersatzstring = '('.$wert.')';
$linke_seite = str_replace('x', $ersatzstring, $gleichung);
$berechnung_befehl = "\$rechte_seite = ".$linke_seite.";";
$rueckmeldung = eval($berechnung_befehl);
//if ($rueckmeldung == FALSE) { return FALSE; }
return $rechte_seite;
}
function gleichung_loesen($gleichung, $genaue_stellen=5) { // findet die Nullstellen
if ($gleichung[0] == '+') { $gleichung = substr($gleichung, 1); }
$nullstelle_in_intervall = FALSE;
$genauigkeit = pow(0.1, $genaue_stellen);
while ($nullstelle_in_intervall == FALSE) {
$intervall_a = -mt_rand(1, 50);
$intervall_b = mt_rand(1, 50);
$temp1 = in_gleichung_einsetzen($gleichung, $intervall_a);
$temp2 = in_gleichung_einsetzen($gleichung, $intervall_;
if (($temp1*$temp2) < 0) { $nullstelle_in_intervall = TRUE; }
if (abs($temp1) < $genauigkeit) { return $intervall_a; }
if (abs($temp2) < $genauigkeit) { return $intervall_b; }
}
//echo $intervall_a.' | '.$intervall_b;
$rechte_seite = 100;
$gemachte_iterationsschritte = 0; // Abbruchbedingung, damit kein Timeout
while (abs($rechte_seite) > $genauigkeit && $gemachte_iterationsschritte < 50000) {
$intervall_c = ($intervall_a+$intervall_b)/2;
$rechte_seite = in_gleichung_einsetzen($gleichung, $intervall_c);
if ($rechte_seite !== FALSE) {
// INTERVALL ANPASSEN (c ERSETZT ELEMENT[a,b] MIT GLEICHEM VORZEICHEN) ANFANG
if ($rechte_seite > 0) {
$intervall_a = $intervall_c;
}
else {
$intervall_b = $intervall_c;
}
// INTERVALL ANPASSEN (c ERSETZT ELEMENT[a,b] MIT GLEICHEM VORZEICHEN) ENDE
}
else {
$intervall_a = -mt_rand(0, 200);
$intervall_b = mt_rand(0, 200);
}
$gemachte_iterationsschritte++;
}
if ($gemachte_iterationsschritte < 50000) {
$intervall_c = round($intervall_c, 3); // auf 3 Dezimalen runden
return $intervall_c;
}
else {
return FALSE;
}
}
$gleichung = 'pow((x-1),2)-1.5';
echo gleichung_loesen($gleichung);
?>
[/PHP]

Die Intervallgrenzen werden zufällig bestimmt, bis es dazwischen eine Nullstelle gibt. Dann wird die Iteration gestartet. Es wird auch am Anfang geprüft, ob die Grenzen selber vielleicht eine Nullstelle sind.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nun ist mir das Problem klar. Du holst dir zufällig eine Intervallschranke im negativen Bereich und eine im positiven Bereich. Das funktioniert bei großem p sicherlich(x^2+p*x+q), aber bei kleinem p sind die Werte beider Schranken positiv, wie in Phil's Beispiel.

Mein Vorschlag wäre, neben der Änderug des Verfahrens, die Änderung der Eingabe.

Das Programm muß linke Schranke, rechte Schranke, und Größe des Anfangsintervalles abfragen. Dann tastest du dich von der Anfangsschranke in Richtung Endschranke in Intervallschritten.Findet er keinen Vorzeichenwechsel, halbierst du den Intervall, und wiederholst das Ganze. Hast du ein Vorzeichenwechsel gefunden, kannst du mit der Iteration beginnen. Anschließend setzt du untere Schranke auf ermittelte Nullstelle und das ganze Spiel beginnt von vorn.

Du solltest Statusmeldungen einbauen, damit der Nutzer den Fortgang der Berechnungen erkennt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das von genannte Polynom hat keine reellen Nullstellen.

Somit sind mit dem Verfahren die komplexen Nullstellen nicht bestimmbar.

Deshalb noch einmal meine Frage: Warum setzt Du nicht ein anderes Verfahren ein?

Phil

OK, war wohl ein dummes Beispiel. Ich würde gerne das Newton-Verfahren einsetzen oder das Brent-Verfahren. Ich habe auch schon Hunderte Seiten darüber gelesen, aber ich verstehe die Verfahren nicht ganz. Ich wüsste jetzt nicht, wie ich in meinem Beispiel konkret mit den beiden Verfahren umgehen müsste. Beim Newton braucht man ja z.B. eine Ableitung, die ist schwer zu finden, wenn man eine generelle Lösung für alle Gleichungen sucht.

Newton-Verfahren

Brent-Verfahren ? Wikipedia

Nun ist mir das Problem klar. Du holst dir zufällig eine Intervallschranke im negativen Bereich und eine im positiven Bereich. Das funktioniert bei großem p sicherlich(x^2+p*x+q), aber bei kleinem p sind die Werte beider Schranken positiv, wie in Phil's Beispiel.

Mein Vorschlag wäre, neben der Änderug des Verfahrens, die Änderung der Eingabe.

Das Programm muß linke Schranke, rechte Schranke, und Größe des Anfangsintervalles abfragen. Dann tastest du dich von der Anfangsschranke in Richtung Endschranke in Intervallschritten.Findet er keinen Vorzeichenwechsel, halbierst du den Intervall, und wiederholst das Ganze. Hast du ein Vorzeichenwechsel gefunden, kannst du mit der Iteration beginnen. Anschließend setzt du untere Schranke auf ermittelte Nullstelle und das ganze Spiel beginnt von vorn.

Du solltest Statusmeldungen einbauen, damit der Nutzer den Fortgang der Berechnungen erkennt.

Super, danke für den Hinweis! Den kleinen Fehler hätte ich ja nie gefunden ... :) Ich werde es also so ändern: Die Funktion nimmt a = -1000 und sucht dann im Intervall 1 immer weiter einen b-Wert, für den das Produkt f(a)*f(B) < 0 wäre (d.h. es gibt Nullstellen dazwischen). Wenn bis +1000 kein geeigneter b-Wert gefunden wurde, geht es wieder bei a = -1000 los, dieses Mal im Intervall 0,5 usw. Der Tipp ist gut, werde ich so machen. Aber: Ich habe hier mal -1000 und +1000 genommen. Kann man das einfach so machen? Wenn ich 1000 nehme, kann es passieren, dass die Nullstelle bei 2000 liegt. Nehme ich aber z.B. 3000, dann ist der Aufwand viel höher, oder? Was wäre da am besten?

Mit dem von mir genannten Polynom "x^2-x+1", hängt sich der PHP Interpreter auf: "Fatal error: Maximum execution time of 30 seconds exceeded in ..." auf.

Warum nutzt Du nicht ein bekanntes Verfahren, was zu einer stabilen Lösung führt?

Phil

Siehe oberer Teil meiner Antwort. + Bisektion ist doch ein bekanntes Verfahren, oder? Newton würde ich gerne nutzen, hab aber ja oben schon geschreiben, warum ich es (noch) nicht tue.

####

Was sagt ihr denn zu der Idee, dass man immer durch eine gefundene Nullstelle teilt und dann so die nächste findet?

Beispiel:

Wir nehmen an, dass f(x) = 2x mehrere Nullstellen hätte, und zwar -5, 0 und 3.

1) 2x = 0 wird gesetzt.

2) Die Bisektion findet die Nullstelle -5.

3) Wir ändern die Funktion zu: (2x)/(x-(-5)) = 0

4) Nun kann -5 nicht mehr eingesetzt werden, da man nicht durch 0 teilen darf.

5) Der Algorithmus findet automatisch die nächste Nullstelle: 0 (und später 3).

Das müsste doch gehen, oder?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Matlab oder Maple sind Programme mit denen Du solche Gleichungen lösen kannst. Die Bibliotheken kann man auch extern Anbinden. Die Differentialrechnung folgt klaren Regeln, so dass Du durchaus die Ableitung bestimmen kannst.

Ich würde Dir dazu raten ggf externe Bibliotheken zu verwenden. Aber generell kann ich Dir nur sagen, ohne sehr viel Wissen im Bereich der Mathematik wird Deine Lösung immer Probleme machen

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das ist mir jetzt zu theoretisch:

a) Beschreibt die Gleichung die Lösung eines Sachverhaltes, dann kenne ich auch die Größenordnung der Lösung:

z.B. Wie lang müssen die Seiten des Rechtecks sein, in dem mit 20 m Zaun eine Fläche von 20 qm abgezäunt werden?

B) Kenne ich die Größenordnung der Ergebnise nicht, dann muß ich den Nutzer die f(x) mitteilen, damit der letztendlich entscheidet, ob er den Intervall verschiebt, die Stufung ändert oder in die Iteration geht. Dabei erscheinen mir max. 10 Stützstellen ausreichend.

e^-x wird theoretisch nie Null, trotzdem sagt man, dass dies bei 0,05 bis 0,01 als erfüllt glit( z.B. bei Kondensatoren in ET)

Link zu diesem Kommentar
Auf anderen Seiten teilen

a) Beschreibt die Gleichung die Lösung eines Sachverhaltes, dann kenne ich auch die Größenordnung der Lösung:

z.B. Wie lang müssen die Seiten des Rechtecks sein, in dem mit 20 m Zaun eine Fläche von 20 qm abgezäunt werden?

nicht jede Gleichung lässt sich so beschreiben. Die Gleichung "x^2-x+1" enthält komplexe Nullstellen, was wären dann nach Deiner Interpretation komplexe Nullstellen in der Realität?

B) Kenne ich die Größenordnung der Ergebnise nicht, dann muß ich den Nutzer die f(x) mitteilen, damit der letztendlich entscheidet, ob er den Intervall verschiebt, die Stufung ändert oder in die Iteration geht. Dabei erscheinen mir max. 10 Stützstellen ausreichend.

Nein, ich muss die Intervallgrenzen nicht kennen, um Nullstellen zu berechnen

e^-x wird theoretisch nie Null, trotzdem sagt man, dass dies bei 0,05 bis 0,01 als erfüllt glit( z.B. bei Kondensatoren in ET)

Der OP möchte eine Lösung für Polynome und nicht für Exponentialfunktionen.

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Danke, stimmt genau. Ich möchte Polynome lösen. Und mein Programm soll auch ohne Benutzereingaben zurecht kommen. Also muss es auch ohne Intervallgrenzen als Input auskommen. Die müsste es schon selbst finden.

Matlab könnte ich in PHP höchstens nutzen, indem ich PHP die Gleichung / Rechenanweisungen in eine Datei schreiben lasse, dann mit passthru() Matlab starte, Matlab die Ergebnisse in eine Datei schreibt und PHP diese wieder ausliest. Das wäre relativ kompliziert und langsam.

Meint ihr denn jetzt, dass diese Methode mit der Bisektion funktionieren würde?

Wir nehmen an, dass f(x) = 2x mehrere Nullstellen hätte, und zwar -5, 0 und 3.

1) 2x = 0 wird gesetzt.

2) Die Bisektion findet die Nullstelle -5.

3) Wir ändern die Funktion zu: (2x)/(x-(-5)) = 0

4) Nun kann -5 nicht mehr eingesetzt werden, da man nicht durch 0 teilen darf.

5) Der Algorithmus findet automatisch die nächste Nullstelle: 0 (und später 3).

Ansonsten käme wohl nur der Newton in Frage, und da habe ich ja noch keine Idee, wie das gehen könnte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Matlab könnte ich in PHP höchstens nutzen, indem ich PHP die Gleichung / Rechenanweisungen in eine Datei schreiben lasse, dann mit passthru() Matlab starte, Matlab die Ergebnisse in eine Datei schreibt und PHP diese wieder ausliest. Das wäre relativ kompliziert und langsam.

Nein, Du würdest die Libraries von Matlab direkt aufrufen. Dafür liefert Matlab einen Kompilier mit. Du könntest ggf Dir mal die GSL anschauen, eine C++ Library GSL - GNU Scientific Library - GNU Project - Free Software Foundation (FSF) (Matlab bzw Ocatve setzen darauf auf). In der GSL ist eine Routine enthalten um die Nullstellen von Polynomen zu bestimmen. Du musst entweder direkt aus PHP Zugriff auf die GSL nehmen, oder eben ein Wrapperprogramm stricken, das Du aus PHP aufrufst. Ich würde, wenn möglich, direkten Zugriff verwenden.

Meint ihr denn jetzt, dass diese Methode mit der Bisektion funktionieren würde?

Nein, denn Du gehst in Deiner Überlegung von reellen Nullstellen aus. Ein Polynom muss nicht zwingend reelle Nullstellen haben. Die Aussage des Fundamentalsatzes bezieht sich auf komplexe Nullstellen, da R eine Teilmenge von C ist, kann ich die reellen Nullstellen auch als komplexe (mit Imaginärteil 0) ausdrücken. Sobald Du mit komplexen Zahlen rechnest, wie würde dann Dein Algorithmus aussehen, denn Deine Startwerte wären dann eben Vektoren in 2D bzw Tupel.

Ansonsten käme wohl nur der Newton in Frage, und da habe ich ja noch keine Idee, wie das gehen könnte.

Newton hat durchaus die Angewohnheit numerisch durchaus Probleme zu machen, und auch hier wieder die Frage, wie sieht das bei komplexen Nullstellen aus? Aus Deinen ganzen Post gehst Du von einem Polynom aus, das ich als Kurve über der reellen Axe plotten kann. Da Du aber ein allgm. Verfahren haben willst, muss Deine Funktion nicht zwingend reell sein. Das Laguerre-Verfahren (welches auch konkret in vielen Raytracern implementiert ist), ist ein stabiles Verfahren.

Abschließend wäre hier wirklich der Ratschlag entweder den Code für das Verfahren in den Numerical Recipes (Kapitel 9.5) http://www.nrbook.com/ub30001/nr3-9-5.pdf nach zu lesen bzw auf die genannte Lib zu setzen

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

zu Phil's Frage. man kann eine Übertragungsfunktion als Polynom mit abbilden, indem man p=d/dt setzt.

Ein solches Polynom Ordnung bildet z.B. ein Masse-Feder-Dämpfer-System ab, was etwa Stoßdämpfern beim Auto entspricht. Eine negative Determinante D=p^2/4-q steht für en Anteil der Schwingungsanteile.

Ist sie groß, würde das Fahrzeug stark nachfedern.

Diesbezüglich gab es auch die Ortskurve, die entsteht, wenn p=jOmega gesetzt wird, wobei (klein)Omega für die Kreisfrequenz steht.

Das war auch mein erster größerer Kontakt mit dem komlexen Zahlenraum.

Funktionen, wo komplexe Zahlen eineindeutiges Abbilder komplexer Zahlen sind, und deren Lösung kann ich mir zur Zeit gar nicht vorstellen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie Du schreibst setzt Du das p als d/dt sprich nach der Zeit. Somit ist die Interpretation eben problemabhängig. Natürlich, wenn man (meist) physikalisches Problem hat, kann man die Interpretation der komplexen Zahl bzw deren Wert als Größe nehmen (Elektrotechnik (Widerstandsnetzwerke), Thermodynamik,...), aber eine allgm. Interpretation ist eben nicht möglich.

Da es dem OP ja darum geht eine Lösung für beliebiges Polynom zu finden und wir den Fundamentalsatz der Algebra als Idee hinterlegt haben, dann ist die Lösung / sind die Lösungen für ein Polynom komplex. Natürlich könnte man den Raum der Polynome weiter einschränken und nur Polynome mit einer reellen Lösung zulassen, aber da es ja hier mehr um den Algorithmus bzw Programmierung geht, würde ich auf die genannten Tools zurückgreifen und die mathematische Lösung als fertig gegeben nehmen

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Eine allerletzte Frage habe ich noch, ich möchte nur noch wissen, ob ich das jetzt alles richtig verstanden habe. Also:

Mit dem Newton-Verfahren kann man alle reellen Nullstellen finden. Wenn mir also die reellen Nullstellen reichen, ist der Newton dafür perfekt. Mit der Bisektion ist das etwas komplizierter, aber auch möglich. Wenn ich aber auch komplexe Nullstellen finden möchte, dann sollte ich besser externe Programme wie Matlab einbinden. Ist das alles richtig?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit dem Newton-Verfahren kann man alle reellen Nullstellen finden.

Nein. Sie die Konvergenzbetrachtung unter Newton-Verfahren ? Wikipedia

Das Newton-Verfahren ist ein so genanntes lokal konvergentes Verfahren. Konvergenz der in der Newton-Iteration erzeugten Folge zu einer Nullstelle ist also nur garantiert, wenn der Startwert, d. h. das 0-te Glied der Folge, schon „ausreichend nahe“ an der Nullstelle liegt. Ist der Startwert zu weit weg, kann alles passieren

Um Nullstellen zu iterativ zu finden, ist die Konvergenz des Näherungsverfahrens wichtig. Wenn Die Folge der iterativ berechneten Näherungswerte nicht konvergiert, dann wirst Du auch nie eine Nullstelle finden. Wenn Du das Newton Verfahren benutzen willst, musst Du für jede mögliche Nullstelle einen "guten" Startwert finden und dies ist durchaus problematisch.

Wenn ich aber auch komplexe Nullstellen finden möchte, dann sollte ich besser externe Programme wie Matlab einbinden. Ist das alles richtig?

Du solltest wohl generell auf externe Tools schauen, wenn Du die Mathematik nicht kannst / verstehst. Ich würde Dir raten, benutze die GSL und lass Dir von dieser die Nullstellen liefern. Wenn Du nur die reellen möchtest, dann Werte die gelieferten Nullstellen hinsichtlich komplexer Zahlen aus.

Ich kann Dir nur noch einmal den Hinweis geben, es macht wenig Sinn, so etwas selbst zu programmieren, wenn Dir das Wissen der mathematischen Zusammenhänge fehlt. Nutze einfach fertige Pakete, da haben sich schon genügend Leute mit auseinander gesetzt und eine recht gute Lösung gefunden

Phil

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...