Azzera filtri
Azzera filtri

solving system of 2 equations with complex components

1 visualizzazione (ultimi 30 giorni)
Hello,
I'm trying to solve a complex equation which it is proposed in two, separately, taking the module (1) and the angle (2). The solution must be ki=242.1123 and kp=5.7424, but unfortunatelly it is not be able to solve it. Can somebody help me?
Thanks!
-------
% Original complex equation, Open Loop Transfer Function, OLTF(s)=Gpi(s)*G(s)=(kp·s+ki)/s · Kt/(J·s+Bv),
% -> s=jw for frequency domain (Bode)-->OLTF(jw)=OLTF(w*1i)=Kt*(kp*w*1i+ki)/(Bv*w*1i-J*w^2)
syms ki kp
J=0.057;Bv=0.015;w=300;PM=82*pi/180;Kt=2.9489;
eqns=[abs(Kt*(kp*w*1i+ki)/(Bv*w*1i-J*w^2))==1,angle(Kt*(kp*w*1i+ki)/(Bv*w*1i-J*w^2))==PM-pi]; % eq(1),eq(2)
S=vpasolve(eqns,[ki kp])
% no solution
S.ki
ans =
Empty sym: 0-by-1
S.kp
ans =
Empty sym: 0-by-1
-------

Risposta accettata

Alan Stevens
Alan Stevens il 18 Feb 2021
Here's a non-symbolic way to solve your equations
ki0 = 200; kp0 = 10;
k0 = [ki0, kp0];
k = fminsearch(@search,k0);
ki = k(1); kp = k(2);
disp(k)
function F = search(k)
J=0.057;Bv=0.015;w=300;PM=82*pi/180;Kt=2.9489;
ki = k(1); kp = k(2);
d1 = abs(Kt*(kp*w*1i+ki)/(Bv*w*1i-J*w^2))-1;
d2 = angle(Kt*(kp*w*1i+ki)/(Bv*w*1i-J*w^2))-(PM-pi);
F = norm(d1)+norm(d2);
end
  1 Commento
Patxi
Patxi il 18 Feb 2021
thank you very much for your help. I'm very grateful for that!
Regards,
Patxi

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by