solve vs. fsolve
    39 views (last 30 days)
  
       Show older comments
    
    byungkeuk cho
 on 27 May 2020
  
    
    
    
    
    Answered: Walter Roberson
      
      
 on 27 May 2020
            I am trying to solve non linear equations with solve or fsolve.
But I found difficulties in using them.
for example,
i would like to solve the equation below.
a^2 = 4
then, i can get the answer with the script below.
syms a;
eqn1 = a^2 == 4;
[a1] = solve(eqn1);
then, it gives me a = -2, 2
but when I used fsolve, it gives me only one value according to initial point.
this is the script.
fun = @test;
x0 = [1];
[a2] = fsolve(fun,x0)
function F = test(x)
F(1) = -x(1)^2 + 4;
end
if I set x0 as [-1], then it gives me another value but still only one value.
How can I get the all values with fsolve?
0 Comments
Accepted Answer
  Star Strider
      
      
 on 27 May 2020
        Give fsolve different starting points, one positive and one negative: 
eqn1 = @(x) x.^2 - 4;
for k = 1:2
    a2(k) = fsolve(eqn1, 5*(-1)^k);
end
a2
producing: 
a2 =
           -2            2
2 Comments
  Star Strider
      
      
 on 27 May 2020
				My pleasure.  
The easiest way would be to plot it, at least to find the real roots.  If some or all of the roots are complex, this becomes more difficult, however fsolve will take complex initial estimates and will use them to return complex roots.  In that situation, it will be necessary to experiment.  
More Answers (1)
  Walter Roberson
      
      
 on 27 May 2020
        Sometimes plotting and finding intervals by eye is not productive. 
In the general case, theory says that it is impossible to construct a function that will find all the zeros of every arbitrary function.
In practice, sometimes you can do good enough (your function might be well-enough behaved)
https://www.mathworks.com/matlabcentral/fileexchange/50223-bairstow-s-method-of-finding-all-roots-of-a-polynomial (for the case where you are dealing with a polynomial)
0 Comments
See Also
Categories
				Find more on Systems of Nonlinear Equations in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

