Verfasst am: 27.02.2018, 12:44
Titel: Verschiedene Werte trotz gleicher Formel
Hallo!
Ich habe seit Tagen folgendes Problem: Es existiert der Vektor Q = [q0,q1,...qN] bei dem sich qk+1 immer aus qk und uk+1 berechnet, wobei q0 und u gegeben sind. U wird gesucht, um die Bedingungen von fmincon zu erfüllen. Ich habe den Gradienten aufgestellt (JQ zu Q (jacobian)) aber Matlab sagt, der Gradient sei falsch. Also habe ich symbolische Werte aufgestellt, damit die jacobian berechnet (dauert ewig...) und verglichen. Nun meine Frage:
Am Anfang stimmt das Ergebnis bis auf eine Abweichung von etwa 10e-14 überein. Im nächsten Schritt der optimal control wird der Unterschied aber größer. Erst habe ich gedacht, es liegt am Gradienten, aber dann habe ich die Funktion Fd (für die Berechnung von qk+1) mit symbolischen und numerischen Werten verglichen und das Ergebnis weicht wieder ab.. kann doch nicht sein, wenn die Funktion genau die selbe ist!?
Q = zeros(12*Nu,par.N+1);
%Calculating Q = [q0,q1,...,qN] where q0 and vector U are given
Q(:,1) = q0;
arg_q0 = num2cell(q0);
arg_u = num2cell(U);
for k = 1:N
Q(:,k+1) = Fd(Q(:,k),U((k-1)*Nu+1:k*Nu),par);
end
lq = length(q0);
JQ = zeros((N+1)*lq,N*Nu);
JQ(1:lq,:) = zeros(lq,N*Nu);
for k = 1:N
j = 1;
qkm1 = Q(:,k);
uj = U((j-1)*Nu+1:j*Nu);
D1FD = D1Fd(qkm1,uj,par); %derivative d/dq
%--------------------------------------------------------------------
%symbolic part
syms_uj = syms_u((k-1)*Nu+1:k*Nu);
syms_qk = Fd(syms_qk,syms_uj,par);
F_Test1 = matlabFunction(syms_qk,'Vars',[syms_q0.' syms_u.']);
F_Test_erg = F_Test1(arg_q0{:},arg_u{:});
%Different to Q....although I used Fd both times?!
%--------------------------------------------------------------------
%non-symbolic part
while j < k
JQkm1 = JQ(((k-1)*lq)+1:((k-1)*lq)+lq,(j-1)*Nu+1:j*Nu);
JQ(k*lq+1:(k*lq)+lq,(j-1)*Nu+1:j*Nu) = D1FD * JQkm1;
j = j + 1;
end if k == j
JQ(k*lq+1:(k*lq)+lq,(j-1)*Nu+1:j*Nu) = D2Fd(qkm1,uj,par);
end end
in der Form kann zumindest ich nichts damit anfangen.
Hilfreich ist immer ein möglichst kleines, reproduzierbares Beispiel. Dein Beispiel ist dafür, dass es "nur" um unterschiedliche Ergebnisse zweier Berechnungen geht, recht lang und dennoch nicht reproduzierbar.
in dem Beispiel sind die Abweichungen im Bereich 1e-16. Das ist eine m.E. erwartbare Konsequenz davon, dass man mit einer endlichen Anzahl Stellen arbeitet. Sogar
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.