I define a function $f(x)$ as

f[x_] := x*Exp[-x] - 0.16064;

Then I set a variable actualroot to the function FindRoot, starting at $x=3$

actualroot = FindRoot[f[x], {x, 3}]

and get the output

{x -> 2.88976}

Later, I want to compare this output with a different estimate ($x\approx -2.88673$) of the root, and calculate error, so I have

Abs[(actualroot - estimateroot)/actualroot]

and I get this output:

Abs[(-2.88673 + (x -> 2.88976))/(x -> 2.88976)]

How do I get Mathematica to evaluate this expression? I also tried using N[] function to give me a decimal evaluation, but it didn't work.

  • 2
    $\begingroup$ You can use actualroot = FindRoot[f[x], {x, 3}][[1, 2]] $\endgroup$ – b.gates.you.know.what Jul 13 '12 at 20:27

The usual way to get the values of the results of FindRoot, Solve, etc., which are lists of Rule is the following:

f[x_] := x E^(-x) - 0.16064
actualroot = x /. FindRoot[f[x], {x, 3}]
estimateroot = -2.88673;
Abs[(actualroot - estimateroot)/actualroot]



  • $\begingroup$ Thanks, new to mathematica, just diving in $\endgroup$ – DWC Jul 13 '12 at 21:05
  • 3
    $\begingroup$ @DWC well, then it's probably good to know that /. is shorthand for ReplaceAll. Apart from its doc page reading this tutorial on transformation rules will prove fruitful. $\endgroup$ – Sjoerd C. de Vries Jul 13 '12 at 21:51

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