I'm impressed by your talent for teaching!
R.E. Boss > -----Oorspronkelijk bericht----- > Van: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] Namens Dan Bron > Verzonden: zaterdag 19 januari 2013 20:06 > Aan: programm...@jsoftware.com > Onderwerp: Re: [Jprogramming] [Jprogrammingou Hermitian from triangular > > I know you guys are discussing arithmetic, but I always preferred algebra. > Specifically, the distillation of an idea through simplification, > factorization, and reduction of common elements. > > 13 : '(i: 9 o. y) j./ i: 11 o. y' > ([: i: 9 o. ]) j./ [: i: 11 o. ] > > Let's see what we can do here. > > We have ([: i: 9 o. ]) j./ ([: i: 11 o. ]), which presents an interesting > symmetry. Specifically, it looks like ([: f foo) g ([: f bar) which could > be phrased as f@:foo g f@:bar . This latter form makes it clear that f is > the last operation of both the left and the right tines: it is reflected > about the middle. Well, we can replace both those reflections with a single > f and a mirror. The mirror is &, as in foo g&f bar .* > > Ok, so now we've got (9 o. ]) g&f (11 o. ]) , which still presents an > interesting, possibly reducible, symmetry. Our first reduction took > advantage of the fact that the reflection was perfect: i: was the final > operation on both sides of the middle. But here, the final operations of > the left and right tines are different: the left is 9 o. y and the right is > 11 o. y (which mean different things). > > And yet they're suggestively similar. They're both of the form m o. ] . > Maybe we can make some headway. The first thing we think is "Aha! o. is > scalar. It's rank zero, so (9 o. y),:(11 o. y) is the same as 9 11 o. y !" > So perhaps our first instinct is to try 9 11 (g&f)&o. y . But applying the > same rules 9 11 (g&f)&o. y becomes (o. 9 11) g&f (o. y) which is not what we > want. We somehow want to insert g&f between the two results of 9 11 o. y , > like it was originally. > > Are we stumped? Not hardly. We already have the answer: we're using j./ to > make at "j. table" by inserting j.s between all the pairs of the inputs > (like */ would be a multiplication table). So we know / can be used to > insert verbs between elements of the input. In this case, we want to insert > the verb is g&f and between the results of 9 11 o. y (of course, in the j. > example we're using dyad f/ and here we're using the monad, the spirit is > the same, by design). So we can say g&f/ 9 11 o. y . To make that a > reusable verb, which is independent of y, we simply glue the two pieces > together with @ as in g&f/@(9 11 o. ]) . Or we could use the other meaning > of & to glue the 9 11 to o. directly, as in g&f/@(9 11&o.) . > > Substituting back for g and f, we have j./&i:/@(9 11&o.) . Pretty good! Is > that as far as we can go? Well, I don't see any common factors left to > reduce. So based only on form (syntax), maybe we've simplified it as much > as we can. And yet, at another level, we still have redundancy. We're > asking o. to do two things. Now, o. is special because its left argument > can completely change its meaning, and since it's scalar and we're giving it > two left arguments (9 and 11), we're in effect asking two separate > questions. But as Kip pointed out, all the questions are fundamentally > related. Let's see if we can take advantage of that relationship. > > We start by looking at the two questions we're asking of o. . From the > vocabulary, (9 o. y) is the "real part of y", and (11 o. y) is the > corresponding "imaginary part of y". That is, y has the form A + Bi, and 9 > o. y produces A and 11 o. y produces B, so 9 11 o. y produces A,B. Clearly > these two questions are related, and pretty fundamental. We might suspect J > provides other ways to answer them. So we look through the vocabulary > again, and come across this sentence: "+.y yields a two-element list of the > real and imaginary parts of its argument." . Perfect. By looking beyond > the form of j./&i:/@(9 11&o.) and thinking about the meanings of the words, > we found another simplification: 9 11&o. is the same as +. . > > Applying that final substitution, we get j./&i:/@+. . Nice! No parens, > even. > > Now let's compare it with the original ([: i: 9 o. ]) j./ ([: i: 11 o. ]) . > Sure, the reduced version is shorter and less redundant: that was our goal. > So let's try a different test. Let's read the two phrases aloud. In > English. The first starts at the left and ends at the right: "make the > complex-number (j.) table (/) from (&) the counts (i:) of (@) the real and > imaginary parts (+.) of the input (y)". The second "starts" in the middle. > How do you read that left-to-right? Try it, and don't cheat by skipping [: . > > Now, while I do enjoy the sport of simplification, I certainly don't believe > a J expression must have some pithy, bijective, sequential English sentence > equivalent to be good, or beautiful. In fact, the purpose of a good notation > is to allow us to transcend the limitations of English, and think in new > ways (hence math notation, and the ideas it provokes). But anyway, I > personally would have no problem with phrasing ([: i: 9&o.) j./ ([: i: > 11&o.) as "the complex (j.) table (/) whose rows are formed from counting up > (i:) the real part (9&o.) and columns are formed by the counting up (i:) the > imaginary part (11&o.) of the input". It's a mouthful, at least in writing, > but it's clear. > > But one of Linda's stated aims is to teach math to children by letting them > read J sentences left-to-right. And here is an example where conjunctions > and composition advance that cause, in contradiction to the worry that they > hinder it. > > [Which also explains why I wrote this post in such a longwinded, expository > style. The observation that we could replace ic with j./&i:/@+. occurred to > me immediately, but this kind of guided analysis could help explain it to > someone who isn't as familiar with the language.] > > -Dan > > * Kirk Iverson taught me to voice & as "but first", as in: > > *&+: <=> "multiply, BUT FIRST, halve" > -:&(/:~) <=> "compare, BUT FIRST, sort" > +&# <=> "sum, BUT FIRST, tally" > > etc. > > > PS: It's always good to test our theories, so: > > ic =. [: , ([: i: 9&o.) j./ ([: i: 11&o.) > ic2 =. [: , j./&i:/@+. > > ic 1 NB. Kip example #1 > _1 0 1 > ic2 1 > _1 0 1 > > ic 2 NB. Kip example #2 > _2 _1 0 1 2 > ic2 2 > _2 _1 0 1 2 > > ic 1j2 NB. Kip example #3 > _1j_2 _1j_1 _1 _1j1 _1j2 0j_2 0j_1 0 0j1 0j2 1j_2 1j_1 1 1j1 1j2 > ic2 1j2 > _1j_2 _1j_1 _1 _1j1 _1j2 0j_2 0j_1 0 0j1 0j2 1j_2 1j_1 1 1j1 1j2 > > ic 0j2 NB. Kip example #4 > 0j_2 0j_1 0 0j1 0j2 > ic2 0j2 > 0j_2 0j_1 0 0j1 0j2 > > (ic2 -: ic)&> 1 2 1j2 0j2 > 1 1 1 1 > > NB. But... > > (ic2 -: ic) 1 2 1j2 0j2 > 0 > > NB. When we move beyond the original scope of a single, scalar input > NB. the answers differ. What gives? Left as an exercise for the reader. > > > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > Sent: Saturday, January 19, 2013 6:21 AM > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] [Jprogrammingou Hermitian from triangular > > Linda, now please consider > > ic NB. interval from complex > [: , ([: i: 9&o.) j./ [: i: 11&o. > ic 0j2 > 0j_2 0j_1 0 0j1 0j2 > > Kip > > Sent from my iPad > > > On Jan 19, 2013, at 4:53 AM, "Linda Alvord" <lindaalv...@verizon.net> wrote: > > > C=: 0j_2 0j_1 0 0j1 0j2 > > f > > -: /:~ > > f C > > 1 > > > > > > -----Original Message----- > > From: programming-boun...@forums.jsoftware.com > > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > > Sent: Friday, January 18, 2013 10:47 PM > > To: programm...@jsoftware.com > > Subject: Re: [Jprogramming] [Jprogrammingou Hermitian from triangular > > > > For what it's worth > > > > ic 1j2 > > _1j_2 _1j_1 _1 _1j1 _1j2 0j_2 0j_1 0 0j1 0j2 1j_2 1j_1 1 1j1 1j2 > > > > (-: /:~) ic 1j2 > > 1 > > > > On ordering the complex numbers, see the penultimate sentence of the > > vocabulary entry for Grade /: > > > > http://www.jsoftware.com/docs/help701/dictionary/d422.htm > > > > Kip > > > > Sent from my iPad > > > > > > On Jan 18, 2013, at 8:28 PM, "Linda Alvord" <lindaalv...@verizon.net> > wrote: > > > >> At least these are sensible subsets of complex numbers. In their > >> entirety, complex numbers have been considered unorderable (at least > >> when I went to school). > >> > >> Instead of: > >> ic 1j2 > >> _1j_2 _1j_1 _1 _1j1 _1j2 0j_2 0j_1 0 0j1 0j2 1j_2 1j_1 1 1j1 1j2 > >> > >> how about this: > >> > >> ic 1j2 > >> 1j_2 1j_1 1 1j1 1j2 > >> > >> It seems to match: > >> > >> ic 0j2 > >> 0j_2 0j_1 0 0j1 0j2 > >> > >> I haven't considered how you got your subsets or how you would get my > >> alternative. > >> > >> Linda > >> > >> -----Original Message-----From: > >> programming-boun...@forums.jsoftware.com > >> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > >> Sent: Friday, January 18, 2013 11:14 AM > >> To: programm...@jsoftware.com > >> Subject: Re: [Jprogramming] Hermitian from triangular > >> > >> Linda, would you buy > >> > >> ic =: 13 : ',(i: 9 o. y) j./ i: 11 o. y' > >> ic 1 > >> _1 0 1 > >> ic 2 > >> _2 _1 0 1 2 > >> ic 1j2 > >> _1j_2 _1j_1 _1 _1j1 _1j2 0j_2 0j_1 0 0j1 0j2 1j_2 1j_1 1 1j1 1j2 > >> > >> ic 0j2 > >> 0j_2 0j_1 0 0j1 0j2 > >> > >> Kip > >> > >> Sent from my iPad > >> > >> > >> On Jan 18, 2013, at 4:33 AM, "Linda Alvord" <lindaalv...@verizon.net> > > wrote: > >> > >>> Kip, I just got back to a different and interesting sidetrack on > >>> this long thread. What a simple way to write a proof in J. > >>> > >>> _1 = ^ 0j1 * o. 1 > >>> 1 > >>> > >>> (0j1 * o.1) = ^. _1 > >>> 1 > >>> > >>> > >>> Therefore: Negative numbers can have logarithms to the base e > >>> > >>> Can they also have common logs? > >>> > >>> Also, It makes you wonder if there isn't some sequence out there > >>> somewhere where there is an ordered sequence of complex numbers: > >>> > >>> i:2 > >>> _2 _1 0 1 2 > >>> > >>> i:0j2 > >>> > >>> Happy wandering and pondering. > >>> > >>> Linda > >>> > >>> > >>> -----Original Message----- > >>> From: programming-boun...@forums.jsoftware.com > >>> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of km > >>> Sent: Thursday, January 17, 2013 9:31 AM > >>> To: programm...@jsoftware.com > >>> Subject: Re: [Jprogramming] Hermitian from triangular > >>> > >>> Linda, about logarithms of negative numbers > >>> > >>> First of all, you know the number e =: ^ 1 and you know ^ y is e^y . > >>> You may not know that ^ x j. y by definition is (^ x) * (cos + > >>> 0j1 > >>> * sin) y where cos =: 2&o. and sin =: 1&o. . I first learned this > >>> in a college math class called Complex Analysis. A good reference is E. > >> B. Saff and A. > >>> D. Snider, Fundamentals of Complex Analysis, Pearson Education, Inc. > > 2003. > >>> > >>> Anyway, a famous identity in higher math is > >>> > >>> _1 = ^ 0j1 * o. 1 > >>> 1 > >>> > >>> which should tell you that > >>> > >>> (0j1 * o.1) = ^. _1 > >>> 1 > >>> > >>> i.e., negative numbers can have logarithms to the base e . For more > >>> on this, please see Saff and Snider's Chapter 3. > >>> > >>> Kip Murray > >>> > >>> Sent from my iPad > >>> > >>> > >>> On Jan 17, 2013, at 4:22 AM, "Linda Alvord" > >>> <lindaalv...@verizon.net> > >> wrote: > >>> > >>>> Isn't the log of negative numbers indefined? > >>>> > >>>> This is a problem: > >>>> > >>>> %1&o.+0 > >>>> _ > >>>> %1&o.-0 > >>>> _ > >>>> > >>>> This is nice! > >>>> > >>>> %1&o.%_ > >>>> _ > >>>> %1&o.%__ > >>>> __ > >>>> > >>>> > >>>> The csc is very small for negative numbers close to zero and very > >>>> large for very small positive numbers. > >>>> > >>>> Linda > >>>> > >>>> -----Original Message----- > >>>> From: programming-boun...@forums.jsoftware.com > >>>> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Bo > >>>> Jacoby > >>>> Sennt: Thursday, January 17, 2013 3:37 AM > >>>> To: programm...@jsoftware.com > >>>> Subject: Re: [Jprogramming] Hermitian from triangular > >>>> > >>>> Henry, How is negative zero different from positive zero when > >>>> taking the log? > >>>> ^.%__ NB. log -0 > >>>> __ > >>>> ^.%_ NB. log +0 > >>>> __ > >>>> > >>>> > >>>> - Bo > >>>> > >>>> > >>>>> ________________________________ > >>>>> Fra: Henry Rich <henryhr...@nc.rr.com> > >>>>> Til: programm...@jsoftware.com > >>>>> Sendt: 0:38 torsdag den 17. januar 2013 > >>>>> Emne: Re: [Jprogramming] Hermitian from triangular > >>>>> > >>>>> Negative zero makes sense as a last vestige of gradual underflow; > >>>>> and > >>>> anyway, it's well-behaved: it looks like 0 except when you take the > >>>> log, reciprocal, or square root. In any normal computation, it > >>>> goes away. In contrast, NaN messes up anything it touches. > >>>>> > >>>>> I think we've had negative 0 in J forever. If NaN is a data > >>>>> virus, > >>>>> -0 is a > >>>> virus that has been inserted into our DNA. > >>>>> > >>>>> Henry Rich > >>>>> > >>>>> On 1/16/2013 4:45 PM, Raul Miller wrote: > >>>>>> On Wed, Jan 16, 2013 at 4:35 PM, Henry Rich > >>>>>> <henryhr...@nc.rr.com> > >>> wrote: > >>>>>>> Negative zero isn't a bug, it's a feature that numerical types, > >>>>>>> especially William Kahan, wanted to get into IEEE-754 to help > >>>>>>> out some things. I'm not expert enough to explain. > >>>>>> > >>>>>> Something similar could be said about NaN. > >>>>> ------------------------------------------------------------------ > >>>>> - > >>>>> - > >>>>> - > >>>>> - For information about J forums see > >>>>> http://www.jsoftware.com/forums.htm > >>>> ------------------------------------------------------------------- > >>>> - > >>>> - > >>>> - For information about J forums see > >>>> http://www.jsoftware.com/forums.htm > >>>> > >>>> ------------------------------------------------------------------- > >>>> - > >>>> - > >>>> - For information about J forums see > >>>> http://www.jsoftware.com/forums.htm > >>> -------------------------------------------------------------------- > >>> - > >>> - For information about J forums see > >>> http://www.jsoftware.com/forums.htm > >>> > >>> -------------------------------------------------------------------- > >>> - > >>> - For information about J forums see > >>> http://www.jsoftware.com/forums.htm > >> --------------------------------------------------------------------- > >> - For information about J forums see > >> http://www.jsoftware.com/forums.htm > >> > >> --------------------------------------------------------------------- > >> - For information about J forums see > >> http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm