The documentation explicitly mentions that FindRoot supports vector
variables. So what's wrong here? You'll immediately see the problem if
you evaluate the equation alone:
In[6]:= x - {1, 2, 3} == {0, 0, 0}
Out[6]= {-1 + x, -2 + x, -3 + x} == {0, 0, 0}
Plus[] has attribute Listable which means that it will auto-thread over
lists.
## What is the workaround?
One way is defining a function to use in FindRoot:
f[x : {__?NumericQ}] := x - {1, 2, 3}
FindRoot[f[x], {x, {1, 1, 1}}]
(* ==> {x -> {1., 2., 3.}} *)
The special pattern used in the definition of f[] is essential: it
prevents f[] from evaluating when symbols (not numbers) are passed to it.
## This is good when f[] is a big function, but are there easier
workarounds for tiny functions this this one?
I am not aware of any, but I'd very much like to see some! (Looking
forward to the answers)
--
Szabolcs Horvát
Visit Mathematica.SE:
http://mathematica.stackexchange.com/