How to solve linear and non linear equation system?

조회 수: 3 (최근 30일)
Sameer
Sameer 2014년 6월 4일
댓글: Sameer 2014년 6월 5일
Hello
Can anyone tell me how I can solve the following system of equation
1) a1v1-a2v2-a3v3-a4v4=0
2) a3v3-a5v5-a6v6=0
3) a2v2+a6v6-a7v7=0
4) a7v7+a5v5+a4v4-a8v8=0
5) 500v1^2+p1-p2-500v2^2=0
6) 500v1^2+p1-p3-500v3^2=0
7) 500v1^2+p1-p4-500v4^2=0
8) 500v3^2+p3-p5-500v5^2=0
9) 500v3^2+p3-p6-500v6^2=0
10) 500v7^2+p7-p2-500v2^2=0
11) 500v7^2+p7-p6-500v6^2=0
12) 500v8^2+p8-p4-500v4^2=0
13) 500v8^2+p8-p5-500v5^2=0
14) 500v8^2+p8-p7-500v7^2=0
How to solve the above equation system for v's and p's where v1 and p1 are known
Please guide!!!
Regards
  댓글 수: 2
George Papazafeiropoulos
George Papazafeiropoulos 2014년 6월 4일
15 equations for 16 unknowns... is it supposed to have a specific 16-number solution?
Sameer
Sameer 2014년 6월 4일
Hello....I made a mistake one equation was repeated twice, now i corrected it....these are 14 equations with 14 unknowns as v1 and p1 are known previously. Sohave to calculate 7 v's from v2-v8 and similarly 7 p's from p2-p8.
Regards

댓글을 달려면 로그인하십시오.

채택된 답변

George Papazafeiropoulos
George Papazafeiropoulos 2014년 6월 4일
편집: George Papazafeiropoulos 2014년 6월 4일
For 14 equations with 14 unknowns, try fsolve, or any other iterative solver (Newton-Raphson, Arc-Length, line search, etc...) Make a function which takes 14-element vectors, and gives as output the left-hand sides of the 14 equations. Then you will try to make this function equal to zero.
  댓글 수: 7
Sameer
Sameer 2014년 6월 5일
Hi yash.....What you mean by a/b, I didn't get it...can you please ellaborate.
Regards
Roger Wohlwend
Roger Wohlwend 2014년 6월 5일
Forget a/b. That only works for linear systems.

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

John D'Errico
John D'Errico 2014년 6월 4일
편집: John D'Errico 2014년 6월 4일
You have 14 equations. And it looks like 16 variables, {v1,...,v8,p1,...,p8}.
But you tell us that v1 and p1 are known, so effectively only 14 unknowns. With as many equations as unknowns, there will OFTEN be exact solution(s), but there is no assurance thereof. In fact, for nonlinear problems, there will often be multiple solutions. (See below.)
Worse, the equations are mostly quadratic in the variables. So the system would correspond to a quite high order polynomial equation, on the order of 25. So no exact solution is available in any event, since the effective degree is greater than 5.
At best you can solve for numerical solutions, using a tool like lsqnonlin or fsolve, ASSUMING that you will provide values for all known variables. If they are left as symbolic variables, you will fail.
There will be many such solutions, so different starting values will yield different solutions. I describe the idea of a basin of attraction in my optimization tips and tricks doc on the file exchange. Effectively, if you start an optimizer anywhere in the basin of a given solution, it will converge to that solution. Such basins will not in general be convex sets, since there will be many solutions.
Edit: I talked about an effective degree before. With polynomial problems as we have here, suppose we had TWO quadratic equations in TWO unknowns. A "simple" version of your problem, sort of. The idea would be to use the quadratic formula to solve for one variable in one of the equations. Then substitute back into the other equation. This will generally yield a FOURTH order polynomial problem to solve. So a system of two quadratic equations in two unknowns is equivalent to an effective total order of 4.
A system with a dozen quadratic equations, plus some linear equations, will be equivalent to at least an effective order of 25 or so. This tells me there will be no symbolic solution to be found, unless you were very lucky. In real life, you never get lucky on these things. (Were it homework, you often get lucky.)
  댓글 수: 6
John D'Errico
John D'Errico 2014년 6월 5일
As I said. Use fsolve (or lsqnonlin, depending on what toolboxes you have.) My writing it for you won't help you to learn how to use fsolve. It will just solve your immediate problem. The doc for fsolve has examples anyway.
Remember what I said before, that depending on the starting values you choose, you will get different solutions. But since any solution IS a solution, you don't care, unless you need all of the solutions. In that case, expect some work chasing them all down.
Sameer
Sameer 2014년 6월 5일
Hello John...I have already written the funtion and its working but what I am not able to understand is the passing of the initial assumed values.....as for zeros the answers are quite weird and when i am using ones then it gives the answers but with the following statement
Solver stopped prematurely.
fsolve stopped because it exceeded the function evaluation limit, options.MaxFunEvals = 1400 (the default value).
So I am not able to understand what should I do, what to pass during the usage of fsolve
Can you please clarify how can I seclect the passing values?
any further guidance is highly appreciated.
Regards

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Systems of Nonlinear Equations에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by