MathGroup Archive 2008

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

Search the Archive

Re: NonlinearFit of an "implicit" function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg94363] Re: NonlinearFit of an "implicit" function
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Thu, 11 Dec 2008 03:44:55 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <gho399$77$1@smc.vnet.net>

kretch wrote:

> I need to perform a non linear fit of a function which is not provided
> directly i.e. instead of the function having the explicit form
> f(x,y,z) = ...
> I have an implicit  form
> 1/(f(x,y,z) + x^2)^3 = ...
> 
> Now, I know I can manipulate the function so that I get an explicit
> form, but since I have a variety of functions (>100), this would be
> very tedious and error-prone.
> 
> So my question is this:
> I'd like to get the explicit form of the function by "Solve" ing it,
> then run the fit on the explicit form. But for some reason, the exact
> syntax eludes me and I get error messages.

Say that the implicit equation is imp = 1/(f[x, y, z] + x^2)^3 == x y z, 
then you can evaluate Solve[imp, f[x, y, z]] to get the solution(s), if 
it exists, in explicit form.

Now, automatizing the process might be really difficult: below are 
several points to keep in mind.

.1 In general, several functions are required in explicit form to 
describe the curve. For instance, here is the equation of a circle of a 
radius one, centered at the origin. (One implicit form, but two explicit 
forms.)

   In[1]:= imp = x^2 + f[x]^2 == 1;
   Solve[imp, f[x]]

   Out[2]= {{f[x] -> -Sqrt[1 - x^2]}, {f[x] -> Sqrt[1 - x^2]}}

.2 The conversion is not always feasible.

   In[3]:= imp = Exp[x*f[x]] + Sqrt[x + f[x]] == 1;
   Solve[imp, f[x]]

   During evaluation of In[3]:= Solve::tdep: The equations appear to \
   involve the variables to be solved for in an essentially \
   non-algebraic way. >>

   Out[4]= Solve[E^(x f[x]) + Sqrt[x + f[x]] == 1, f[x]]

.3 You can also get complex-valued functions.

   In[5]:= imp = 1/(f[x, y, z] + x^2)^3 == c;
   Solve[imp, f[x, y, z]]

   Out[6]= {{f[x, y, z] ->
      1/c^(1/3) - x^2}, {f[x, y, z] -> -((1 - I Sqrt[3])/(2 c^(1/3))) -
       x^2}, {f[x, y, z] -> -((1 + I Sqrt[3])/(2 c^(1/3))) - x^2}}

> Can somebody share an example of fitting an implicit function?
> 
> Thanks
> Kretch
> 
> 

Regards,
-- Jean-Marc


  • Prev by Date: Re: Clever Tricky Solutions
  • Next by Date: Re: Run initialization cells before dynamic cells
  • Previous by thread: NonlinearFit of an "implicit" function
  • Next by thread: Re: NonlinearFit of an "implicit" function