       Re: Overdetermined Matrix Equation Subject to Constraints

• To: mathgroup at smc.vnet.net
• Subject: [mg122410] Re: Overdetermined Matrix Equation Subject to Constraints
• From: Ray Koopman <koopman at sfu.ca>
• Date: Thu, 27 Oct 2011 06:34:24 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com
• References: <j89uud\$75\$1@smc.vnet.net>

```On Oct 26, 2:43 pm, Meaghan <freecaptive6... at gmail.com> wrote:
> Hi all,
>
> I have an overdetermined matrix equation that I have been solving with
> LeastSquares[].  However, LeastSquares[] gives me solutions that don't
> fit my constraints (that all components of x >= 0).
> I know that Minimize[] and NMinimize[] minimize equations subject to
> constraints, but I cannot determine if they will minimize a *matrix*
> equation.
> Any ideas?
>
> Here is some sample code:
>
> referenceData = {{1.022299535`, 1.01884186`}, {0.15627907`,
>     0.716793488`}, {0.014162791`, 0.087627628`}};
> testData = {0.546942055`, -0.126062557`, -0.338173002`};
> Print["LeastSquares soln: ", LeastSquares[referenceData, testData]];
>
> unknown = {x, y};
> Print["Minimize soln: ",
>   Minimize[{referenceData.unknown - testData,
>     unknown[] >= 0 && unknown[] >= 0}, unknown]];

You need to minimize the sum of squares:

Clear[x,y]; unknown = {x, y};
Minimize[{#.#&[referenceData.unknown - testData],
unknown[] >= 0 && unknown[] >= 0}, unknown] //Chop

{0.16218, {x->0.499802, y->0}}

This does the same thing but is more general:

Clear[x]; unknown = Array[x, Length@First@referenceData];
Minimize[{#.#&[referenceData.unknown - testData],