455,446 Members | 1,556 Online Need help? Post your question and get tips & solutions from a community of 455,446 IT Pros & Developers. It's quick & easy.

# solving equation system

 P: n/a 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. Jul 17 '06 #1
9 Replies

 P: n/a On 2006-07-17, TG

 P: n/a Ben C wrote: On 2006-07-17, TG = 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. Jul 17 '06 #3

 P: n/a 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. Jul 17 '06 #4

 P: n/a 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. Jul 17 '06 #5

 P: n/a 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. Jul 17 '06 #6

 P: n/a In article <11*********************@b28g2000cwb.googlegroups. com>, TG 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 = Omin(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. Jul 17 '06 #7

 P: n/a On 2006-07-17, TG Ben C wrote: >On 2006-07-17, TG = O How about this: 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! Jul 17 '06 #8

 P: n/a 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 Jul 17 '06 #9

 P: n/a 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 Jul 18 '06 #10

### This discussion thread is closed

Replies have been disabled for this discussion. 