From: Kostas O. <k.o...@at...> - 2014-08-03 14:46:34
|
This is a discussion between Eberhard and myself on the new package "listvecops" that Eberhard just put together. Given the related discussion on the list, we are moving this discussion to the list also. Kostas -------- Original Message -------- Subject: Re: [Reduce-algebra-developers] vector operations on lists Date: Sun, 03 Aug 2014 11:41:15 +0200 From: Eberhard Schruefer <esc...@ca...> To: Kostas Oikonomou <k.o...@at...> On 03/08/14 04:34, Kostas Oikonomou wrote: > Eberhard, thanks very much. I have a few observations: > > 1) The element-wise product is indeed how maxima and Mathematica do it. > But also see 3) below. > > 2) The division doesn't work as expected, i.e. element-wise. How would you like to have it? Do you mean dividing two lists? > > 3) The "assist" package also provides a dot (scalar) product for two > lists, called "scalvect". That would be another useful addition to > "listvecops". Perhaps with a more convenient infix operator? Do you have a suggestion for a name of an infix operator of the dot product? > > 4) Another useful operation would be element-wise powers, the exponent > being a non-negative real number. > But if you think that allowing any real exponent would not cause any > problems, that would be even better. O.k. thats very simple. > > 5) I now use the package "assist" to provide access to list elements by > index, using the dot notation L.i. > Would it make sense to merge that capability into the "listvecops" package? I'll take a look. > > 6) Fix some details in the error messages: > > "Only list can be added to a list." -> "Only a list can be added to a > list." > > "Not equal length lists found in difference." -> "Unequal length ..." > > "Not equal length lists found in times." -> "Unequal length ..." Will change this in the next update. Eberhard > > > Kostas > > > On 08/02/2014 13:37, Eberhard Schruefer wrote: >> I commited a basic package for the operations you asked for. >> Please fetch the latest svn and then go 'load_package listvecops;" . >> Your examples then result in >> >> 1: load_package listvecops; >> >> 2: A := {a1,a2,a3,a4}; >> >> a := {a1,a2,a3,a4} >> >> 3: B := {b1,b2,b3,b4}; >> >> b := {b1,b2,b3,b4} >> >> 4: c*A ; >> >> {a1*c, >> >> a2*c, >> >> a3*c, >> >> a4*c} >> >> 5: A + B; >> >> {a1 + b1, >> >> a2 + b2, >> >> a3 + b3, >> >> a4 + b4} >> >> 6: A*B; >> >> {a1*b1, >> >> a2*b2, >> >> a3*b3, >> >> a4*b4} >> >> 7: c1*A + c2*B; >> >> {a1*c1 + b1*c2, >> >> a2*c1 + b2*c2, >> >> a3*c1 + b3*c2, >> >> a4*c1 + b4*c2} >> >> >> Is the product of two lists like you wanted it? It looks a little bit >> odd to me, but if this is the convention in >> other systems thats fine. >> >> Eberhard >> >> On 01/08/14 23:01, Kostas Oikonomou wrote: >>> Eberhard, >>> >>> That would be welcome, thanks. >>> >>> Another point of confusion for me is arrays vs. lists. As far as I can >>> see, in Reduce arrays provide access by index, which other systems (e.g. >>> maxima) also allow for lists. Arrays are also global in scope, which to >>> me seems debatable. Are there any other differences visible to the >>> user? Or reasons why one would want to use arrays? >>> >>> Kostas >>> >>> On 08/01/2014 14:48, Eberhard Schruefer wrote: >>>> I think I already told off the list that this is not hard to implement. >>>> I will put a small package together over the next few weeks. >>>> >>>> Eberhard >>>> >>>> On 01/08/14 19:10, Kostas Oikonomou wrote: >>>>> It would be very useful and convenient to users familiar with e.g. >>>>> maxima or Mathematica, and looking at Reduce as an alternative, if >>>>> Reduce had the ability to perform some vector operations on lists. >>>>> For >>>>> example, >>>>> >>>>> A := {a1,a2,a3,a4}; B := {b1,b2,b3,b4}; >>>>> >>>>> c*A -> {c*a1,..,c*a4} >>>>> >>>>> A + B -> {a1+b1,...,a4+b4} >>>>> >>>>> A*B -> {a1*b1,...,a4*b4} >>>>> >>>>> and presumably such an extension would also handle linear >>>>> expressions like >>>>> >>>>> c1*A + c2*B, ... >>>>> >>>>> Unless, I'm missing something major, these manipulations, which are >>>>> quite convenient (in evaluating functions with vector arguments, in my >>>>> case), are very cumbersome to do in Reduce. >>>>> >>>>> I saw a related thread on this from 2011, but apparently nothing >>>>> further >>>>> was done. >>>>> >>>>> Kostas >>>>> >>>>> >>>>> ------------------------------------------------------------------------------ >>>>> >>> ------------------------------------------------------------------------------ >>> >>> Want fast and easy access to all the code in your enterprise? Index and >>> search up to 200,000 lines of code with a free copy of Black Duck >>> Code Sight - the same software that powers the world's largest code >>> search on Ohloh, the Black Duck Open Hub! Try it now. >>> http://p.sf.net/sfu/bds >>> _______________________________________________ >>> Reduce-algebra-developers mailing list >>> Red...@li... >>> https://lists.sourceforge.net/lists/listinfo/reduce-algebra-developers |