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: [mg125271] Re: Can I solve this system of nonlinear equations?
  • From: "Stephen Luttrell" <steve at _removemefirst_stephenluttrell.com>
  • Date: Sat, 3 Mar 2012 06:55:00 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jil5ld$rrm$1@smc.vnet.net> <jiqfpe$6c$1@smc.vnet.net>

Let me repost to fix the equations/eqns and objective/obj confusion I 
inadvertently introduced above:

eqns = {(((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};

obj = 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

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}}

-- 
Stephen Luttrell
West Malvern, UK

"Stephen Luttrell" <steve at _removemefirst_stephenluttrell.com> wrote in 
message news:jiqfpe$6c$1 at 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: Can I solve this system of nonlinear equations?
  • Next by Date: Re: 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?