Bestimmung einer Funktion mit drei unabhängigen Variablen
blutiger Anfänger in Mat
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.10.2015, 08:46
Titel: Bestimmung einer Funktion mit drei unabhängigen Variablen
Hallo in die Runde,
an meiner Hochschule haben wir MatLab und ich kenne mich nicht sehr gut mit dem Programm aus. Bis jetzt konnte ich Funktionen mit einer oder zwei Variablen über den Befehl cftool oder sftool bestimmen. Aber jetzt habe ich drei Variable und komme überhaupt nicht weiter. Ich habe bereits gesehen, dass andere Teilnehmer vor mir auch schon das Problem hatten und auch, dass diesen geholfen werden konnte. Allerdings waren das dann Befehle und Codes von denen ich noch nichts gehört habe.
Deshalb meine Frage und auch Bitte, ob mir jemand das Vorgehen ausführlich erklären kann?!
Allerdings waren das dann Befehle und Codes von denen ich noch nichts gehört habe.
zu welchen dieser befehle hast du denn eine frage? was hat nicht geklappt? wenn du schon sachen gelesen hast wäre es ja hilfreich auch die links mit anzugebene das wir dir das selbe nicht noch einmal sagen
nachtrag:
guck dir mal das an:http://de.mathworks.com/help/matlab.....ing-via-optimization.html
bei dem beispiel wird ein curve fit mit fminsearch gemacht. indem versucht wird die quadratische abweichung zu minimieren. du kannst dir mal überlegen wie du das beispiel auf 2dimensionen erweiterst der schritt zu 3 dimensionen ist dann der gleiche.
_________________
Mit diesen Erklärungen kann ich leider nicht arbeiten, weil ich z.B. gar nicht weiß, wie ich Sonya´s 1. Kommentar lesen kann. Wie gesagt, bin ich leider ein richtiger Anfänger in MatLab.
Versucht habe ich deshalb auch noch nichts, weil mir die Ansätze fehlen.
blutiger Anfänger in Mat
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 08.10.2015, 10:02
Titel:
Hi Winkow,
ich habe mir deinen Link angeschaut und bin schon total überfordert, weil ich nicht weiß, welche Teile des vorgegebenen Befehls ich ersetzen soll und auch nicht mit was.
Ich kenne mich mit der Schreibweise der Befehle nicht gut aus.
Ich kenne mich mit der Schreibweise der Befehle nicht gut aus.
na dann ist das doch die ideale möglichkeit sich da mal reinzuarbeiten. ich würde das getting startet empfehlen. das ist für alle matlab anfänger wichtig. die dokumentation von matlab ist sehr gut und man kann sich das sehr gut alles selber bei bringen.
ändern musst du das hier:
je nachdem wie viele parameter dein modell beinhaltet. im beispiel sind es 2 darum werden 2 zufällige startpunkte gewählt (A und lamda);
und dann müssen noch diese zeilen angepasst werden:
Code:
A = params(1);
lambda = params(2);
FittedCurve = A .*exp(-lambda * xdata);
die ersten zwei zeilen dienen der übersichtlich keit. da müssen deine parameter hin je nachdem wie viele du hast.
und in der dritten zeile muss halt die funktion hin die du dir überlegt hast.
_________________
%Startwerte für das Lambda
start=[10];
options=optimset('TolX', 1e-12); %Abbruchkriterien einstellen
%Toleranz X - Tdx: 1e-12 %praktisch nie erreichbar -> kein Abbruch
%durch dieses Kriterium
estimated_lambda = fminsearch(@(lambda)fitten(lambda, x_orig1,x_orig2, y_orig),start,options)
%tf bilden und anzeigen in figure(2)
y_estimated= estimated_lambda(2)*x_orig1+estimated_lambda(2)*x_orig2
%Startwerte für das Lambda
start=[101];
options=optimset('TolX', 1e-12); %Abbruchkriterien einstellen
%Toleranz X - Tdx: 1e-12 %praktisch nie erreichbar -> kein Abbruch
%durch dieses Kriterium
estimated_lambda = fminsearch(@(lambda)fitten(lambda, x_orig1,x_orig2,x_orig3, y_orig),start,options)
%tf bilden und anzeigen in figure(2)
y_estimated= estimated_lambda(1)*x_orig1+estimated_lambda(2)*x_orig2+estimated_lambda(3)*x_orig3
function[ err ] = fitten( lambda, x_orig1,x_orig2,x_orig3, y_orig) % FITTEN Summary of this function goes here % ==========================================================================
a=lambda(1);
b=lambda(2);
c=lambda(3);
y=a.*x_orig1+b.*x_orig2+c.*x_orig3;
err=norm(y-y_orig);
figure(1);
plot3(x_orig1,x_orig2,x_orig3, y_orig,'-rs');
hold on;
plot3(x_orig1,x_orig2,x_orig3, y,'g--s');
grid on
hold off;
end end
wenn die funktion das zurück geben soll musst du es als rückgabe argument mit angeben. momentan giebt deine funktion nach dem aufruf nichts zurück
_________________
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.