|
|
Nullstellenberechnung mit komplexen Zahlen |
|
Nikolai |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2010, 16:12
Titel: Nullstellenberechnung mit komplexen Zahlen
|
 |
Hey,
ich habe folgendes Problem:
Ich möchte die Nullstelle einer Gleichung bestimmen.
Normalerweise würde sich hierbei die fzero-Funktion (Brent-Algo) anbieten, das Problem ist aber, dass komplexe Zahlen in meiner Gleichung vorkommen, womit die fzero-Funktion hinfällig wäre.
Hat jemand einen Vorschlag?
Beste Grüße,
Nikolai
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2010, 16:21
Titel:
|
 |
Hallo,
Eine Idee:
Verwendung von fsolve mit unbekanntem x = a + b*i (a, b reellwertig).
Zwei Gleichungen:
real(f(x)) = 0
imag(f(x)) = 0
Für genauere Informationen müsste man mal die Gleichung sehen.
Grüße,
Harald
|
|
|
Nikolai |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.01.2010, 21:30
Titel:
|
 |
Guten abend,
ich habe versucht deinen Ratschlag nachzuvollziehen und es könnte klappen. Ich habe eine Funktion Differenz(epsilon, k) geschrieben. Differenz ist lediglich von epsilon abh. und k spiegelt praktisch die k-te Differenz wieder.
Wie schaut dann die Funktion mit fsolve im Komplexen aus, so wie du sie vorgeschlagen hast. Bring das leider selbst nicht hin?
Merci,
Niko
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.01.2010, 21:43
Titel:
|
 |
Hallo,
was soll die k-te Differenz sein?
Idee: f(x) = 0 mit x, f komplexwertig
->
und dann
Grüße,
Harald
|
|
|
Nikolai |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 11:10
Titel:
|
 |
Moin,
mit k-te Differenz meine ich, dass ich n verschiedene Differenzen habe(also praktisch einen Vektor von Differenzen). Aber für den Anfang bleiben wir am besten bei einer Differenz.
Ich verstehe deine Funktion leider immernoch nicht ganz.
Ich versuchs mal zu interpretieren:
- x ist ein Vektor der Länge 2, also komplex.
- ReX ist das erste Element des Vektors, sprich der Realteil
- ImX ist das zweite Element des Vektors, sprich der Imaginärteil
- fx wird dann praktisch in Real- und Imaginärteil zerlegt
Hier verstehe ich nicht ganz, was f bedeutet, bzw. wo du das her nimmst.
Viele Grüße,
Niko
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 11:32
Titel:
|
 |
Hallo,
Zitat: |
mit k-te Differenz meine ich, dass ich n verschiedene Differenzen habe(also praktisch einen Vektor von Differenzen). Aber für den Anfang bleiben wir am besten bei einer Differenz. |
Mit anderen Worten: ein komplex-wertiges Gleichungssystem. Dann müsste man zu jeder Gleichung den von mir beschriebenen Prozess durchführen.
Zitat: |
Hier verstehe ich nicht ganz, was f bedeutet, bzw. wo du das her nimmst. |
Das ist die Gleichung, die du lösen möchtest: f(x) = 0.
Ein konkretes Beispiel:
Aufruf:
Grüße,
Harald
|
|
|
Nikolai |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 13:36
Titel:
|
 |
Hey,
danke für deine Hilfe.
Ich habs geschafft umzusetzen.
Die Ergebnisse lassen aber zu wünschen übrig.
Das Problem ist, dass einmal eine negative Wurzel vorkommt, deshalb die komplexen Zahlen. Rauskommen soll aber eine reele Zahl.
Am besten wird sein, die Wurzel mit einer Näherung zu berechnen.
Aber das ist ein rein mathematisches Problem.
Vielen Dank,
Niko
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 13:40
Titel:
|
 |
Hallo,
Zitat: |
Die Ergebnisse lassen aber zu wünschen übrig. |
Das liegt vermutlich daran, dass fsolve ein lokales Minimum sucht. Man braucht also einen halbwegs guten Startwert.
Zitat: |
Das Problem ist, dass einmal eine negative Wurzel vorkommt, deshalb die komplexen Zahlen. Rauskommen soll aber eine reele Zahl. |
Diese Logik kann ich leider nicht nachvollziehen. Was denn nun?
Am einfachsten wäre wahrscheinlich, wenn du mal die Gleichung zur Verfügung stellst, die du lösen möchtest, und dazu sagst, wie die Lösung aussehen soll.
Grüße,
Harald
|
|
|
Nikolai |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 15:14
Titel:
|
 |
Hey,
tut mir leid, da hab ich mich wohl etwas unverständlich ausgedrückt.
Also meine Gleichung schaut vereinfacht so aus:
int (N(x-epsilon)*c*exp(d*epsilon+sqrt(4*x)),x,-2, 100) = D
- N = kumulative Normalverteilung
- c, d sind Konstanten
- int steht für Integral mit Grenzen -2 und 100 (es wird nach x integriert)
- D ist gegeben
- epsilon ist gesucht und soll reel sein
-> und hier ist das Problem: sqrt(4*x) ist komplex zwischen -2 und 0
Damit ist mein eigentlicher Plan hinfällig.
Der war:
- numerisch integrieren
- fzero über int(...)-D
Nun ist es so, dass ich abschätzen kann was für epsilon rauskommen muss. Hab schon einiges ausprobiert.
- abs(int)
- dein Vorschlag
- sqrt(4*abs(x))
In diesem Fall gibt es keine exakte Lösung, vielmehr gilt es eine numerische Näherung zu finden.
Tut mir leid, wenn ich dich verwirrt habe. Bin eigentlich BWL und kein großer Programmierer.
Viele Grüße,
Niko
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2010, 15:45
Titel:
|
 |
Hallo,
sind c, d, D reell? > oder < 0? Hast du vielleicht Beispielwerte für c, d und D?
Grüße,
Harald
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|