Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Sage's default solver (i. e. Maima's) indeed fails to solve your system. But Sympy's does. After running :

var('k, c, r')
# Keep these constant symbolic, for clarity's and generality's sake...
# r = 0.2
# c = 0.7
# r = 1/5
# c = 7/10
fp1 = k*x^3
dfp1 = fp1.derivative(x)
fp2 = sqrt(r^2-(x-c)^2)
dfp2 = derivative(fp2, x)
fp3 = -k*(x-1)^3
# Unused for now...
dfp3 = derivative(fp3, x)
sys = [fp1 == fp2, dfp1 == dfp2]

we get two solutions :

sage: SS = solve(sys, (x, k), algorithm="sympy") ; SS
[{k: 16*sqrt(-(c - sqrt(c^2 + 24*r^2))^2 + 16*r^2)/(5*c - sqrt(c^2 + 24*r^2))^3,
  x: 5/4*c - 1/4*sqrt(c^2 + 24*r^2)},
 {k: 16*sqrt(-(c + sqrt(c^2 + 24*r^2))^2 + 16*r^2)/(5*c + sqrt(c^2 + 24*r^2))^3,
  x: 5/4*c + 1/4*sqrt(c^2 + 24*r^2)}]

Checking these solutions isn't absolutely trivial, Sage having simplification problems with radical expressions :

sage: [all([bool(u.subs(s)) for u in sys]) for s in SS]
[False, False]

But we can check that the difference of left- and right-hand sides of each equation is indeed null for each solution :

sage: [all([(u.lhs()-u.rhs()).subs(s).canonicalize_radical().is_zero() for u in sys]) for s in SS]
[True, True]

Solving and checking in Mathematica is left to the reader as an exercise... Also left to the reader is to check that none of these solutions satisfies fp3 == dfp3...

HTH,