[Date Index]
[Thread Index]
[Author Index]
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?**
| |