2
$\begingroup$

I am trying to solve the following equation

Solve[x ϵ + (-ϵ) x^-ϵ - c (-ϵ) x^(-ϵ - 1) == 0, x]

Yields

Solve::nsmet: This system cannot be solved with the methods available to Solve. >>

What can I do to solve this equation?

$\endgroup$
  • $\begingroup$ For numeric ϵ you could use FindRoot. $\endgroup$ – Daniel Lichtblau Mar 28 '15 at 19:42
  • $\begingroup$ you should define all the symbols except x. thit is the simplyfiyed equation c + x^(2 + \[Epsilon]) == x $\endgroup$ – k_v Mar 28 '15 at 19:43
  • 2
    $\begingroup$ Since you are trying to solve a polynom, whose degree depends on an arbitrary constant, there should also be an arbitrary number of roots, i.e.: There might not be an "easy" closed solution at all. $\endgroup$ – Jinxed Mar 29 '15 at 0:09
6
$\begingroup$

In short: There is no closed solution, but you can get solutions for specific values of ϵ.

Detailed explanation:

First, we can transform your equation into a more compact form by using FullSimplify (and replacing ϵ with e for less typing within Mathematica):

eq = (x ϵ + (-ϵ) x^-ϵ - c (-ϵ) x^(-ϵ - 1) /. ϵ -> e //FullSimplify) == 0
(* e x^(-1 - e) (c - x + x^(2 + e)) == 0 *)

Now we continue by evaluating both factor components separately: First the easy one (e x^(-1 - e) == 0) using Reduce, giving us the conditions for x and e, under which this part becomes 0:

Reduce[e x^(-1 - e) == 0, x]
(* (x != 0 && e == 0) || (Re[e] < -1 && x == 0) *)

Then to the second part c - x + x^(2 + e) == 0: This one already looks odd, since it comprises a polynom of degree varying with e, but why not try our luck with Reduce again? So:

Reduce[c - x + x^(2 + e) == 0, x]
(* Reduce::nsmet: This system cannot be solved with the methods available to Reduce. >> *)

Ah - bad luck! But why is that?

As a polyom's number of roots, which we are looking after by trying to solve for ==0, depends on the polynom's degree, there will be no closed solution, as the degree depends on e here.

How can this be proofed with Mathematica? E.g. by solving for some given values for e and counting the number of solutions for each specific value of e (i.e. the number of roots for each e):

Length /@ Table[Solve[c - x + x^(2 + e) == 0, x], {e, 1, 20}]
(* {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22} *)

As anticipated, the number of roots equals the polynom's degree, which is 2+e. Therefore, there will be no closed solution - even with e limited to the domain of positive integers.

In essence, your equation requires solving arbitrary-degree polynomials.

You therefore will need to solve for specific values for e to get results, e.g. by using the Table-method I outlined above.

Even then, starting from e==3, this involves solving a quintic (and higher) polynom(s), so Mathematica will give you solutions based on the generic Root builtin, meaning you will only be able to get numeric results for specific c and e.

$\endgroup$
  • 1
    $\begingroup$ "In short" hits the point and "Detailed explanation" s exactly that +1! $\endgroup$ – mgamer Mar 29 '15 at 12:14
  • $\begingroup$ You rock! Great explanation! $\endgroup$ – zsljulius Apr 5 '15 at 2:55
  • $\begingroup$ @zsljulius: Thanks a lot! $\endgroup$ – Jinxed Apr 5 '15 at 6:55
5
$\begingroup$

In this case, I recommend Manipulate to investigate the function. Note as x, c and ϵ are used. With the information found You can start better studies

Manipulate[
 Plot[x ϵ + c x^(-1 - ϵ) ϵ - x^-ϵ ϵ
 , {x, -6., 6.}]
 , {c, -6., 6.}
 , {ϵ, -6, 6}]

enter image description here

enter image description here

enter image description here

$\endgroup$
1
$\begingroup$

For given numeric values of ϵ and c you can use FindRoot:

eq = x ϵ + (-ϵ) x^-ϵ - c (-ϵ) x^(-ϵ - 1) == 0;
FindRoot[eq /. {c -> 2, ϵ -> 3/4}, {x, 1}]
(* {x -> 1.38718} *)

For arbitrary analitycal values of ϵ and c the equation seems to be unsolvable. However, if you can threat ϵ as a small parameter (like in perturbation theory), I would suggest to find the solution as power series w.r.t. ϵ:

n = 2; (* number of terms in expansion *)
coeffs = Table[a[i], {i, 0, n - 1}];
rule = x -> coeffs.Table[ϵ^i, {i, 0, n - 1}] + O[ϵ]^n
Reduce[Thread[List @@ Normal[eq /. rule][[1]] == 0], {a[0], a[1], a[2]}]

As the result we have expressions for the first n series coeffients a[i].

$\endgroup$
1
$\begingroup$

First (for a given Epsilon):

eq = x ϵ + (-ϵ) x^-ϵ - c (-ϵ) x^(-ϵ - 1) == 0

then:

FullSimplify @ eq

Thus it suffices to solve:

c - x + x^(2 + ϵ) == 0

Then

sol = Solve[(c - x + x^(2 + ϵ)) == 0, x]

delivers the solutions. If you want the solutions for e.g.,c = 5, then

c = 5; x /. sol

will show them.

When Epsilon is is not given, Solve is not able to find the solutions.

$\endgroup$
  • 3
    $\begingroup$ Hmm. With my Mathematica 10.0.2 here, your Solve-line still leads to the same error message: "This system cannot be solved with the methods available to Solve." Would you mind putting the actual solutions you got into the answer? $\endgroup$ – Jinxed Mar 28 '15 at 23:55
  • 1
    $\begingroup$ Ditto for V9.0.1. I don't understand how this answer has received three upvotes (to date). $\endgroup$ – Michael E2 Mar 29 '15 at 1:51
  • 1
    $\begingroup$ Ditto for V8.0.4. V7 gives a slightly different error, "Solve::tdep: The equations appear to involve the variables to be solved for in an essentially non-algebraic way." What version are you using? $\endgroup$ – Michael E2 Mar 29 '15 at 3:15
  • $\begingroup$ I did not add the result of FullSimplify@eq (but it is quite obvious). It is ` x^(-1 - [Epsilon]) (c - x + x^(2 + [Epsilon])) [Epsilon] == 0. So one solution is (\[Epsilon]>0) x=0, the others one gets solving c - x + x^(2 + [Epsilon])==0`, which gives the result(s). $\endgroup$ – mgamer Mar 29 '15 at 10:46
  • $\begingroup$ @mgamer: But c-x+x^(2+\[Epsilon])==0 is exactly the part, which is not solvable with all Mathematica-versions tested so far (see comments above)! If you managed to get a solution, please post it in your answer. Otherwise, please revise your answer. $\endgroup$ – Jinxed Mar 29 '15 at 10:51
1
$\begingroup$

The new in M12 function AsymptoticSolve can be used to find the perturbation expansions. First, simplify your equation:

eqn = x ϵ+(-ϵ) x^-ϵ-c (-ϵ) x^(-ϵ-1) == 0;
FullSimplify[eqn]

x^(-1 - ϵ) (c - x + x^(2 + ϵ)) ϵ == 0

So, assuming $x\neq 0$ and $\epsilon \neq 0$, we have:

seqn = FullSimplify[eqn, x != 0 && ϵ != 0]

c + x^(2 + ϵ) == x

The solution for x when ϵ is 0 can be found from:

roots = Values @ Solve[seqn /. ϵ -> 0, x]

{{1/2 (1 - Sqrt[1 - 4 c])}, {1/2 (1 + Sqrt[1 - 4 c])}}

Choosing the first root and using AsymptoticSolve:

AsymptoticSolve[seqn, {x, roots[[1]]}, {ϵ, 0, 1}]

{{x -> 1/2 (1 - Sqrt[1 - 4 c]) + (1/( 2 Sqrt[1 - 4 c]))ϵ (-Log[2] + Sqrt[1 - 4 c] Log[2] + 2 c Log[2] + Log[1 - Sqrt[1 - 4 c]] - Sqrt[1 - 4 c] Log[1 - Sqrt[1 - 4 c]] - 2 c Log[1 - Sqrt[1 - 4 c]])}}

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.