Re: How to feed a list of xy pairs into Solve to output xyz triplets
- To: mathgroup at smc.vnet.net
- Subject: [mg101203] Re: How to feed a list of xy pairs into Solve to output xyz triplets
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Fri, 26 Jun 2009 06:53:53 -0400 (EDT)
On 6/25/09 at 7:13 AM, WDWNORWALK at aol.com (Bill) wrote: >Let's say that I have a list of xy coordinate pairs: >list= {{1,2}},{3,1},{5,4},{6,3},{2,5}}. >Now I'd like to find xyz triplets using Solve for the equation 6*x + >4*y + z == 1. >xyz results: {{1,2,-13}},{3,1,-21},{5,4,-45},{6,3,-47},{2,5,-31}}. >(I used Solve 5 times.) >Question: How do I code that into Mathematica for a "one shot >output?" (Use Solve once.) Use Map to map Solve to each of the xy coordinate pairs. This is done as follows: In[2]:= ({x, y, z} /. Solve[{x == First@#, y == Last@#, 6*x + 4*y + z == 1}, {x, y, z}]) & /@ list Out[2]= {{{1, 2, -13}}, {{3, 1, -21}}, {{5, 4, -45}}, {{6, 3, -47}}, {{2, 5, -31}}} Here, I set up a pure function with Solve (the {x, y, z}/.Solve[{x == First@#, y == Last@#, 6*x + 4*y + z == 1}, {x, y, z}])& part) and mapped it to the elements of list (the /@ part). If you are unfamiliar with this technique you should read the documentation on pure functions and Map