# Setting a variable equal to the output of FindRoot [duplicate]

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.

• You can use actualroot = FindRoot[f[x], {x, 3}][[1, 2]] – 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]


Output:

2.88976
1.99895

• Thanks, new to mathematica, just diving in – DWC Jul 13 '12 at 21:05
• @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. – Sjoerd C. de Vries Jul 13 '12 at 21:51