Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: FindRoot / Jacobian

  • To: mathgroup at smc.vnet.net
  • Subject: [mg84307] Re: FindRoot / Jacobian
  • From: "Steve Luttrell" <steve at _removemefirst_luttrell.org.uk>
  • Date: Tue, 18 Dec 2007 05:34:42 -0500 (EST)
  • References: <fk73ub$6el$1@smc.vnet.net>

Here is how you can solve your problem:

solU=(E^((-I)*p-(2*ArcTan[Tan[q/2]/Sqrt[3]])/Sqrt[3])*(1+E^((2*I)*p)))/2
solV=Sin[p]/E^((2*ArcTan[Tan[q/2]/Sqrt[3]])/Sqrt[3])

solutions=Table[FindRoot[solU==N[u]&&solV==N[v],{{p,0},{q,0}}],{u,-\[Pi],\[Pi],(2\[Pi])/70},{v,-\[Pi],\[Pi],(2\[Pi])/70}];

You can do a quick visualisation of the solutions with the following 
graphics:

Graphics[{Map[Point,#,{2}],Map[Line,#],Map[Line,Transpose[#]]}&[{p,q}/.solutions//Chop]]

Stephen Luttrell
West Malvern, UK

<sigmundv at gmail.com> wrote in message news:fk73ub$6el$1 at smc.vnet.net...
> Dear readers,
>
> Consider the following expressions:
>
> solU = (E^((-I)*p - (2*ArcTan[Tan[q/2]/Sqrt[3]])/Sqrt[3])*(1 +
> E^((2*I)*p)))/2
>
> solV = Sin[p]/E^((2*ArcTan[Tan[q/2]/Sqrt[3]])/Sqrt[3])
>
> I then want to solve the system of equations (u = solU, v = solV)
> numerically on a grid (u,v) \in (-pi,pi). For that purpose I use
> FindRoot, and execute the following:
>
> u1 = Pi; du = 2*Pi/70;
>
> uvPts1 = Flatten[Table[{u, v}, {u, u1 + du, u2 - du, du}, {v, v1 +
> du,
>    v2 - du, dv}], 1];
>
> uvNew = {p, q} /. Table[FindRoot[{solU == uvPts1[[i, 1]], solV ==
> uvPts1[[i, 2]]}, {p,
>    -2}, {q, 1+I}], {i, Length[uvPts1]}];
>
> This gives me a p-value and a q-value for each point on the grid, no
> problem. However, I get the wrong solution at some of the grid points.
> Since I get several of the following type of messages, this would be
> expected:
>
> FindRoot::jsing:Encountered a singular Jacobian at the point {p,q} = \
> {-10.4516+0.784848 \[ImaginaryI],108.092+104.013 \[ImaginaryI]}. Try \
> perturbing the initial point(s). >>
>
> Then I would like to know if there is any 'nice' way to handle these
> 'singular Jacobian' errors? Does there exist any kind of 'event
> handler', as in NDSolve?
>
> Kind regards,
> Sigmund Vestergaard
> 



  • Prev by Date: Re: Table[Plot[]]doesn't work as it should in v6
  • Next by Date: Re: Conditionals -- what is "fastest" way to evaluate
  • Previous by thread: FindRoot / Jacobian
  • Next by thread: Re: FindRoot / Jacobian