       FindRoot with vector domain

• To: mathgroup at smc.vnet.net
• Subject: [mg89208] FindRoot with vector domain
• From: "jwmerrill at gmail.com" <jwmerrill at gmail.com>
• Date: Thu, 29 May 2008 07:04:59 -0400 (EDT)

```I'm looking at a simple model of phase separation of a binary fluid in
the presence of an external field.  The following solves for the
volume fraction profile, \[Phi], of the component that feels the
field, given the strength of the field (parametrized by h), and the
strength of the interaction (parametrized by \[Chi]).

sol = With[{h = .5, \[Chi] = 1.9, x = Range[0, 1, .002]},
FindRoot[{Log[\[Phi]/(
1.0 - \[Phi])] + \[Chi] (1.0 - 2.0 \[Phi]) == (a - x/h),
Mean[\[Phi]] == 0.5}, {{\[Phi], Table[0.497, {501}]}, {a,
0.5/h}}]];

ListPlot[Re[\[Phi]] /.sol, PlotRange -> {0, 1}, DataRange -> {0, 1},
PlotLabel -> (Last[sol]), AxesLabel -> {x, \[Phi]}]

It's a bit magical to me that this works at all, having a vector as
one of the parameters to FindRoot, but it does.  However, moving the \
[Chi] term to the other side of the first equation causes it to go
down in flames:

sol = With[{h = .5, \[Chi] = 1.9, x = Range[0, 1, .002]},
FindRoot[{Log[\[Phi]/(
1.0 - \[Phi])] == (a - x/h) - \[Chi] (1.0 - 2.0 \[Phi]),
Mean[\[Phi]] == 0.5}, {{\[Phi], Table[0.497, {501}]}, {a,
0.5/h}}]];

FindRoot::nveq: The number of equations does not match the number of \
variables in FindRoot[{Log[\[Phi]/(1.+Times[<<2>>])]==(a-{<<501>>} \
Power[<<2>>])-1.9 \
(1.+Times[<<2>>]),Mean[\[Phi]]==0.5},{{\[Phi],<<1>>},<<1>>}]. >>
...

In fact, basically any rearrangement fails except for the first one I
showed.  Can anyone explain why these two ways of stating the problem
are different?  I'm afraid that next time I want to do something
similar, I won't be able to stumble across a way of writing things
that actually works.

Thanks,

JM

```

• Prev by Date: Re: NIntegrate
• Next by Date: Re: enquiry
• Previous by thread: FindFit with constraints is slow
• Next by thread: Deleting parts of notebooks programmatically