MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Function for complex polynomial with variable number of arguments

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123495] Re: Function for complex polynomial with variable number of arguments
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Fri, 9 Dec 2011 05:54:56 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com

I presume you want the constant 1 as result in case you have an empty
list of points, as the product of an empty list should be 1 in order for
the generalized associative rule to hold for multiplication.

There's an easy solution, obtained by making things simpler: avoid
indices entirely and directly use list-manipulation:

   poly[z_, p_] :== Times @@ (z - p)

   poly[z, {a + b I, c + d I, c + d I}]
(-a - I b + z) (-c - I d + z)^2

   poly[z, {a + b I}]
-a - I b + z

   poly[z, {}]
1

If you insist on your original syntax, then change the above to:

   poly2[z_, p___] :== Times @@ (z - {p})

On 12/8/11 5:21 AM, Chris Young wrote:
> I want to be able to pass any number of complex points to this
> polynomial function and have it return the product of factors (z - p_1)
> (z - p_2) etc. Works OK except when I pass in no arguments. Looks like
> I have to check for this, but I'm wondering if there's a better way to
> convert my arguments into factors, maybe using Fold.
>
> poly[z_, p___] :==
>   Product[z - (List@p)[[i]], {1, Max[1, Length[List[p]]]}]
>
>
>
> In[553]:== poly[x + y I, a + b I, c + d I, c + d I]
> Out[553]== (-a - I b + x + I y) (-c - I d + x + I y)^2
>
> In[554]:== poly[x + y I, a + b I]
> Out[554]== -a - I b + x + I y
>
> In[555]:== poly[x + y I, 0]
> Out[555]== x + I y
>
> In[556]:== poly[x + y I]
>
> During evaluation of In[556]:== Part::partw :  "Part 1 of {} does not
> exist. =E2=80=98=E2=84=A2=CB=9CButtonBox["",
> Appearance->{Automatic, None},
> BaseStyle->"Link",
> ButtonData:>"paclet:ref/message/General/partw",
> ButtonNote->"Part::partw"]"
> Out[556]== x + I y - {}[[1]]
>
>

--
Murray Eisenberg                     murray at math.umass.edu
Mathematics & Statistics Dept.
Lederle Graduate Research Tower      phone 413 549-1020 (H)
University of Massachusetts                413 545-2859 (W)
710 North Pleasant Street            fax   413 545-1801
Amherst, MA 01003-9305



  • Prev by Date: Re: Solve the eigenvalues of the matrix A1,thx!~
  • Next by Date: Findminimum too slow for iterative reweighted least squares
  • Previous by thread: Re: Function for complex polynomial with variable number of arguments
  • Next by thread: Function for complex polynomial with variable number of arguments