der Befehl find() und roots() < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich bin neu hier und habe eine Frage bzgl. reele Nullstellen bei einem Polynom.
Ich bilde mit Hilfe von MATLAB Ableitungen eines Polynoms.
Von diesen möchte ich dann die Nullstellen bestimmten.
Dies mache ich mit Hilfe von roots().
Mit roots werden auch komplexe Nullstellen angezeigt, also sollche die gar keine echten Nulstellen sind.
Daher teste ich mit imag() darauf.
Das funktioniert alles noch.
Jetzt wird bei einer meiner Ableitungen 7 Nullstellen angezeigt. 4 davon komplex, die restliche 3 reel.
Mit Hilfe von find() möchte ich nun die Indexstelle zu der 3 verbliebenen ermitteln. Aber dabei kommt eine empty matrix als Ergebnis.
Ich habe aber bereits geschaut, der Wert der Nullstelle existiert innerhalb des gesuchten Vektors. Auch Veränderungen der letzten Ziffern ändern nichts daran das es eine empty-Matrix bleibt.
Meine Frage ist also wie ich dennoch diese Werte miteinander vergleichen kann um so auf eine Indeystelle zu kommen
Würde mich freuen, wenn sich zufällig jemand damit auskennt und sich meldet. Danke
Gruss Herzoglein
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:00 Di 22.05.2007 | Autor: | BKM |
Hallo.
Zu deiner Frage hier ein Tip bez. Hinweis. Ein Bsp. mit der Funktion find. Gesucht sind die Werte einer Matrix (!), die größer als 3 sind.
>>l = find(Af>3) (AF ist die Beispielmatrix). Wenn bei dir die Nullstellen in Matrixform orliegen, sollte find sie darstellen.
Beste Grüße.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:08 Di 22.05.2007 | Autor: | Herzoglein |
Hi,
danke. Ich weiss normal sollte find() die Werte finden.
find(NT == ns(5))
als Beispiel, so wie ich es mache. NT sind die Werte der x-Achse.
Aber so bekomme ich die empty matrix.
Wenn ich die Werte aber direkt schreibe
find(NT == 0.1122)
dann werden sie ohne problem gefunden. Ich möchte sie aber nicht per hand schreiben. Sie sollen schon automatisch gesucht und gefunden werden.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:36 Di 22.05.2007 | Autor: | BKM |
Hallo.
Wenn ich das richtig sehe, liegt es daran, dass Du ein == und nicht nur =benutzt!
Also nur ein Gleichheitszeichen, nicht zwei.
Beste Grüße.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 16:56 Di 22.05.2007 | Autor: | Herzoglein |
Hallo,
nein, leider nicht. Da wenn nur ein '=' steht gibt MATLAB einen Fehler aus :
'The expression to the left of the equals sign is not a valid target for an assignment.'
Daher kann es daran wohl auch nicht liegen.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 17:38 Di 22.05.2007 | Autor: | BKM |
Hallo.
Kannst Du die entsprechende Gleichung, also nur die, auf welche Du find anwendest mal hier reinstellen?
Beste Grüße.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 18:18 Di 22.05.2007 | Autor: | Herzoglein |
Ich habe den fehler gefunden.
Ich hatte matlab nicht auf long format gestellt. Daher habe ich nicht die kommplete Zahl angezeigt bekommen.
nach dem ich umgestellt habe, habe ich gesehen das die Zahlen doch nicht gleich waren. Daher die empty-matrix.
Ich habe dann mit roundn() auf 5 nachkommastellen gerundet dann ging es.
Danke das du danach geschaut hast.
|
|
|
|