Verfasst am: 05.12.2015, 23:49
Titel: Hilfe benötigt zu non-linear fitting
Hallo zusammen,
ich sitze an meiner Masterarbeit und bin immer noch ein Noob in Matlab. Jede Hilfe ist erwünscht!
Ich suche mittels fzero-Funktion eine Zahlenvektor vola mit gegebenen V0, H, b, und Zahlenvektor mty und q. Einige von den habe ich aus einfachheitsgründen in Code reindefiniert.
Jedoch läuft das ganze nicht so richtig. Ich bekomme aus fzero einfach keinen Nullstelle für die Gleichung delta (unten). Ich bitte um Fehlersuche. Vermutung nach könnte ich jetzt 3 Fehlerarten vorstellen:
1. Vektorrechnung gescheitert. Ich weiß die Indizies hier sind schlampig gesetzt, z.b. der timediff ist ein [1*8] Vektor und vola ein [8*1].
2. quadrat auf Vola macht fzero schwach? Vielleicht soll ich ein lineare Variable die ersetzen?
3. Fehler in Schreibweise in fzero-Funktion
für den Anfang hilft es sehr, wenn du sagst, was "läuft nicht so richtig" bedeutet.
Bekommst du eine Fehlermeldung? Welche?
Ein unerwartetes Ergebnis? Inwiefern?
sorry für die verspätete Antwort. Weil ich selbst keiner Ahnung hatte, was schief ging. Anscheind liegt das ganze Problem an Startwertfestlegung. Der fzero.m habe ich immer noch nicht durchgeblickt, aber er fordert die Voraussetzung von Zwischenwertsatz, also dass an der Intervallgrenzen (volarange) eine negative UND eine positive Funktionswert existiert. Somit funktioniert die fzero nicht immer für meine Auswertungsfunktion delta...
Inzwischen habe ich das Problem aufgehoben. In dem ich entweder H groß, oder b klein wähle. Numerisch ist fzero halt instabil. Was könnte man anstatt fzero nehmen?
ein Vorzeichendifferenz. Als Fehlermeldung immer Vorzeichenfehler.
Zitat:
Anscheind liegt das ganze Problem an Startwertfestlegung.
Welches Problem?
Das Problem war, der fzero-Code lief bis o.g. Fehlermeldung und geht nicht in Nullstellesuche ein. Durch Startwertanpassung ist es nun möglich. Ich soll H über 50% von V0 wählen oder b unter 1 setzen.
Danke, werde ich beim nächsten Mal machen. Die Fehlermeldung hier hieß
"Error using ==> fzero at 283
The function values at the interval endpoints must differ in sign."
Weshalb ich zunächst keine Ahnung von Fehler hatte: ich habe die Anweisung try...catch dringelassen, die versichert für einen Output (nan...) in jeder Hinsicht .... Werde ich zunächst Finger davon lassen.
[EDITED, Jan, Bitte kein Top-Quoting der gesamten vorherigen Nachricht - Danke]
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
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.