Solving lengthy nonlinear complex equations in complex variables
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hello Everyone!
I am trying to solve a set of 4 complex nonlinear equations in 4 complex variables, containing lengthy algebraic expressions with large complex numbers. I have tried vpasolve, solve, fsolve but all get stuck due to voluminous computations involved & no result is appeared. The expressions/equations cannot be shortened or moulded. Please provide suggestions to solve this problem. The code is as under:
_______________________________________________________________________________________________________________________________________
>> syms Y1s Y3s Y4s Y7s
>> e1=(220000/(sqrt(3)))/(((1.8e17*(Y3s*(4.4e63 - 2.0e63i) + Y4s*(6.9e63 - 3.1e63i) + Y7s*(9.4e63 - 4.2e63i) + Y3s*Y4s*(7.8e61 + 1.4e62i) + Y3s*Y7s*(1.1e62 + 1.9e62i) + Y4s*Y7s*(1.6e62 + 2.9e62i) - Y3s*Y4s*Y7s*(5.5e60 - 3.9e60i) - 7.0e64 - 2.1e65i))/(- Y1s*(1.2e82 + 3.7e82i) - Y3s*(1.4e82 + 4.1e82i) - Y4s*(1.5e82 + 4.3e82i) - Y7s*(2.0e82 + 5.5e82i) + Y1s*Y3s*(7.7e80 - 3.4e80i) + Y1s*Y4s*(1.2e81 - 5.4e80i) + Y3s*Y4s*(1.4e81 - 6.2e80i) + Y1s*Y7s*(1.7e81 - 7.4e80i) + Y3s*Y7s*(1.9e81 - 8.6e80i) + Y4s*Y7s*(2.0e81 - 9.2e80i) + Y1s*Y3s*Y4s*(1.4e79 + 2.4e79i) + Y1s*Y3s*Y7s*(1.9e79 + 3.3e79i) + Y1s*Y4s*Y7s*(2.9e79 + 5.1e79i) + Y3s*Y4s*Y7s*(3.4e79 + 5.9e79i) - Y1s*Y3s*Y4s*Y7s*(9.7e77 - 6.9e77i) - 9.7e83 + 2.7e83i))*484)-((3.9046-44.6295*i)*1000);
>> e3=(220000/(sqrt(3)))/(((4.4e16*(Y1s*(1.7e64 - 7.8e63i) + Y4s*(3.2e64 - 1.4e64i) + Y7s*(4.3e64 - 2.0e64i) + Y1s*Y4s*(3.1e62 + 5.4e62i) + Y1s*Y7s*(4.3e62 + 7.5e62i) + Y4s*Y7s*(7.7e62 + 1.3e63i) - Y1s*Y4s*Y7s*(2.2e61 - 1.6e61i) - 3.2e65 - 9.3e65i))/(- Y1s*(1.2e82 + 3.7e82i) - Y3s*(1.4e82 + 4.1e82i) - Y4s*(1.5e82 + 4.3e82i) - Y7s*(2.0e82 + 5.5e82i) + Y1s*Y3s*(7.7e80 - 3.4e80i) + Y1s*Y4s*(1.2e81 - 5.4e80i) + Y3s*Y4s*(1.4e81 - 6.2e80i) + Y1s*Y7s*(1.7e81 - 7.4e80i) + Y3s*Y7s*(1.9e81 - 8.6e80i) + Y4s*Y7s*(2.0e81 - 9.2e80i) + Y1s*Y3s*Y4s*(1.4e79 + 2.4e79i) + Y1s*Y3s*Y7s*(1.9e79 + 3.3e79i) + Y1s*Y4s*Y7s*(2.9e79 + 5.1e79i) + Y3s*Y4s*Y7s*(3.4e79 + 5.9e79i) - Y1s*Y3s*Y4s*Y7s*(9.7e77 - 6.9e77i) - 9.7e83 + 2.7e83i))*484)-((3.4339-39.25*i)*1000);
>> e4=(220000/(sqrt(3)))/(((5.0e3*(Y1s*(1.2e77 + 5.5e75i) + Y3s*(1.4e77 + 5.7e75i) + Y7s*(2.0e77 + 7.0e75i) + Y1s*Y3s*(1.4e74 + 2.5e75i) + Y1s*Y7s*(2.9e74 + 5.2e75i) + Y3s*Y7s*(3.7e74 + 6.1e75i) - Y1s*Y3s*Y7s*(1.1e74 - 1.7e73i) + 5.3e77 - 4.0e78i))/(Y1s*(2.4e81 - 1.7e82i) + Y3s*(2.6e81 - 1.9e82i) + Y4s*(2.7e81 - 2.0e82i) + Y7s*(3.1e81 - 2.6e82i) + Y1s*Y3s*(3.8e80 + 1.6e79i) + Y1s*Y4s*(5.9e80 + 2.8e79i) + Y3s*Y4s*(6.8e80 + 2.8e79i) + Y1s*Y7s*(8.1e80 + 3.4e79i) + Y3s*Y7s*(9.3e80 + 3.4e79i) + Y4s*Y7s*(9.9e80 + 3.5e79i) + Y1s*Y3s*Y4s*(6.9e77 + 1.2e79i) + Y1s*Y3s*Y7s*(1.0e78 + 1.7e79i) + Y1s*Y4s*Y7s*(1.5e78 + 2.6e79i) + Y3s*Y4s*Y7s*(1.8e78 + 3.0e79i) - Y1s*Y3s*Y4s*Y7s*(5.3e77 - 8.5e76i) - 4.4e83 - 8.5e82i))*484)-((1.5165-17.3338*i)*1000);
>> e7=(220000/(sqrt(3)))/(((1.2e4*(Y1s*(1.9e77 + 7.3e76i) + Y3s*(2.2e77 + 8.2e76i) + Y4s*(2.3e77 + 8.7e76i) - Y1s*Y3s*(1.1e75 - 4.2e75i) - Y1s*Y4s*(1.7e75 - 6.4e75i) - Y3s*Y4s*(2.0e75 - 7.4e75i) - Y1s*Y3s*Y4s*(1.3e74 + 2.2e73i) + 2.8e78 - 6.0e78i))/(Y1s*(2.5e82 - 4.9e82i) + Y3s*(2.7e82 - 5.5e82i) + Y4s*(2.8e82 - 5.8e82i) + Y7s*(3.5e82 - 7.5e82i) + Y1s*Y3s*(1.1e81 + 4.2e80i) + Y1s*Y4s*(1.7e81 + 6.7e80i) + Y3s*Y4s*(2.0e81 + 7.7e80i) + Y1s*Y7s*(2.4e81 + 9.2e80i) + Y3s*Y7s*(2.7e81 + 1.0e81i) + Y4s*Y7s*(2.9e81 + 1.1e81i) - Y1s*Y3s*Y4s*(1.0e79 - 3.8e79i) - Y1s*Y3s*Y7s*(1.4e79 - 5.2e79i) - Y1s*Y4s*Y7s*(2.2e79 - 8.0e79i) - Y3s*Y4s*Y7s*(2.5e79 - 9.3e79i) - Y1s*Y3s*Y4s*Y7s*(1.7e78 + 2.7e77i) - 1.2e84 - 7.0e83i))*484)-((4.8371-55.2888*i)*1000);
>> result = solve(e1,e3,e4,e7,Y1s,Y3s,Y4s,Y7s)
_______________________________________________________________________________________________________________________________________
4 comentarios
Star Strider
el 29 de Oct. de 2020
My pleasure!
I would definitely recommend re-coding these in a way that fsolve can use them. (The fzero function is not an option here.) If you give it complex initial estimates, it will use those and return complex results. If you give it real initial estimates, it will return real results (unless the results can only be complex). It may be necesary to iterate several times with different random initial estimates over a wide range of values, positive and negative, to estimate all of them, assuming they can be uniquely estimated. I would normally suggest plotting it, however with so many parameters, that is not an option. It appears to be first-order (linear) with respect to each parameter (I did not examine the equations closely), so it is likely not necessary to be concerned about complex-conjugate roots.
Respuestas (2)
Alex Sha
el 29 de Oct. de 2020
Try to find numerical solutions as below;
y1s.realpart: 11.0169967890388
y1s.imagpart: -125.141575853451
y3s.realpart: 7.81970377305325
y3s.imagpart: -106.356946529629
y4s.realpart: 3.07796056296378
y4s.imagpart: -36.8035908733627
y7s.realpart: 15.4211136064375
y7s.imagpart: -178.419654796614
2 comentarios
Alex Sha
el 30 de Oct. de 2020
Hi, ubtc, the results are obtained by 1stOpt, a math software other than Matlab, much easy for using, and without requiring the guess of initial-start valus for each parameter, the total code like below:
ComplexPar Y1s,Y3s,Y4s,Y7s;
ComplexStr = i;
Function
(220000/(sqrt(3)))/(((1.8e17*(Y3s*(4.4e63 - 2.0e63*i) + Y4s*(6.9e63 - 3.1e63*i) + Y7s*(9.4e63 - 4.2e63*i) + Y3s*Y4s*(7.8e61 + 1.4e62*i) + Y3s*Y7s*(1.1e62 + 1.9e62*i) + Y4s*Y7s*(1.6e62 + 2.9e62*i) - Y3s*Y4s*Y7s*(5.5e60 - 3.9e60*i) - 7.0e64 - 2.1e65*i))/(- Y1s*(1.2e82 + 3.7e82*i) - Y3s*(1.4e82 + 4.1e82*i) - Y4s*(1.5e82 + 4.3e82*i) - Y7s*(2.0e82 + 5.5e82*i) + Y1s*Y3s*(7.7e80 - 3.4e80*i) + Y1s*Y4s*(1.2e81 - 5.4e80*i) + Y3s*Y4s*(1.4e81 - 6.2e80*i) + Y1s*Y7s*(1.7e81 - 7.4e80*i) + Y3s*Y7s*(1.9e81 - 8.6e80*i) + Y4s*Y7s*(2.0e81 - 9.2e80*i) + Y1s*Y3s*Y4s*(1.4e79 + 2.4e79*i) + Y1s*Y3s*Y7s*(1.9e79 + 3.3e79*i) + Y1s*Y4s*Y7s*(2.9e79 + 5.1e79*i) + Y3s*Y4s*Y7s*(3.4e79 + 5.9e79*i) - Y1s*Y3s*Y4s*Y7s*(9.7e77 - 6.9e77*i) - 9.7e83 + 2.7e83*i))*484)-((3.9046-44.6295*i)*1000);
(220000/(sqrt(3)))/(((4.4e16*(Y1s*(1.7e64 - 7.8e63*i) + Y4s*(3.2e64 - 1.4e64*i) + Y7s*(4.3e64 - 2.0e64*i) + Y1s*Y4s*(3.1e62 + 5.4e62*i) + Y1s*Y7s*(4.3e62 + 7.5e62*i) + Y4s*Y7s*(7.7e62 + 1.3e63*i) - Y1s*Y4s*Y7s*(2.2e61 - 1.6e61*i) - 3.2e65 - 9.3e65*i))/(- Y1s*(1.2e82 + 3.7e82*i) - Y3s*(1.4e82 + 4.1e82*i) - Y4s*(1.5e82 + 4.3e82*i) - Y7s*(2.0e82 + 5.5e82*i) + Y1s*Y3s*(7.7e80 - 3.4e80*i) + Y1s*Y4s*(1.2e81 - 5.4e80*i) + Y3s*Y4s*(1.4e81 - 6.2e80*i) + Y1s*Y7s*(1.7e81 - 7.4e80*i) + Y3s*Y7s*(1.9e81 - 8.6e80*i) + Y4s*Y7s*(2.0e81 - 9.2e80*i) + Y1s*Y3s*Y4s*(1.4e79 + 2.4e79*i) + Y1s*Y3s*Y7s*(1.9e79 + 3.3e79*i) + Y1s*Y4s*Y7s*(2.9e79 + 5.1e79*i) + Y3s*Y4s*Y7s*(3.4e79 + 5.9e79*i) - Y1s*Y3s*Y4s*Y7s*(9.7e77 - 6.9e77*i) - 9.7e83 + 2.7e83*i))*484)-((3.4339-39.25*i)*1000);
(220000/(sqrt(3)))/(((5.0e3*(Y1s*(1.2e77 + 5.5e75*i) + Y3s*(1.4e77 + 5.7e75*i) + Y7s*(2.0e77 + 7.0e75*i) + Y1s*Y3s*(1.4e74 + 2.5e75*i) + Y1s*Y7s*(2.9e74 + 5.2e75*i) + Y3s*Y7s*(3.7e74 + 6.1e75*i) - Y1s*Y3s*Y7s*(1.1e74 - 1.7e73*i) + 5.3e77 - 4.0e78*i))/(Y1s*(2.4e81 - 1.7e82*i) + Y3s*(2.6e81 - 1.9e82*i) + Y4s*(2.7e81 - 2.0e82*i) + Y7s*(3.1e81 - 2.6e82*i) + Y1s*Y3s*(3.8e80 + 1.6e79*i) + Y1s*Y4s*(5.9e80 + 2.8e79*i) + Y3s*Y4s*(6.8e80 + 2.8e79*i) + Y1s*Y7s*(8.1e80 + 3.4e79*i) + Y3s*Y7s*(9.3e80 + 3.4e79*i) + Y4s*Y7s*(9.9e80 + 3.5e79*i) + Y1s*Y3s*Y4s*(6.9e77 + 1.2e79*i) + Y1s*Y3s*Y7s*(1.0e78 + 1.7e79*i) + Y1s*Y4s*Y7s*(1.5e78 + 2.6e79*i) + Y3s*Y4s*Y7s*(1.8e78 + 3.0e79*i) - Y1s*Y3s*Y4s*Y7s*(5.3e77 - 8.5e76*i) - 4.4e83 - 8.5e82*i))*484)-((1.5165-17.3338*i)*1000);
(220000/(sqrt(3)))/(((1.2e4*(Y1s*(1.9e77 + 7.3e76*i) + Y3s*(2.2e77 + 8.2e76*i) + Y4s*(2.3e77 + 8.7e76*i) - Y1s*Y3s*(1.1e75 - 4.2e75*i) - Y1s*Y4s*(1.7e75 - 6.4e75*i) - Y3s*Y4s*(2.0e75 - 7.4e75*i) - Y1s*Y3s*Y4s*(1.3e74 + 2.2e73*i) + 2.8e78 - 6.0e78*i))/(Y1s*(2.5e82 - 4.9e82*i) + Y3s*(2.7e82 - 5.5e82*i) + Y4s*(2.8e82 - 5.8e82*i) + Y7s*(3.5e82 - 7.5e82*i) + Y1s*Y3s*(1.1e81 + 4.2e80*i) + Y1s*Y4s*(1.7e81 + 6.7e80*i) + Y3s*Y4s*(2.0e81 + 7.7e80*i) + Y1s*Y7s*(2.4e81 + 9.2e80*i) + Y3s*Y7s*(2.7e81 + 1.0e81*i) + Y4s*Y7s*(2.9e81 + 1.1e81*i) - Y1s*Y3s*Y4s*(1.0e79 - 3.8e79*i) - Y1s*Y3s*Y7s*(1.4e79 - 5.2e79*i) - Y1s*Y4s*Y7s*(2.2e79 - 8.0e79*i) - Y3s*Y4s*Y7s*(2.5e79 - 9.3e79*i) - Y1s*Y3s*Y4s*Y7s*(1.7e78 + 2.7e77*i) - 1.2e84 - 7.0e83*i))*484)-((4.8371-55.2888*i)*1000);
The outcome will be:
y1s.realpart: 11.0169967890388
y1s.imagpart: -125.141575853451
y3s.realpart: 7.81970377305327
y3s.imagpart: -106.356946529629
y4s.realpart: 3.07796056296379
y4s.imagpart: -36.8035908733627
y7s.realpart: 15.4211136064375
y7s.imagpart: -178.419654796614
Ver también
Categorías
Más información sobre Calculus 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!