I assume (sorry if I'm being wrong) that this is some kind of homework. So I've written an answer as guidance. You'll have to work out some details.
If your problem is three dimensional, you can write for example:
dist[x0_,x1_] := (x0-x1).(x0-x1);
power[x0_,x1_]:= c/dist[x0,x1];
findAnt[{{pow1_,pos1_},{pow2_,pos2_},{pow3_,pos3_}}]:=
Solve[power[{x0,y0,z0},pos1]==pow1 &&
power[{x0,y0,z0},pos2]==pow2 &&
power[{x0,y0,z0},pos3]==pow3,{x0,y0,z0}];
and find the antenna position for a certain configuration as:
findAnt[{{c/2, {1, 0, 0}}, {c/2, {0, 1, 0}}, {c/2, {0, 0, 0}}}]
(*
-> {{x0 -> 1/2, y0 -> 1/2, z0 -> -Sqrt[(3/2)]},
{x0 -> 1/2, y0 -> 1/2, z0 -> Sqrt[3/2]}}
*)
Or, if you want to write the function in more a compact form:
findAnt[l:{{_, _}..}]:=Solve[And@@(power[{x0,y0,z0}, #[[2]]] == #[[1]]&/@ l), {x0,y0,z0}];
Now you can visualize the possible antenna positions and the measurement points, along with their equipotential surfaces like this:
l = {{c/2, {1, 1, 0}}, {c/4, {0, 1, 1}}, {c/4, {0, 0, 0}}};
sol = findAnt[l];
Graphics3D[{PointSize[.05], Blue, Point[l[[All, 2]]],
Red, Point[{x0, y0, z0} /. sol],
Green, Opacity[.2], Specularity[White, 1],
{Sphere[{x0,y0,z0} /.sol[[1]], EuclideanDistance[{x0, y0, z0} /. sol[[1]], #]],
Sphere[{x0,y0,z0} /.sol[[2]], EuclideanDistance[{x0, y0, z0} /. sol[[2]], #]]}&/@
l[[All, 2]]}]
Edit:
If the power of the antenna is unknown, you can only solve a 2D problem is still easy to solve:
(*assuming an antenna of unknown power*)
dist[x0_, x1_] := (x0 - x1).(x0 - x1);
power[x0_, x1_] := c/dist[x0, x1];
findAnt[l:{{_, _} ..}] := Solve[And@@(power[{x0, y0}, #[[2]]] == #[[1]]&/@ l), {x0, y0, c}];
l = {{1/2, {1, 0}}, {1/15, {0, 3}}, {1/2, {0, 0}}};
sol = findAnt[l];
Graphics[
{PointSize[.05], Blue, Point[l[[All, 2]]], Red, Point[{x0, y0} /. sol],
Green, Dashed,
{Circle[{x0, y0}/. sol[[1]], EuclideanDistance[{x0, y0}/. sol[[1]], #]],
Circle[{x0, y0}/. sol[[2]], EuclideanDistance[{x0, y0}/. sol[[2]], #]]} &/@ l[[All, 2]]}]

And you can show the equipotential curves and the measurement positions for the above solution like this:

Show[Plot3D[{power[{x0, y0}, {x, y}] /. sol[[1]],
power[{x0, y0}, {x, y}] /. sol[[2]]}, {x, -5, 5}, {y, -5, 5},
Mesh -> {{1/2, 1/15}}, PlotRange -> {0, .6},
ClippingStyle -> Opacity[0.5], MeshFunctions -> {#3 &},
PlotStyle -> {{Green, Directive[Opacity[.3], Specularity[3]]},
{Red, Directive[Opacity[.4], Specularity[3]]}}],
Graphics3D[{PointSize[.03], Blue,
Point@Join[#, {power[{x0, y0}, #]}] & /@ l[[All, 2]] /. sol[[1]]}]]
Finally, I want to mention a method that is probably out of the scope of your homework, but can take advantage of the utilization of more than three sensors by using minimization techniques on the potential parameters:
model = c/ ((x0 - x)^2 + (y0 - y)^2 + (z0 - z)^2);
(* data is {x, y, z, power} *)
data = {{1, 0, 0, 1/2}, {0, 1, 0, 1/2}, {0, 0, 0, 1/2}};
fit = NonlinearModelFit[data, model, {c, x0, y0, z0}, {x, y, z}];
fit["BestFitParameters"]
(*
-> {c -> 1.25371, x0 -> 0.5, y0 -> 0.5, z0 -> 1.41684}
*)
And now you can test that the solution really fits the input data:
model /. fit["BestFitParameters"] /. Thread[{x, y, z} -> #] & /@ data[[All, 1 ;; 3]]
(*
-> {0.5, 0.5, 0.5}
*)
Read the FAQs
! 3) When you see good Q&A, vote them up byclicking the gray triangles
, because the credibility of the system is based on the reputation gained by users sharing their knowledge. ALSO, remember to accept the answer, if any, that solves your problem,by clicking the checkmark sign
` $\endgroup$ – chris Oct 27 '12 at 20:49