I have 5 nonlinear algebraic equations with many terms, fsolve command is ineffective in solving these nonlinear equations.
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi All. I have a system of 5 nonlinear equations that is expected to have three roots (three solutions).
I try to solve these nonlinear equations with fsolve. when I run the code, I get errors, like no solutions found, or fslove stopped prematurely. etc. It does not achieve anysolution, and sometimes achieve only one of the solutions.
Thus I decided to use 5 for loops for initial guesses in the fsolve command to get all the solutions, but running the program in this approach takes too much time. Even after two days, it couldn't solve the system of equations.
Is there a way to solve this problem?I would be grateful if you guide me on how I can solve the system of equations correctly.
for V_DC=1:1:400
for inia=0:0.5:1.5
for inib=0:0.5:1.5
for inic=0:0.5:1.5
for inid=0:0.5:1.5
for inie=0:0.5:1.5
u0=[inia inib inic inid inie]
f_u=@(u)[A1*u(1)^3+B1*u(2)^3+Z1*u(3)^3+D1*u(4)^3+E1*u(5)^3+F1*u(1)^2*u(2)+G1*u(1)^2*u(3)+H1*u(1)^2*u(4)+I1*u(1)^2*u(5)+J1*u(2)^2*u(1)+K1*u(2)^2*u(3)+L1*u(2)^2*u(4)+M1*u(2)^2*u(5)+N1*u(3)^2*u(1)+O1*u(3)^2*u(2)+P1*u(3)^2*u(4)+Q1*u(3)^2*u(5)+R1*u(4)^2*u(1)+S1*u(4)^2*u(2)+T1*u(4)^2*u(3)+V1*u(4)^2*u(5)+Aa1*u(5)^2*u(1)+Ba1*u(5)^2*u(2)+Za1*u(5)^2*u(3)+Da1*u(5)^2*u(4)+Ea1*u(1)*u(2)*u(3)+Fa1*u(1)*u(2)*u(4)+Ga1*u(1)*u(2)*u(5)+Ha1*u(1)*u(3)*u(4)+Ia1*u(1)*u(3)*u(5)+Ja1*u(1)*u(4)*u(5)+Ka1*u(2)*u(3)*u(4)+La1*u(2)*u(3)*u(5)+Ma1*u(2)*u(4)*u(5)+Na1*u(3)*u(4)*u(5)+Oa1*u(1)^2+Pa1*u(2)^2+Qa1*u(3)^2+Ra1*u(4)^2+Sa1*u(5)^2+Ta1*u(1)*u(2)+Va1*u(1)*u(3)+Ab1*u(1)*u(4)+Bb1*u(1)*u(5)+Zb1*u(2)*u(3)+Db1*u(2)*u(4)+Eb1*u(2)*u(5)+Fb1*u(3)*u(4)+Gb1*u(3)*u(5)+Hb1*u(4)*u(5)+Ib1*u(1)+Jb1*u(2)+Kb1*u(3)+Lb1*u(4)+Mb1*u(5)+(P*C41)+(-alfa2*V_DC^2*L_e/(3*2))*(((phi1((1-L_e)/2)*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5)))/(1+q*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5))^s))+4*((phi1(((1-L_e)/2)+(L_e/2))*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5)))/(1+q*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5))^s))+((phi1((1+L_e)/2)*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5)))/(1+q*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5))^s)))
A2*u(1)^3+B2*u(2)^3+Z2*u(3)^3+D2*u(4)^3+E2*u(5)^3+F2*u(1)^2*u(2)+G2*u(1)^2*u(3)+H2*u(1)^2*u(4)+I2*u(1)^2*u(5)+J2*u(2)^2*u(1)+K2*u(2)^2*u(3)+L2*u(2)^2*u(4)+M2*u(2)^2*u(5)+N2*u(3)^2*u(1)+O2*u(3)^2*u(2)+P2*u(3)^2*u(4)+Q2*u(3)^2*u(5)+R2*u(4)^2*u(1)+S2*u(4)^2*u(2)+T2*u(4)^2*u(3)+V2*u(4)^2*u(5)+Aa2*u(5)^2*u(1)+Ba2*u(5)^2*u(2)+Za2*u(5)^2*u(3)+Da2*u(5)^2*u(4)+Ea2*u(1)*u(2)*u(3)+Fa2*u(1)*u(2)*u(4)+Ga2*u(1)*u(2)*u(5)+Ha2*u(1)*u(3)*u(4)+Ia2*u(1)*u(3)*u(5)+Ja2*u(1)*u(4)*u(5)+Ka2*u(2)*u(3)*u(4)+La2*u(2)*u(3)*u(5)+Ma2*u(2)*u(4)*u(5)+Na2*u(3)*u(4)*u(5)+Oa2*u(1)^2+Pa2*u(2)^2+Qa2*u(3)^2+Ra2*u(4)^2+Sa2*u(5)^2+Ta2*u(1)*u(2)+Va2*u(1)*u(3)+Ab2*u(1)*u(4)+Bb2*u(1)*u(5)+Zb2*u(2)*u(3)+Db2*u(2)*u(4)+Eb2*u(2)*u(5)+Fb2*u(3)*u(4)+Gb2*u(3)*u(5)+Hb2*u(4)*u(5)+Ib2*u(1)+Jb2*u(2)+Kb2*u(3)+Lb2*u(4)+Mb2*u(5)+(P*C42)+(-alfa2*V_DC^2*L_e/(3*2))*(((phi2((1-L_e)/2)*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5)))/(1+q*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5))^s))+4*((phi2(((1-L_e)/2)+(L_e/2))*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5)))/(1+q*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5))^s))+((phi2((1+L_e)/2)*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5)))/(1+q*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5))^s)))
A3*u(1)^3+B3*u(2)^3+Z3*u(3)^3+D3*u(4)^3+E3*u(5)^3+F3*u(1)^2*u(2)+G3*u(1)^2*u(3)+H3*u(1)^2*u(4)+I3*u(1)^2*u(5)+J3*u(2)^2*u(1)+K3*u(2)^2*u(3)+L3*u(2)^2*u(4)+M3*u(2)^2*u(5)+N3*u(3)^2*u(1)+O3*u(3)^2*u(2)+P3*u(3)^2*u(4)+Q3*u(3)^2*u(5)+R3*u(4)^2*u(1)+S3*u(4)^2*u(2)+T3*u(4)^2*u(3)+V3*u(4)^2*u(5)+Aa3*u(5)^2*u(1)+Ba3*u(5)^2*u(2)+Za3*u(5)^2*u(3)+Da3*u(5)^2*u(4)+Ea3*u(1)*u(2)*u(3)+Fa3*u(1)*u(2)*u(4)+Ga3*u(1)*u(2)*u(5)+Ha3*u(1)*u(3)*u(4)+Ia3*u(1)*u(3)*u(5)+Ja3*u(1)*u(4)*u(5)+Ka3*u(2)*u(3)*u(4)+La3*u(2)*u(3)*u(5)+Ma3*u(2)*u(4)*u(5)+Na3*u(3)*u(4)*u(5)+Oa3*u(1)^2+Pa3*u(2)^2+Qa3*u(3)^2+Ra3*u(4)^2+Sa3*u(5)^2+Ta3*u(1)*u(2)+Va3*u(1)*u(3)+Ab3*u(1)*u(4)+Bb3*u(1)*u(5)+Zb3*u(2)*u(3)+Db3*u(2)*u(4)+Eb3*u(2)*u(5)+Fb3*u(3)*u(4)+Gb3*u(3)*u(5)+Hb3*u(4)*u(5)+Ib3*u(1)+Jb3*u(2)+Kb3*u(3)+Lb3*u(4)+Mb3*u(5)+(P*C43)+(-alfa2*V_DC^2*L_e/(3*2))*(((phi3((1-L_e)/2)*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5)))/(1+q*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5))^s))+4*((phi3(((1-L_e)/2)+(L_e/2))*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5)))/(1+q*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5))^s))+((phi3((1+L_e)/2)*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5)))/(1+q*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5))^s)))
A4*u(1)^3+B4*u(2)^3+Z4*u(3)^3+D4*u(4)^3+E4*u(5)^3+F4*u(1)^2*u(2)+G4*u(1)^2*u(3)+H4*u(1)^2*u(4)+I4*u(1)^2*u(5)+J4*u(2)^2*u(1)+K4*u(2)^2*u(3)+L4*u(2)^2*u(4)+M4*u(2)^2*u(5)+N4*u(3)^2*u(1)+O4*u(3)^2*u(2)+P4*u(3)^2*u(4)+Q4*u(3)^2*u(5)+R4*u(4)^2*u(1)+S4*u(4)^2*u(2)+T4*u(4)^2*u(3)+V4*u(4)^2*u(5)+Aa4*u(5)^2*u(1)+Ba4*u(5)^2*u(2)+Za4*u(5)^2*u(3)+Da4*u(5)^2*u(4)+Ea4*u(1)*u(2)*u(3)+Fa4*u(1)*u(2)*u(4)+Ga4*u(1)*u(2)*u(5)+Ha4*u(1)*u(3)*u(4)+Ia4*u(1)*u(3)*u(5)+Ja4*u(1)*u(4)*u(5)+Ka4*u(2)*u(3)*u(4)+La4*u(2)*u(3)*u(5)+Ma4*u(2)*u(4)*u(5)+Na4*u(3)*u(4)*u(5)+Oa4*u(1)^2+Pa4*u(2)^2+Qa4*u(3)^2+Ra4*u(4)^2+Sa4*u(5)^2+Ta4*u(1)*u(2)+Va4*u(1)*u(3)+Ab4*u(1)*u(4)+Bb4*u(1)*u(5)+Zb4*u(2)*u(3)+Db4*u(2)*u(4)+Eb4*u(2)*u(5)+Fb4*u(3)*u(4)+Gb4*u(3)*u(5)+Hb4*u(4)*u(5)+Ib4*u(1)+Jb4*u(2)+Kb4*u(3)+Lb4*u(4)+Mb4*u(5)+(P*C44)+(-alfa2*V_DC^2*L_e/(3*2))*(((phi4((1-L_e)/2)*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5)))/(1+q*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5))^s))+4*((phi4(((1-L_e)/2)+(L_e/2))*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5)))/(1+q*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5))^s))+((phi4((1+L_e)/2)*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5)))/(1+q*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5))^s)))
A5*u(1)^3+B5*u(2)^3+Z5*u(3)^3+D5*u(4)^3+E5*u(5)^3+F5*u(1)^2*u(2)+G5*u(1)^2*u(3)+H5*u(1)^2*u(4)+I5*u(1)^2*u(5)+J5*u(2)^2*u(1)+K5*u(2)^2*u(3)+L5*u(2)^2*u(4)+M5*u(2)^2*u(5)+N5*u(3)^2*u(1)+O5*u(3)^2*u(2)+P5*u(3)^2*u(4)+Q5*u(3)^2*u(5)+R5*u(4)^2*u(1)+S5*u(4)^2*u(2)+T5*u(4)^2*u(3)+V5*u(4)^2*u(5)+Aa5*u(5)^2*u(1)+Ba5*u(5)^2*u(2)+Za5*u(5)^2*u(3)+Da5*u(5)^2*u(4)+Ea5*u(1)*u(2)*u(3)+Fa5*u(1)*u(2)*u(4)+Ga5*u(1)*u(2)*u(5)+Ha5*u(1)*u(3)*u(4)+Ia5*u(1)*u(3)*u(5)+Ja5*u(1)*u(4)*u(5)+Ka5*u(2)*u(3)*u(4)+La5*u(2)*u(3)*u(5)+Ma5*u(2)*u(4)*u(5)+Na5*u(3)*u(4)*u(5)+Oa5*u(1)^2+Pa5*u(2)^2+Qa5*u(3)^2+Ra5*u(4)^2+Sa5*u(5)^2+Ta5*u(1)*u(2)+Va5*u(1)*u(3)+Ab5*u(1)*u(4)+Bb5*u(1)*u(5)+Zb5*u(2)*u(3)+Db5*u(2)*u(4)+Eb5*u(2)*u(5)+Fb5*u(3)*u(4)+Gb5*u(3)*u(5)+Hb5*u(4)*u(5)+Ib5*u(1)+Jb5*u(2)+Kb5*u(3)+Lb5*u(4)+Mb5*u(5)+(P*C45)+(-alfa2*V_DC^2*L_e/(3*2))*(((phi5((1-L_e)/2)*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5)))/(1+q*(w0((1-L_e)/2)+phi1((1-L_e)/2)*u(1)+phi2((1-L_e)/2)*u(2)+phi3((1-L_e)/2)*u(3)+phi4((1-L_e)/2)*u(4)+phi5((1-L_e)/2)*u(5))^s))+4*((phi5(((1-L_e)/2)+(L_e/2))*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5)))/(1+q*(w0(((1-L_e)/2)+(L_e/2))+phi1(((1-L_e)/2)+(L_e/2))*u(1)+phi2(((1-L_e)/2)+(L_e/2))*u(2)+phi3(((1-L_e)/2)+(L_e/2))*u(3)+phi4(((1-L_e)/2)+(L_e/2))*u(4)+phi5(((1-L_e)/2)+(L_e/2))*u(5))^s))+((phi5((1+L_e)/2)*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5)))/(1+q*(w0((1+L_e)/2)+phi1((1+L_e)/2)*u(1)+phi2((1+L_e)/2)*u(2)+phi3((1+L_e)/2)*u(3)+phi4((1+L_e)/2)*u(4)+phi5((1+L_e)/2)*u(5))^s)))];
[root,fval,exitflag]= fsolve(f_u,u0)
if isreal(root(1))==1 & isreal(root(2))==1 & isreal(root(3))==1 & isreal(root(4))==1 & isreal(root(5))==1 & exitflag>0
hold on
plot(V_DC,(root(1)*phi1_midpoint+root(2)*phi2_midpoint+root(3)*phi3_midpoint+root(4)*phi4_midpoint+root(5)*phi5_midpoint)*d*1e+6+9,'bo');
end
end
end
end
end
end
end
xlabel('V_DC')
ylabel('W_max')
0 comentarios
Respuestas (1)
Matt J
el 6 de Nov. de 2021
Editada: Matt J
el 6 de Nov. de 2021
Rather than using loops, you should probably do a grid search using ndgrid just to see if the equations ever get close to zero.
[U{1:5}]=ndgrid(0:0.15:1.5);
U=cellfun(@(x) x(:),U,'uni',0);
UAll=cell2mat(U);
Then evaluate your equations at all the grid points with,
Eq1= abs( A1*U{1}.^3 + B1*U{2}.^3 + Z1*U{3}.^3 + ... );
Eq2= abs( A2*U{1}.^3 + B2*U{2}.^3 + Z2*U{3}.^3 + ... );
...
EqAll=[Eq1,Eq2,Eq3,Eq4,Eq5];
Then see if/where the equations get simultaneously closest to zero,
[minval,location] = min( max( EqAll ,[],2 ) , 'all');
minval,
UAll(location,:)
0 comentarios
Ver también
Categorías
Más información sobre Systems of Nonlinear Equations en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!