Svezel wrote:Það eru verða 3ár síðan ég notaði Matlab síðast og ég er ekki með Matlab uppsett á neinni nothæfri vél í dag svo mín hjálp er nánast einskis virði.
En ef ég ætti að leysa þetta myndi ég byrja á að lesa um ode föllin til að leysa diffurjöfnur í Matlab og svo reyna að útfæra það á Riccatti í framhaldi.
http://www.mathworks.com/support/soluti ... on=1-1C6YSNotaðist við þetta og fékk:
function dX2dt = mRiccati2(t, X, A, B, C,g)
X = reshape(X, size(A));
dX2dt = A.'*X + 1/2*B.'*((C.'*X)*(C.'*X)) - g
dX2dt = dX2dt(:);
Smelli svo inn tölunum sem gefnar eru:
A = [-17.4 17.4 -9.309; 0 -0.226 0.879; 0 0 -0.362];
B = [0 0 1; 0 0 0; 0 0 0.00782];
C = [1 -3.42 4.27; -0.0943 1 0; 0 0 1];
g = [1;0;0];
X0 = zeros(size(A));
Og fæ:
>> [T X] = ode45(@mRiccati2,[0 30], X0, [], A,B,C,g)
??? Error using ==> minus
Matrix dimensions must agree.
en ef ég breyti aðeins og set g = 0 (scalar) þá fæ ég þetta til að virka en allar afleiður eru = 0 og X er alltaf 0...