Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2012

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

Search the Archive

Re: Can I solve this system of nonlinear equations?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg125256] Re: Can I solve this system of nonlinear equations?
  • From: "Stephen Luttrell" <steve at _removemefirst_stephenluttrell.com>
  • Date: Fri, 2 Mar 2012 07:50:27 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jil5ld$rrm$1@smc.vnet.net>

equations = {(((c - a)/0.002) - (0.995018769272803 + h*b)) ==
    0, (((d - b)/0.002) - (0.990074756047929 + h*c)) ==
    0, (((e - c)/0.002) - (0.985167483257382 + h*d)) ==
    0, (((f - d)/0.002) - (0.980296479563062 + h*e)) ==
    0, (((g - e)/0.002) - (0.975461279165159 + h*f)) ==
    0, (((-1*e + 8*d - 8*b + a)/(12*0.001)) - (0.990074756047929 +
        h*c)) ==
    0, (((-1*f + 8*e - 8*c + b)/(12*0.001)) - (0.985167483257382 +
        h*d)) ==
    0, (((-1*g + 8*f - 8*d + c)/(12*0.001)) - (0.980296479563062 +
        h*e)) == 0};

Construct an objective function that is minimised when all of the equations 
are satisfied. The sum of the squares of the left hand sides of all of the 
equations (whose right hand sides are all zero) will achieve the desired 
effect.

objective = Total[eqns /. (x : _) == 0 :> x^2]

giving ...

(-0.995019 + 500. (-a + c) - b h)^2 + (-0.990075 + 500. (-b + d) -
   c h)^2 + (-0.990075 + 83.3333 (a - 8 b + 8 d - e) -
   c h)^2 + (-0.985167 + 500. (-c + e) - d h)^2 + (-0.985167 +
   83.3333 (b - 8 c + 8 e - f) - d h)^2 + (-0.980296 + 500. (-d + f) -
    e h)^2 + (-0.980296 + 83.3333 (c - 8 d + 8 f - g) -
   e h)^2 + (-0.975461 + 500. (-e + g) - f h)^2

Minimise the objective function.

solution = NMinimize[obj, {a, b, c, d, e, f, g, h}]

giving ...

{3.94032*10^-11, {a -> 0.314882, b -> 0.315979, c -> 0.317109,
  d -> 0.318197, e -> 0.319318, f -> 0.320396, g -> 0.321509,
  h -> 0.374577}}

which has a satisfyingly small value of the objective function at the found 
solution.

I'll bet there are other ways of solving this particular problem, but 
minimising an appropriate objective function is a very useful general 
approach.

-- 
Stephen Luttrell
West Malvern, UK

"Andy" <andy732a at gmail.com> wrote in message 
news:jil5ld$rrm$1 at smc.vnet.net...
> I'm dealing with systems of nonlinear equations that have 8 equations
> and 8 unknowns.  Here's an example:
>
> Solve[{(((c - a)/0.002) - (0.995018769272803 + h*b)) == 0,
>  (((d - b)/0.002) - (0.990074756047929 + h*c)) == 0,
>  (((e - c)/0.002) - (0.985167483257382 + h*d)) == 0,
>  (((f - d)/0.002) - (0.980296479563062 + h*e)) == 0,
>  (((g - e)/0.002) - (0.975461279165159 + h*f)) == 0,
>  (((-1*e + 8*d - 8*b + a)/(12*0.001)) - (0.990074756047929 + h*c)) ==
> 0,
>  (((-1*f + 8*e - 8*c + b)/(12*0.001)) - (0.985167483257382 + h*d)) ==
> 0,
>  (((-1*g + 8*f - 8*d + c)/(12*0.001)) - (0.980296479563062 + h*e)) ==
> 0}, {a, b, c, d, e, f, g, h}]
>
> Whenever I try this, Mathematica 7 just returns the empty set {}.  How
> can I tell if this is unsolvable?  Shouldn't I at least be able to get
> a numerical approximation with NSolve?  I've tried using stochastic
> optimization to get approximate answers but every method gives poor
> results, and that's why I would like to at least approximately solve
> this if possible.  Thanks very much for any help~
> 




  • Prev by Date: Re: Why no OpenCL output on iMac OS X Lion?
  • Next by Date: Engineering requests
  • Previous by thread: Re: Can I solve this system of nonlinear equations?
  • Next by thread: Re: Can I solve this system of nonlinear equations?