MATLAB: Solving system of equations

equationssolve

Hi there,
I have multiple equations which determine the values in a circuit. I'm trying get the values which satisfy these equations (maybe even with conditions like nonnegative circuit values).
This is my code but I get these errors:
Error using symengine
Input arguments must be convertible to floating-point numbers.
Error in sym/privBinaryOp (line 1030)
Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
Error in sym/max (line 78)
C = privBinaryOp(X, Y, 'symobj::zipWithImplicitExpansion', 'symobj::maxComplex');
Error in Class_E (line 4)
eqn2 = C1==max(0, 1/(2*pi*RFfreq*R_L)*K_C-1.088E-12);
I really appreciate any help you can provide.
Best,
Safak
syms RFfreq R_L V_DD P_out C1 C2 L1 L2 K_P K_C K_X K_L
eqn1 = R_L==V_DD*V_DD/P_out*K_P;
eqn2 = C1==max(0, 1/(2*pi*RFfreq*R_L)*K_C-1.088E-12); %take 0 or what the right side equatates to (if nonzero)
eqn3 = C2==C_0;
eqn4 = L2==L_0+R_L/(2*pi*RFfreq)*K_X;
eqn5 = L1==R_L/(2*PI*RFfreq)*K_L;
eqn6 = K_L==1E6;
eqn7 = K_C==0.1836;
eqn8 = K_P==0.5768;
eqn9 = K_X==1.152;
eqn10 = V_DD==17;
eqn11 = P_out==15;
eqn12 = RFfreq==3.5E9;
eqn13 = C_0==1E-09;
eqn14 = L_0==1/(2*PI*RFfreq)^2/C_0;
eqns = [eqn1 eqn2 eqn3 eqn4 eqn5 eqn6 eqn7 eqn8 eqn9 eqn10 eqn11 eqn12];
sol=solve(eqns)

Best Answer

Q = @(v) sym(v);
PI = Q(pi);
symmax = @(A,B) piecewise(A<=B, A, B);
syms RFfreq R_L V_DD P_out C1 C2 L1 L2 K_P K_C K_X K_L
syms C_0 L_0
eqn1 = R_L==V_DD*V_DD/P_out*K_P;
eqn2 = C1==symmax(0, 1/(2*PI*RFfreq*R_L)*K_C-Q(1.088E-12)); %take 0 or what the right side equatates to (if nonzero)
eqn3 = C2==C_0;
eqn4 = L2==L_0+R_L/(2*PI*RFfreq)*K_X;
eqn5 = L1==R_L/(2*PI*RFfreq)*K_L;
eqn6 = K_L==Q(1E6);
eqn7 = K_C==Q(0.1836);
eqn8 = K_P==Q(0.5768);
eqn9 = K_X==Q(1.152);
eqn10 = V_DD==Q(17);
eqn11 = P_out==Q(15);
eqn12 = RFfreq==Q(3.5E9);
eqns = [eqn1 eqn2 eqn3 eqn4 eqn5 eqn6 eqn7 eqn8 eqn9 eqn10 eqn11 eqn12];
sol = solve(eqns, [C1, C2, K_C, K_L, K_P, K_X, L1, L2, P_out, RFfreq, R_L, V_DD]);
sol will be a mix of constant values, together with the variables C_0 and L_0