Ich habe einen sehr komplizierten Satz von Differentialgleichungen mit mehreren zeitabhängigen Variablen. Ich habe eine Vereinfachung meines Codes online gefunden, es ist hier; Es ist in zwei Abschnitten. ErsteWie man einen sehr einfachen Controller zu einem Satz von Differentialgleichungen hinzufügt
`t_values=linspace(0,10,101);
initial_cond=[1 ; 0 ; 0];
[tv,Yv]=ode45('simplemodel',t_values,initial_cond);
plot(tv,Yv(:,1),'+',tv,Yv(:,2),'x',tv,Yv(:,3),'o');
legend('y1','y2','y3');`
Dann wieder ein
function Dy = simplemodel(t,y)
Dy=[ a(t)*y(1)+b(t)*y(2); ...
-a(t)*y(3)+b(t)*y(1); ...
a(t)*y(2)] ;
end
function fa=a(t);
fa=cos(t); % or place whatever you want to place for a(t)..
end
function fb=b(t);
fb=sin(t) % or place whatever you want to place for b(t)..
end
ich ein Problem jedoch habe, dass ich versuchen will einen PID-Regler zu meinem a(t)
Begriff hinzuzufügen .. Ich habe versucht, eine „proportionale Term zuerst zu tun hinzufügen "durch Ändern der fb=sin(t)
Zeile zu fb=-K*y(2)+d+K*int(y(2))+K*diff(y(2))
, wobei K
und d
Konstanten sind. Wenn ich diese fb
Zeile für die in dem Code ersetze, erhalte ich Fehler. Irgendwelche Ideen Jungs? Vielen Dank
Können Sie bitte Ihre Frage bearbeiten, um eine [mcve] zu enthalten? – Wrzlprmft
Hallo @Wrzlpmft Ist mein Beispiel nicht vollständig und minimal. Der Code zur Verfügung gestellt funktioniert auch, ich brauche es nur erweitern. Danke :) – ODAmatuer
* Der angegebene Code funktioniert auch * - Genau. Zeig uns, was du versucht hast und was nicht. – Wrzlprmft