# Solve for intercepts in nonlinear eq

7 views (last 30 days)
Sarah Smith on 19 Jun 2020
Commented: Ameer Hamza on 19 Jun 2020
This question was flagged by Ameer Hamza
ok

madhan ravi on 19 Jun 2020
Hmm nice , knew you would do this. Why waste others time ?
Ameer Hamza on 19 Jun 2020
Original Question:
Title: Solve for intercepts in nonlinear eq
Text: I have these equations and need to solve them in matrix form and find the two intercepts. i was able to do this with linear eq but cant figure it out with nonlinear. my equations are y = 4 - ((x^2)/2) and y/2 = log10(x+8)

Ameer Hamza on 19 Jun 2020
This equation does not have a closed-form solution. Therefore, you can solve it using fsolve() or vpssolve() if you have symbolic toolbox since this equation has two solutions. The following code shows a way to get both roots by manually specifying a good initial guess.
syms x y
eq1 = y == 4 - ((x^2)/2);
eq2 = y/2 == log10(x+8);
y1 = solve(eq1, y);
y2 = solve(eq2, y);
eq = y1 == y2;
sol1 = vpasolve(eq, 2)
sol2 = vpasolve(eq, -2)

Show 1 older comment
Ameer Hamza on 19 Jun 2020
If the solution of four equations exist, the it can be find using following code
syms x y
y1 = 4 - ((x^2)/2);
y2 = 2*log10(x+8);
y3 = x;
y4 = (x+2)/2;
y_sol = vpasolve(std([y1 y2 y3 y4]))
Sarah Smith on 19 Jun 2020
I get the error "Empty sym: 0-by-1"
Ameer Hamza on 19 Jun 2020
Which MATLAB release are you using. The symbolic toolbox with R2020a is able to give a solution (y_sol=2). Alternatively, you can try a numerical solver
syms x y
y1 = 4 - ((x^2)/2);
y2 = 2*log10(x+8);
y3 = x;
y4 = (x+2)/2;
y = std([y1 y2 y3 y4]);
fun = matlabFunction(y);
y_sol = fsolve(fun, 0);