Autor Beitrag
Ernald
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Sa 29.03.03 13:31 
Gibt es eine Funktion, die Ganzrationale Gleichungen n-ten grades Lösen kann. (Also Nullstellen aus z.B.: f(x)=x³+2x²-4x-2). Rückgabewert müssten mehrere x-Werte sein.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 29.03.03 14:04 
Hi!

Ich habe ein solchen Programm mal geschrieben. Es ist hier in der OpenSource-Sparte.

Leider habe ich keine Regel gefunden, wieviele Nullstellen eine solche Funktion mindestens hat. Daher muss immer noch ein Suchbereich angegeben werden, damit er sich nicht tot sucht.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Sa 29.03.03 14:18 
Ist eigentlich recht einfach, rauszukriegen, wieviele Nullstellen da sein müssen.
Du nimmst einfach die Variable mit dem höchsten Exponent (Hier x^3) und ziehst einen ab (x^3 abgeleitet 3x^2). Daraus ergibt sich, dass es 2 Lösungen geben wird. Es kann natürlich sein, dass es doppelte/dreifache Nullstellen sind, also dass Lösung 1 = 3 ist und Lösung 2 = 3 ist.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 29.03.03 14:44 
Zitat:
Du nimmst einfach die Variable mit dem höchsten Exponent (Hier x^3) und ziehst einen ab
Unsinn. Du nimmst den höchsten Exponenten. Ein Polynom n-ten Gerades besitzt höchsten n Nullstellen. Beispiel:
(x-1)*(x+1)*(x-2) hat drei Nullstellen, den höchsten Exponenten = 3.

Die Frage war aber nicht, wie ich die maximale Anzahl der Nullstellen erhalte (trivial), sondern die minimale Anzahl! Woher weiß das Programm, was eine doppelte oder dreifache Nullstelle ist?

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Sa 29.03.03 14:49 
Hey, genau den Unsinn meinte ich doch, scheint bloß falsch rübergekommen zu sein. :P
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 29.03.03 15:03 
Du hast doch aber geschrieben, dass es bei x^3 maximal zwei Nullstellen geben wird. Und das ist falsch. Oder habe ich Dich falsch verstanden?

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Alibi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: Sa 29.03.03 15:28 
Oh verdammt, da war ich in Gedanken bei Extremwerten, k, das war völliger Blödsinn...
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 29.03.03 15:38 
Wenn Dir trotzdem noch ein Verfahren bekannt ist, um die minimale Anzahl der Nullstellen zu finden ...

Ich dachte schon daran, ein rekursives Verfahren zu machen, dass ich von der (n-1)-ten Ableitung hochhangelt. Das würde aber ziemlich lange dauern und ich bin mir noch nicht sicher, ob das klappt.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
UGrohne
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: Sa 29.03.03 15:47 
Eine ganzrationale Funktion muss keine Nullstellen haben, es gibt keine Mindestanzahl von Nullstellen. Du könntest höchstens überprüfen, wohin die Funktion für +inf und -inf streben, wenns da nen Zeichenwechsel gibt, hat sie mindestens eine Nullstelle, aber mehr kann ich Dir im Moment auch nicht sagen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 29.03.03 16:37 
Zitat:
Eine ganzrationale Funktion muss keine Nullstellen haben, es gibt keine Mindestanzahl von Nullstellen.
Stimmt, generell nicht. Aber wir sind ja auf der Suche nach einem Verfahren, mit dem man die minimale Anzahl der Nullstellen bestimmen kann!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: So 30.03.03 00:05 
Peter Lustig hat folgendes geschrieben:
Zitat:
Eine ganzrationale Funktion muss keine Nullstellen haben, es gibt keine Mindestanzahl von Nullstellen.
Stimmt, generell nicht. Aber wir sind ja auf der Suche nach einem Verfahren, mit dem man die minimale Anzahl der Nullstellen bestimmen kann!

wieso sollte das denn nicht stimmen??
z.B. die Funktion y=0x+2 nur als Beispiel...

oder auch Funktionen die sich asymptotisch an einen Wert größer Null annähern und für x->unendlich gegen unendlich gehen...

also stimmt es doch, dass es keine Mindestanzahl von NS für ganzrationale Fkt. gibt
Ernald Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 30.03.03 00:08 
Titel: Danke erstmal
Danke Peter das du dir so eine Mühe für mich machst.

Also ich habe das Programm mal ruter geladen.

Wenn ich den Code mit Delphi aufrufe und im Testmodus laufen lasse funktioniert es nicht (findet) die Unit "Variants" nicht. Du hast bestimmt was höheres als Delphi 5 benutzt.

Die *.exe läuft. Es wird aber hinter "Nullstellen:" nichts angezeigt.
Ich habe folgendes angegeben: Potenz:2; Ordnung0:-1; Ordnung1:O; Ordnung2:1; Minimum:0; Maximum:2; Genauigkeit:0.0001 und 1 und 2 (was ist das eigentlich).

Ich bin auch etwas inkompetent um zu verstehen was die einzellnen Funktionen in "calc" machen. EIN Funktionsaufruf der die eizellnen Koefizienten der Gleichung entgegen nimmt währe schöner.

In der entkonsiquenz möchte ich das ganze Teil in ein eigenes Program einbauen.

Max und Min:
Eine Ganzrationale Funktion n-ten Grades hat maximal n Nullstellen und minimal keine Nullstellen.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.03.03 00:24 
@Fiji-Fighter: Du hast in meiner Aussage ein Komma übersehen!
@Ernald: den Fehler werde ich morgen suchen!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Raphael O.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1596


VS 2013
BeitragVerfasst: So 30.03.03 00:29 
Peter Lustig hat folgendes geschrieben:
@Fiji-Fighter: Du hast in meiner Aussage ein Komma übersehen!

da könntest du Recht haben ;)
:mrgreen: :oops: :roll:
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 30.03.03 14:35 
So, ich habe zwei Fehler entfernt. Einer im Programm und ein anderer in der DLL-Datei. Ein Fehler ist etwas peinlich, weil ich ein Array initialisiert habe, nachdem ich Werte dort hinein eingelesen habe. Das andere ist fast gar kein Fehler und hat was mit den Grenzen, in denen die Nullstellen gesucht werden sollen zu tun.

Solltest Du noch mehr Fehler finden, poste das doch bitte in dem entsprechenden Thread in der Open-Source-Abteilung.

Zitat:
Genauigkeit:0.0001 und 1 und 2 (was ist das eigentlich).
Das Programm arbeitet mit einem Näheurngsverfahren, da es für ab n=4 (oder war es 5?) kein allgemeines Lösungsverfahren mehr gibt. Dann sollte auch klar sein, was die Genauigkeit ist.
Mit "Minimum" und "Maximum" gibst Du an, in welchem Intervall nach Nullstellen gesucht werden soll. Das ist der Teil, den ich rausschmeissen könnte, wenn das Programm irgendwie rausfinden könnte, wieviele Nullstellen es finden muss. Dann könnte man es so machen, dass das Intervall so lange vergrößert wird, bis alle gefunden sind. Aber dafür habe ich bisher keine Lösung gefunden.

MfG,
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".