How to solve two equations two unknowns for the equations with syms?
이전 댓글 표시
I am trying to calculate solutions for the two equation two unknown type scenario. But, the solver is not able to give any explicit solution. The unknows are syms type transfer functions H_mi_thetadcap and H_mi_vtest.
clc
clear
%% Parameters
Vm = 277 * sqrt(6) ;
ws = 2 * pi * 85000 ;
Lp = 28.3e-6 ;
RLp = 77.55e-3 ;
Zpss = ( ws * Lp * 1i ) + RLp ;
Cpp = 123.13e-9 ;
RCpp = 13.55e3 ;
Zppss = RCpp / ( 1 + RCpp * Cpp * ws * 1i ) ;
Cps = 160.32e-9 ;
RCps = 8e3 ;
Zpsss = RCps / ( 1 + RCps * Cps * ws * 1i ) ;
Ll = 37.45e-6 ;
RLl = 25.85e-3 ;
Zlss = ( ws * Ll * 1i ) + RLl ;
Lm = 996.2e-6 ;
Zmss = ( ws * Lm * 1i ) ;
Cdc = 161.466e-6 ;
RCdc = 20e3 ;
Zdcss = RCdc ;
Rload = 500e3 ; % 128.94 ;
Vbat = 730 ;
Rbat = 0.045 ;
Kp1ss = ( Zmss + Zpsss + Zlss ) / Zmss ;
Kp2ss = Zpsss + Zlss ;
Kp3ss = 1 + ( Zpss / Zppss ) + ( Zpss / ( Zpsss + Zlss ) ) ;
Kp4ss = Zpss / ( Zpsss + Zlss ) ;
Ko1ss = ( 1 / Zdcss ) + ( 1 / Rload ) ;
Ko2ss = 1 + ( Rbat / Rload ) ;
%% Steady State
Mi = 0.975 ;
Vtt = ( 2 * sqrt(3) / pi ) * Mi * Vm ;
thetad = 1.263077326 ;
Vdc = Vbat ;
Vd = ( 4 / pi ) * Vdc * ( cos( thetad ) - 1i * sin( thetad ) ) ;
Id = abs( ( Vtt - ( Vd * ( Kp1ss * Kp3ss - Kp4ss ) ) ) / ( Kp2ss * Kp3ss ) ) * ( cos( thetad ) - 1i * sin( thetad ) ) ;
for iterations = 1 : 1 : 10
Iout = ( 2 / pi ) * abs( Id ) ;
Idc = Iout ;
Vdc = ( Vbat + Idc * Rbat ) / ( 1 + Rbat / Rload ) ;
Vd = ( 4 / pi ) * Vdc * ( cos( thetad ) - 1i * sin( thetad ) ) ;
Id = abs( ( Vtt - ( Vd * ( Kp1ss * Kp3ss - Kp4ss ) ) ) / ( Kp2ss * Kp3ss ) ) * ( cos( thetad ) - 1i * sin( thetad ) ) ;
end
Pdc = Vdc * Idc ;
Rd = ( 8 / pi^2 ) * ( Vdc / Idc ) ;
Vtest = 339.254 ;
%% Small Signal
syms s H_mi_thetadcap H_mi_vtest real
mi = Mi ;
vtt = ( 2 * sqrt(3) / pi ) * mi * Vm ;
Zp = ( s * Lp ) + ( ws * Lp * 1i ) + RLp ;
Zpp = RCpp / ( 1 + ( s * Cpp * RCpp ) + ( ws * Cpp * 1i * RCpp ) ) ;
Zps = RCps / ( 1 + ( s * Cps * RCps ) + ( ws * Cps * 1i * RCps ) ) ;
Zl = ( s * Ll ) + ( ws * Ll * 1i ) + RLl ;
Zm = ( s * Lm ) + ( ws * Lm * 1i ) ;
Zdc = RCdc / ( 1 + ( s * RCdc * Cdc ) ) ;
Kp1 = ( Zm + Zps + Zl ) / Zm ;
Kp2 = Zps + Zl ;
Kp3 = 1 + ( Zp / Zpp ) + ( Zp / ( Zps + Zl ) ) ;
Kp4 = Zp / ( Zps + Zl ) ;
Ko1 = ( 1 / Zdc ) + ( 1 / Rload ) ;
Ko2 = 1 + ( Rbat / Rload ) ;
H_mi_idcap_V = ( ( 4 * sqrt(3) * Vtest ) + ( 4 * sqrt(3) * Mi * H_mi_vtest ) + ( 1i * Vdc * 4 * ( Kp1 * Kp3 - Kp4 ) * ( cos( thetad ) - 1i * sin( thetad ) ) * H_mi_thetadcap ) ) / ( pi * Kp2 * Kp3 ) ;
H_mi_idcap_real = real( H_mi_idcap_V ) ;
H_mi_idcap_imag = imag( H_mi_idcap_V ) ;
Id_real = real( Id ) ;
Id_imag = imag( Id ) ;
Id_abs = abs( Id ) ;
equation_one = H_mi_thetadcap + ( ( H_mi_idcap_imag * Id_real ) - ( H_mi_idcap_real * Id_imag ) ) / Id_abs^2 ;
equation_two = H_mi_idcap_real - ( ( -Id_imag / Id_real ) * H_mi_idcap_imag ) ;
solution = solve( [equation_one, equation_two], [H_mi_thetadcap, H_mi_vtest] )
H_mi_thetadcap = getfield( solution, 'H_mi_thetadcap' )
H_mi_vtest = getfield( solution, 'H_mi_vtest' )
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Calculus에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!