Velocity Reviews > solving equation system

# solving equation system

TG
Guest
Posts: n/a

 07-17-2006
Hi there.

Anyone knows how to use numpy / scipy in order to solve this ?

* A is an array of shape (n,)
* X is a positive float number
* B is an array of shape (n,)
* O is an array of shape (n,) containing only zeros.

A.X - B = O
min(X)

thanks.

Ben C
Guest
Posts: n/a

 07-17-2006
On 2006-07-17, TG <(E-Mail Removed)> wrote:
> Hi there.
>
> Anyone knows how to use numpy / scipy in order to solve this ?
>
> * A is an array of shape (n,)
> * X is a positive float number
> * B is an array of shape (n,)
> * O is an array of shape (n,) containing only zeros.
>
> A.X - B = O
> min(X)

Are we solving for A, B or X? And what do you mean by min(X)?

If we're solving for X there will be many combinations of A and B for
which there is no solution.

Cameron Laird
Guest
Posts: n/a

 07-17-2006
In article <(E-Mail Removed). com>,
TG <(E-Mail Removed)> wrote:
>Hi there.
>
>Anyone knows how to use numpy / scipy in order to solve this ?
>
>* A is an array of shape (n,)
>* X is a positive float number
>* B is an array of shape (n,)
>* O is an array of shape (n,) containing only zeros.
>
>A.X - B = O
>min(X)
>
>thanks.
>

In general, no X solves the equality, so it's easy to minimize X.

If A is a non-zero positive multiple of B, exactly one X solves
the equality, so it's again easy to minimize.

If A and B vanish, choose X as the smallest positive float.

I suspect you intended a slightly different problem. It's hard
to guess what it is.

TG
Guest
Posts: n/a

 07-17-2006

Ben C wrote:
> On 2006-07-17, TG <(E-Mail Removed)> wrote:
> > Hi there.
> >
> > Anyone knows how to use numpy / scipy in order to solve this ?
> >
> > * A is an array of shape (n,)
> > * X is a positive float number
> > * B is an array of shape (n,)
> > * O is an array of shape (n,) containing only zeros.
> >
> > A.X - B = O
> > min(X)

>
> Are we solving for A, B or X? And what do you mean by min(X)?
>
> If we're solving for X there will be many combinations of A and B for
> which there is no solution.

Sorry for the poor explanation. I'm trying to put it clear now.

i've got A and B. I'm looking for X. I made a mistake in my equation
:-/

It's more like :

A.X - B >= O

Well, maybe it will be much more simple if I explain the underlying
problem :

I have an array of N dimensions (generally 2).
- A first calculation gives me a set of integer coordinates inside this
array, which I will call the point W.
- After several other calculations, I've got a set of coordinates in
this N dimensional space that are floating values, and not bound to the
limits of my original N-array. This is the point L.

What I want to do is to translate the point L along the vector LW in
order to get a point L' which coordinates are inside the original
N-dimensional array. Then it will be easy to get the closest integer
coordinates from L'.

I'm not sure this is clear ... pretty hard to talk about maths in
english.

faulal@gmail.com
Guest
Posts: n/a

 07-17-2006

TG wrote:

> Hi there.
>
> Anyone knows how to use numpy / scipy in order to solve this ?
>
> * A is an array of shape (n,)
> * X is a positive float number
> * B is an array of shape (n,)
> * O is an array of shape (n,) containing only zeros.
>
> A.X - B = O
> min(X)
>
> thanks.

faulal@gmail.com
Guest
Posts: n/a

 07-17-2006

TG wrote:

> Hi there.
>
> Anyone knows how to use numpy / scipy in order to solve this ?
>
> * A is an array of shape (n,)
> * X is a positive float number
> * B is an array of shape (n,)
> * O is an array of shape (n,) containing only zeros.
>
> A.X - B = O
> min(X)
>
> thanks.

faulal@gmail.com
Guest
Posts: n/a

 07-17-2006

TG wrote:

> Hi there.
>
> Anyone knows how to use numpy / scipy in order to solve this ?
>
> * A is an array of shape (n,)
> * X is a positive float number
> * B is an array of shape (n,)
> * O is an array of shape (n,) containing only zeros.
>
> A.X - B = O
> min(X)
>
> thanks.

Ben C
Guest
Posts: n/a

 07-17-2006
On 2006-07-17, TG <(E-Mail Removed)> wrote:
>
> Ben C wrote:
>> On 2006-07-17, TG <(E-Mail Removed)> wrote:
>> > Hi there.
>> >
>> > Anyone knows how to use numpy / scipy in order to solve this ?
>> >
>> > * A is an array of shape (n,)
>> > * X is a positive float number
>> > * B is an array of shape (n,)
>> > * O is an array of shape (n,) containing only zeros.
>> >
>> > A.X - B = O
>> > min(X)

>>
>> Are we solving for A, B or X? And what do you mean by min(X)?
>>
>> If we're solving for X there will be many combinations of A and B for
>> which there is no solution.

>
> Sorry for the poor explanation. I'm trying to put it clear now.
>
> i've got A and B. I'm looking for X. I made a mistake in my equation
>:-/
>
> It's more like :
>
> A.X - B >= O

from random import *

def solve(A, B):
return reduce(max, (float(b) / a for a, b in zip(A, B)))

def test():
A = [random() for i in range(4)]
B = [random() for i in range(4)]

x = solve(A, B)

for a, b in zip(A, B):
print a, b, a * x - b

test()

This only works if all elements of both A and B are positive.

> Well, maybe it will be much more simple if I explain the underlying
> problem :
>
> I have an array of N dimensions (generally 2).
> - A first calculation gives me a set of integer coordinates inside this
> array, which I will call the point W.

Is this an array of points, or an array of values, that contains only
one point?

> - After several other calculations, I've got a set of coordinates in
> this N dimensional space that are floating values, and not bound to the
> limits of my original N-array. This is the point L.
>
> What I want to do is to translate the point L along the vector LW

Do you mean the vector L - W? (LW is a scalar, assuming dot product).

> in order to get a point L' which coordinates are inside the original
> N-dimensional array. Then it will be easy to get the closest integer
> coordinates from L'.

> I'm not sure this is clear ... pretty hard to talk about maths in
> english.

Not very clear to me I'm afraid!

Carl Banks
Guest
Posts: n/a

 07-17-2006
TG wrote:
> Hi there.
>
> Anyone knows how to use numpy / scipy in order to solve this ?
>
> * A is an array of shape (n,)
> * X is a positive float number
> * B is an array of shape (n,)
> * O is an array of shape (n,) containing only zeros.
>
> A.X - B = O
> min(X)
>
> thanks.

Looks like an incorrectly specified degenerate linear least squares
problem. The function numpy.linalg.linear_least_squares might be able
to do what you want.

Carl Banks

Carl Banks
Guest
Posts: n/a

 07-18-2006
TG wrote:
> Sorry for the poor explanation. I'm trying to put it clear now.
>
> i've got A and B. I'm looking for X. I made a mistake in my equation
> :-/
>
> It's more like :
>
> A.X - B >= O
>
> Well, maybe it will be much more simple if I explain the underlying
> problem :
>
> I have an array of N dimensions (generally 2).
> - A first calculation gives me a set of integer coordinates inside this
> array, which I will call the point W.
> - After several other calculations, I've got a set of coordinates in
> this N dimensional space that are floating values, and not bound to the
> limits of my original N-array. This is the point L.
>
> What I want to do is to translate the point L along the vector LW in
> order to get a point L' which coordinates are inside the original
> N-dimensional array. Then it will be easy to get the closest integer
> coordinates from L'.

I see. You have a simple linear programming problem. These can be
tricky in general. Because you only have one variable, it's probably
ok to use brute force. Try this:

given X, A, and B:

E = A*X-B
C = numpy.where(E<0,B/A,X)
X = min(C)

This assumes that you've designed the problem such that B/A would be
less than X where A*X-B<0 (if the opposite were true then of course
you'd need max(C)).

Carl Banks

 Posting Rules You may not post new threads You may not post replies You may not post attachments You may not edit your posts BB code is On Smilies are On [IMG] code is On HTML code is OffTrackbacks are On Pingbacks are On Refbacks are Off Forum Rules

 Similar Threads Thread Thread Starter Forum Replies Last Post dmitrey Python 0 10-25-2009 04:50 PM cnoe C Programming 10 02-03-2009 08:12 PM Lionel Java 14 06-23-2008 08:01 AM Shukla, Sunil Kumar VHDL 2 05-31-2005 01:57 AM greg.smith C Programming 3 09-24-2003 09:37 AM