WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Springen zwischen mehreren Nullstellen verhindern

 

jacques2303
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.09.2011, 13:22     Titel: Springen zwischen mehreren Nullstellen verhindern
  Antworten mit Zitat      
Hallo,

ich habe folgendes Problem:
ich habe eine transzendente Gleichung, die von zwei Variablen abhängt. Für ein festes Intervall der ersten Variable soll dabei die Nullstelle in Abhängigkeit der ersten Variable bestimmt werden, sodass beide Variablen eine Nullstelle der transzendenten Gleichung darstellen.
Ich habe nun für den Randwert der ersten Variable die dazugehörigen ersten fünf Nullstellen (zweite Variable) berechnet und ausgehend von denen die Bestimmung der Nullstellen (zweiten Variable) in Abhängigkeit des festen Intervalls interativ berechnet.
Die Plots geben theoretisch die richtigen Kurven aus, nur mein Problem ist, dass einige Nullstellen so nah beieinander liegen bzw. sich auf dem Intervall der ersten Variable schneiden, dass zwischen den Nullstellen gesprungen wird.
Wie kann man das verhindern bzw. was kann man machen, damit man fünf voneinander unabhängige Kurven erhält?

Viele Grüße, mathmath

plot.jpg
 Beschreibung:

Download
 Dateiname:  plot.jpg
 Dateigröße:  36 KB
 Heruntergeladen:  500 mal
Private Nachricht senden Benutzer-Profile anzeigen


jacques2303
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2011, 11:46     Titel:
  Antworten mit Zitat      
Hallo miteinander,
leider bin ich bei meinem Problem mit dem Plot von fünf voneinader unabhängigen Kurven nicht weiter gekommen. Confused
Hier mein Skript:

Code:

function plotzero

func = @(rho,nu) gama(rho,nu)./mu(nu).*c(rho).^2.*cos(c(rho).*r(rho,nu)) + cos(nu + 2.*rho) - 1./(mu(nu).*c(rho).^2);

options=optimset('TolX',1e-8,'MaxIter',400);

rhoVals = linspace(1/2*pi-0.001, 1/4*pi+0.001, 100);
nuVals=zeros(100,1);
fVals=zeros(100,1);

for nustart=[2.2 1.9 1.75 1.69 1.68];
for k=1:length(rhoVals)-1
    nuVals(1)=nustart;
        [nuVals(k+1), fVals(k+1)] = fzero(@(nuDummy) func(rhoVals(k), nuDummy), nustart, options);

end
plot(rhoVals,nuVals,'g');
hold on
end
 


Kann mir jemand sagen, wie ich das hinbekomme?

Viele Grüße, jacques2303

m_files.rar
 Beschreibung:

Download
 Dateiname:  m_files.rar
 Dateigröße:  533 Bytes
 Heruntergeladen:  461 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2011, 12:17     Titel:
  Antworten mit Zitat      
Hallo,

du könntest z.B. mit fminbnd das Minimum des Quadrats der Funktion suchen, und die Suche so auf ein Intervall einschränken.

Was den zweiten Kommentar angeht: bitte spezieller erklären, wo das Problem liegt, falls es sich um ein zusätzliches Problem handelt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jacques2303
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2011, 12:34     Titel:
  Antworten mit Zitat      
Hallo,
nein, der zweite Kommentar bezieht sich auf den ersten.
Mein Problem ist nach wie vor dadurch gegeben, dass ich nicht fünf voneinander unabhängige Kurven erhalte für Nullstellen nu in Abhängigkeit von rho von f(rho,nu).
Man sieht dem Plot an, dass an einigen Stellen von rho zwischen zwei oder drei Nullstellen von nu gesprungen wird, für rho in [1.4, 1.6] kann man die unabhängigen fünf Kurven erkennen.
Wie kann ich das in Verbindung mit dem fzero - Befehl verhindern?

Viele Grüße, jacques2303
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2011, 12:44     Titel:
  Antworten mit Zitat      
Hallo,

bei fzero nur durch Angabe geeigneter Startwerte.
Wenn du das Intervall eingrenzen willst, wäre wie gesagt FMINBND eine Alternative.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
jacques2303
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 23.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.11.2011, 13:11     Titel:
  Antworten mit Zitat      
Hallo,
danke für den Tipp, nur leider erhalte ich mehr oder weniger dasselbe Problem wie beim fzero-Befehl. Bei der ersten Nullstelle gibt es kein Problem, sie wird als stetige Kurve geplottet.
Da die anderen vier Nullstellen aber für rho kleiner immer näher beieinander liegen und sich sogar überschneiden und da f eine unendliche Folge von Nullstellen hat, die sich bei nu->pi/2 häufen, gibt es scheinbar Probleme bei der numerischen Approximtion, sodass es dazu kommen kann, dass der Nullstellenzweig gewechselt wird.
Habt ihr noch andere Ideen oder ist die Aufgane mit Matlab nicht zu bewerkstelligen?

Viele Grüße, jacques2303
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.11.2011, 13:19     Titel:
  Antworten mit Zitat      
Hallo,

was die Genauigkeit angeht, kannst du TolX oder TolFun weiter heruntersetzen.

Ansonsten: du musst als Programmierer Vorgaben machen, welcher Startwert oder welches Intervall für die Nullstellensuche verwendet werden soll. Wenn du das nicht machen kannst, wird dir vermutlich auch eine andere Software nicht weiterhelfen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.