Re: Dynamic application of several polynomials
- To: mathgroup at smc.vnet.net
- Subject: [mg130163] Re: Dynamic application of several polynomials
- From: Ray Koopman <koopman at sfu.ca>
- Date: Sat, 16 Mar 2013 03:14:19 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <khucju$91$1@smc.vnet.net>
On Mar 14, 10:46 pm, Samuel <samuelsique... at gmail.com> wrote: > I know how to get the 'resulting image' (y) from the application > of a certain function (f) (here represented as the coefficients of > a polynomial) over a certain interval (x): > > x = Range[27000]/27001.; > f = {25.62, -38.43, 21.81}/9; > y = Map[f[[1]]*#^3 + f[[2]]*#^2 + f[[3]]*# &, x]; > ListPlot[y] > > How do i get the 'resulting images' from the application of several > polynomials (represented as its coefficients) over a certain > interval (x)? > > Considering the representation of those several polynomials to be > something like: > > polynomials = Map[{9 - #[[1]] - #[[2]], #[[1]], #[[2]]} &, > Flatten[Outer[List, -{23.75, 28.02, 32.29, 36.56, 40.83, 45.1, > 49.37, 53.64, 57.91, 62.18}, {13.48, 15.9, 18.33, 20.75, 23.17, > 25.6, 28.02, 30.44, 32.87, 35.29}], 1]]/9; First, a better way to compute y for a single polynomial is y = ((f[[1]]*x + f[[2]])*x + f[[3]])*x which is faster (because it operates on the entire list x instead of individual elements of x) and usually more accurate (because it uses the Horner form of the polynomial). Then the following will give matrices f and y in which each row is analogous to f and y above: f2 = -{23.75, 28.02, 32.29, 36.56, 40.83, 45.1, 49.37, 53.64, 57.91, 62.18}; f3 = {13.48, 15.9, 18.33, 20.75, 23.17, 25.6, 28.02, 30.44, 32.87, 35.29}; f = Transpose[{9.-#1-#2,#1,#2}& @@ Transpose@Tuples@{f2,f3}]/9.; y = ((#1*x + #2)*x + #3)*x & @@@ f;