Ask Your Question
1

Numerically Solve a Symbolic Equation

asked 2017-06-16 21:23:14 -0600

happys5 gravatar image

Hello,

In truth, I am feeling like an idiot but it has been a long while since I have done math.

What I want to do is find the intersection points between a parabola and a circle. After I put both equations in x and set them equal, I have:

var('y')
solve (sqrt(16-x^2) - 1/4*x^2-1.28==0, x)

Problem is, I get the following for answers:

[x == -2/5*sqrt(25*sqrt(-x^2 + 16) - 32), x == 2/5*sqrt(25*sqrt(-x^2 + 16) - 32)]

If I need to numerically solve the equation, which I think I must do, how do I do it in Sage?

edit retag flag offensive close merge delete

3 answers

Sort by ยป oldest newest most voted
2

answered 2017-06-17 04:17:02 -0600

philipp7 gravatar image

updated 2017-06-17 04:17:30 -0600

Hello!

You can try the option to_poly_solve which gives you:

sage: eqn = sqrt(16-x^2) - (1/4)*x^2-1.28==0;
sage: sol = solve(eqn, x, to_poly_solve=true); sol 
[x == -2/5*sqrt(2)*sqrt(5*sqrt(157) - 41),  x == 2/5*sqrt(2)*sqrt(5*sqrt(157) - 41)] 
sage: n(sol[0].rhs())
-2.63209850458274 
sage: n(sol[1].rhs())
2.63209850458274

Another possiblity would be to plot the function for getting the number and estimate values for the solutions. Then you can try to find those solutions using find_roots:

sage: eqn.find_root(-3,-2)
-2.632098504582708
sage: eqn.find_root(2,3)
2.632098504582708

Kind regards

Philipp

edit flag offensive delete link more

Comments

Thanks, Philipp!

happys5 gravatar imagehappys5 ( 2017-06-17 13:37:01 -0600 )edit
0

answered 2017-10-21 09:07:42 -0600

dan_fulea gravatar image

Alternatively, we can solve the corresponding polynomial equation over an explicitly declared numeric field:

sage: ( (16-x^2) - (1/4*x^2 + 1.28)^2 ).roots( ring=RR )
[(-2.63209850458273, 1), (2.63209850458273, 1)]

sage: ( (16-x^2) - (1/4*x^2 + 1.28)^2 ).roots( ring=RealField(300), multiplicities=False )
[-2.63209850458273472222645327989825104599024721420142212754062239578568429138110784195156834,
 2.63209850458273472222645327989825104599024721420142212754062239578568429138110784195156834]

Let us compare with the values obtained in the spirit of the answer of philipp7...

sage: [ sol[x].n() 
....:   for sol in solve( sqrt(16-x^2) - 1/4*x^2-1.28 == 0, x
....:                     , solution_dict=True
....:                     , to_poly_solve=True ) ]
[-2.63209850458273, 2.63209850458273]
edit flag offensive delete link more
0

answered 2017-10-21 04:09:42 -0600

updated 2017-10-21 05:58:57 -0600

Hello,

I tried a different way of doing the same. In the code below, eq1 is the circle and eq2 is the parabola. You'll find the solution you are looking for.

x, y = var('x, y');
eq1 =  x^2 + y^2 == 16; show(eq1);
eq2 = y == 1/4*x^2-1.28; show(eq2);
eqs = [eq1, eq2];
sol = solve(eqs, x, y); show(sol);

Hope this helped.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2017-06-16 21:23:14 -0600

Seen: 172 times

Last updated: Oct 21