• Support PF! Buy your school textbooks, materials and every day products Here!

Dealing with a nonlinear system of equations.

  • Thread starter 1f5
  • Start date
  • #1
1f5
12
0

Homework Statement



Hello everyone.

I'm trying to solve a non linear 11x11 system. (for eliminate harmonics in a power inversor)
I used Excel's Solver but it didn't work. (Solver couldn't solve the system). Then I found fsolve (a scilab function) but again it didn't work
I will attach the code used.

Homework Equations




The system is:

cos(na)-cos(nb)+cos(nc)-cos(nd)+cos(ne)-cos(nf)+cos(ng)-cos(nh)+cos(ni)-cos(nj)+cos(nk)=0
The letters are the unknown angles which are desired.
n represent the number of the harmonic because harmonics 3rd, 5th, 7th, 9th,11th, 13th, 15th, 17th, 19th, 21st, 23rd must be eliminated. They are 11 angles so there are 11 simultaneous equations to solve to find the angles which can eliminate those harmonics.

Who knows another method to solve the system?


The Attempt at a Solution



When i change the initial value in the script i got different solutions, when i substitute I found out that solution is actually false.

code used in Scilab:




clear
function t1 = system (a)
fa(1)= cosd(3*a(1)) - cosd(3*a(2)) + cosd(3*a(3))- cosd(3*a(4))+ cosd(3*a(5))-cosd(3*a(6))+ cosd(3*a(7))-cosd(3*a(8))+cosd(3*a(9))- cosd(3*a(10))+cosd(3*a(11));
fa(2)= cosd(5*a(1)) - cosd(5*a(2)) + cosd(5*a(3))- cosd(5*a(4))+ cosd(5*a(5))-cosd(5*a(6))+ cosd(5*a(7))-cosd(5*a(8))+cosd(5*a(9))- cosd(5*a(10))+cosd(5*a(11));
fa(3)= cosd(7*a(1)) - cosd(7*a(2)) + cosd(7*a(3))- cosd(7*a(4))+ cosd(7*a(5))-cosd(7*a(6))+ cosd(7*a(7))-cosd(7*a(8))+cosd(7*a(9))- cosd(7*a(10))+cosd(7*a(11));
fa(4)= cosd(9*a(1)) - cosd(9*a(2)) + cosd(9*a(3))- cosd(9*a(4))+ cosd(9*a(5))-cosd(9*a(6))+ cosd(9*a(7))-cosd(9*a(8))+cosd(9*a(9))- cosd(9*a(10))+cosd(9*a(11));
fa(5)= cosd(11*a(1)) - cosd(11*a(2)) + cosd(11*a(3))- cosd(11*a(4))+ cosd(11*a(5))-cosd(11*a(6))+ cosd(11*a(7))-cosd(11*a(8))+cosd(11*a(9))- cosd(11*a(10))+cosd(11*a(11));
fa(6)= cosd(13*a(1)) - cosd(13*a(2)) + cosd(13*a(3))- cosd(13*a(4))+ cosd(13*a(5))-cosd(13*a(6))+ cosd(13*a(7))-cosd(13*a(8))+cosd(13*a(9))- cosd(13*a(10))+cosd(13*a(11));
fa(7)= cosd(15*a(1)) - cosd(15*a(2)) + cosd(15*a(3))- cosd(15*a(4))+ cosd(15*a(5))-cosd(15*a(6))+ cosd(15*a(7))-cosd(15*a(8))+cosd(15*a(9))- cosd(15*a(10))+cosd(15*a(11));
fa(8)= cosd(17*a(1)) - cosd(17*a(2)) + cosd(17*a(3))- cosd(17*a(4))+ cosd(17*a(5))-cosd(17*a(6))+ cosd(17*a(7))-cosd(17*a(8))+cosd(17*a(9))- cosd(17*a(10))+cosd(17*a(11));
fa(9)= cosd(19*a(1)) - cosd(19*a(2)) + cosd(19*a(3))- cosd(19*a(4))+ cosd(19*a(5))-cosd(19*a(6))+ cosd(19*a(7))-cosd(19*a(8))+cosd(19*a(9))- cosd(19*a(10))+cosd(19*a(11));
fa(10)= cosd(21*a(1)) - cosd(21*a(2)) + cosd(21*a(3))- cosd(21*a(4))+ cosd(21*a(5))-cosd(21*a(6))+ cosd(21*a(7))-cosd(21*a(8))+cosd(21*a(9))- cosd(21*a(10))+cosd(21*a(11));
fa(11)= cosd(23*a(1)) - cosd(23*a(2)) + cosd(23*a(3))- cosd(23*a(4))+ cosd(23*a(5))-cosd(23*a(6))+ cosd(23*a(7))-cosd(23*a(8))+cosd(23*a(9))- cosd(23*a(10))+cosd(23*a(11));
endfunction

a0 = [0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1,0.1];
[ar, v, info] = fsolve(a0, system);
disp(ar)
disp(info)
 

Attachments

Last edited:

Answers and Replies

  • #2
The Electrician
Gold Member
1,249
155
Are you familiar with the papers on this topic that have been published by the IEEE? If so, which papers do you have? I may be able to steer you to some others.
 
  • #3
1f5
12
0
No, my professor gave me only the Fourier coefficients formulas, with these formulas i obtained those equations from the previous post. I solved a previous exercise with Excel (there were only 3 equations, instead of 11).

Thanks in advance.
 
  • #4
667
4
Varied considerations, I just couldn't resist...

Here you've chosen a single-ended inverter, sadly for you. An H bridge would give you three voltages +V, 0, -V with more flexibility, like the 1/3 2/3 waveform that suppresses harmonics 3 9 15 21. A three-phase output would do the same for free. Needs fewer transitions per period. A multi-phase inverter, like those feeding a Cpu, does essentially the same to reduce the ripple with one transition per period on each output.

Solving the equation for c=cos(a) would make it a set of polynomial equations, which I believe to remember is solved by Mathcad or Maple. That is, cos(3a) comprises cos(a) and cos3(a) and so on for higher powers, which you find through cos(a)=[exp(j*a)+exp(-j*a)]/2. Reinjecting the lower-power equations in the higher ones would then simplify them, possibly to contain only the highest power.

You can perfectly write a dumb software that tries all possible angles. a1 to a11 are between 0° and 90° and are in strict increasing order, so if you try all even degree angles between 2° and 88° you have 3411/11! combinations or 2 billions. Precompute 11 tables of 44 angles for cos(n*a), avoid repeated computations in nested loops, and a single Cpu takes 50 cycles per trial or 30s at 3GHz, without SSE nor multicore. Take the RMS power as a fast figure of merit.

Then, refine your solution within the (2°)11 hypervolume.

More subtle, you could keep a few near-best solutions that aren't local to an other, in case the best one is technologically bad, say if the transitions are too close to an other. Or if the 2° sampling lets you miss the true best solution.

Good luck, I had spent a few thought at this dream when I was a student.
 

Related Threads on Dealing with a nonlinear system of equations.

Replies
7
Views
2K
Replies
2
Views
485
Replies
2
Views
846
Replies
3
Views
4K
Replies
5
Views
643
Replies
0
Views
7K
Replies
4
Views
851
Top