Verfasst am: 14.06.2011, 00:12
Titel: Funktionsdefinition ist nicht erlaubt
N'Abend allerseits!
ich habe folgendes Problem: MATLAB lässt mich meine Funktionen nicht definieren. In den Zeilen 3 und 6 meines Listings definiere ich die Funktionen f0 und f1. Allerdings kommt immer die Meldung "?? Error: Function definitions are not permitted in this context." Immer, egal an welcher Stelle ich die Funktionen definiere. Woran liegt das?
function newton(x0)
x_n = x0;
n = 0; %start at n=0 with x_n = x0
found = 0;
while(found ==0 && n < 1000)% && means "and"
n = n + 1; % number of iterations
y_n = f0(x_n); % y(x) value of function at x-location x_n
y_1 = f1(x_n); % value of 1st derivation at x-location x_n
y_next = f0 (x_next); % y-value of x_next fprintf( 'x_n = %g, \t y_n = %g \n', x_next, y_next); % Writes data to Text file - fprintf(fileID, format, A, ...) % applies the format to all elements of array A and any additional array % arguments and writes a text file
% check if y_next is close enough at 0 if(abs(y_next) < eps) fprintf('\n root at x = %g \n', x_next );
fprintf('f(x) = %g, after %d Iterations \n', y_next, n);
found = 1;
end
Verfasst am: 14.06.2011, 01:33
Titel: Re: Funktionsdefinition ist nicht erlaubt
Hallo Onkel-Philipp,
Die Definition einer Funktion ist innerhalb eines Scripts oder im Command-Window nicht erlaubt.
Als Lösung muss man die Funktionen entweder als eigenständige M-Files erstellen oder die Gesamte Routine als Funktion statt als Script erstellen (also mit "function" starten und alle benötigten Variablen übergeben).
Was sollen diese Zeilen bewirken? Sie wandeln den String 'x' und den String 'x0' in DOUBLES um und schreiben das Ergebnis ins CommandWindow. Zudem bewirken sie, dass das File ein Script ist, da nicht 'function' am Anfang steht.
Ich vermute stark, dass das nicht Deine Absicht war.
Die Double-Deklarationen waren ein Versuch, die Fehlermeldungen zu den Funktionen weg zu kriegen.
Again what learnt ( Vielen Dank für deine Hilfe, Jan.
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.