For example, consider this crude mechanism: partmean=:4 :0 m=. (+/%#) y b=. <.(x%n)*i.#y w=. b (+/%#)/. /:~ y x * m * w%+/w )
3 partmean 0 1 2 3 4 5 6 7 8 9 10 20 20 20 20 20 2.38217 7.62295 19.0574 Correct? Incorrect? How would I know? Note that the calculation for b could be replaced, for example: arbmean=:4 :0 m=. (+/%#) y b=. ?. (#y) # x w=. b (+/%#)/. y x * m * w%+/w ) 3 arbmean 0 1 2 3 4 5 6 7 8 9 10 20 20 20 20 20 4.77812 13.4155 10.8689 (+/%#)3 arbmean 0 1 2 3 4 5 6 7 8 9 10 20 20 20 20 20 9.6875 Thanks, -- Raul On Sun, Aug 23, 2020 at 3:52 AM Raul Miller <[email protected]> wrote: > > Ah, ignore that numeric example, I had overlooked the use of 0j1": > > Still... I am curious about how to judge the correctness of the partitioning. > > Thanks, > > -- > Raul > > On Sun, Aug 23, 2020 at 3:31 AM Raul Miller <[email protected]> wrote: > > > > Generalized how? > > > > Specifically, how should I judge correctness? > > > > (+/%#)0 1 2 3 4 5 6 7 8 9 10 20 20 20 20 20 > > 9.6875 > > (+/%#)1.9 7.4 19.7 > > 9.66667 > > > > Thanks, > > > > -- > > Raul > > > > On Sat, Aug 22, 2020 at 2:38 PM 'Bo Jacoby' via Programming > > <[email protected]> wrote: > > > > > > > > > Hello Raul. > > > My work is not differential equations. It is simpler. > > > It is about generalizing the concept of one mean value into two or more > > > values, characteristics of a dataset. > > > Here are some simple examples. > > > ] a =. (i.11) , 5#20 NB. some test data. 16 numbers > > > 0 1 2 3 4 5 6 7 8 9 10 20 20 20 20 20 > > > > > > 0j1":b =. 3 summary@tomb a NB. 16 numbers summarized into 3 numbers. > > > 1.9 7.4 19.7 > > > > > > 0j1":3 summary@tomb b NB. 3 numbers summarized into the same 3 numbers. > > > 1.9 7.4 19.7 > > > > > > > > > > > > 0j1":2 summary@tomb a NB. 16 numbers summarized into 2 numbers > > > 2.3 17.1 > > > > > > 0j1":2 summary@tomb b NB. 3 numbers summarized into the same 2 numbers > > > 2.3 17.1 > > > > > > 0j1":1 summary@tomb a NB. 16 numbers summarized into 1 number > > > 9.7 > > > > > > 0j1":1 summary@tomb b NB. 3 numbers summarized into the same number > > > 9.7 > > > > > > > > > > > > Thank you! > > > Bo > > > > > > > > > > > > > > > > > > > > > > > > Den lørdag den 22. august 2020 18.57.38 CEST skrev Raul Miller > > > <[email protected]>: > > > > > > Hmm... > > > > > > Trying to bring myself up to speed on what you seem to be saying here > > > first lead me to https://mathworld.wolfram.com/PowerMean.html and > > > https://en.wikipedia.org/wiki/Newton%27s_identities and then to > > > https://www.jsoftware.com/papers/MSLDE1.htm > > > > > > I don't have anything meaningful to add right now -- I am not even > > > sure if I can form a relevant question. Maybe if I spend a half hour a > > > day on this for long enough, I'll be able to come back to it > > > intelligently. > > > > > > Until then, good luck. > > > > > > -- > > > Raul > > > > > > On Sat, Aug 22, 2020 at 11:20 AM 'Bo Jacoby' via Programming > > > <[email protected]> wrote: > > > > > > > > Thanks to Raul and Brian! > > > > tomb=:(^/ i.@>:)~ , NB. It works miracuously! Thank you! > > > > > > > > Raul wrote: "It sort of smells like you were working with matrices > > > > designed for inversion and polynomial fitting" > > > > Well, I want to find n numbers such that their mean powers are equal to > > > > the mean powers of my input data set. I have n nonlinear equations in > > > > n unknowns. The trick is to use the symmetry of the power sums. (A > > > > power sum does not depend on the order of the variables). So the n > > > > unknowns are roots in a polynomial of degree n. The coefficients of > > > > this polynomial are solutions to n linear equations in n unknowns. See > > > > Newton's identities > > > > > > > > | > > > > | > > > > | | > > > > Newton's identities > > > > > > > > Let x1, ..., xn be variables, denote for k ≥ 1 by pk(x1, ..., xn) the > > > > k-th power sum: > > > > | > > > > > > > > | > > > > > > > > | > > > > > > > > > > > > So yes, I compute the n*n-matrix m from the n power sums s, and solve > > > > the linear equation m +/ .* e = s (by e=.(%.m)s), and the the > > > > nonlinear equation e p. x = 0 (by p. e). It is not polynomial fitting. > > > > Thank you for your help and for your interest! > > > > Bo > > > > > > > > > > > > > > > > Den lørdag den 22. august 2020 15.44.33 CEST skrev Raul Miller > > > > <[email protected]>: > > > > > > > > I don't really follow what you are doing here -- for example, I look > > > > at stuff like 11 summary@hist i.11 and do not understand how that > > > > result corresponds to "size of the dataset" -- but even without > > > > knowing your intentions, I can point out that you can simplify tomb: > > > > > > > > tomb=:(^/ i.@>:)~ , > > > > > > > > It sort of smells like you were working with matrices designed for > > > > inversion and polynomial fitting, but that doesn't tell me much (if > > > > anything) about your destination. > > > > > > > > Good luck, > > > > > > > > -- > > > > Raul > > > > > > > > On Sat, Aug 22, 2020 at 5:35 AM 'Bo Jacoby' via Programming > > > > <[email protected]> wrote: > > > > > > > > > > Thanks to Michael and to ethiejiesa! > > > > > The program is now: > > > > > > > > > > tomb=.[ (^/ i.@>:)~ ,@] NB. Powers of a tombola > > > > > > > > > > hist=.]* ((^/&i. >:)~ #) NB. Powers of a histogram > > > > > s=.(*#)@(}.%{.)@(+/) NB. summation > > > > > f1=.$~2 # # NB. n*n matrix > > > > > f2=.>:@i.@#,}: NB. insert S0, remove Sn > > > > > f3=.*_1^i.@# NB. change signs > > > > > f4=.|:|.!.0"0 1~-@i.@# NB. shift in zeroes > > > > > m=.|:@f4@(f3"1@f2@|:@f1) NB. Matrix > > > > > e=.1,(%.m) NB. solve lin.eqns. > > > > > pol=._1 x: -@|.@>@{:@p.@|. NB. solve alg.eqn. > > > > > hp=.x: :: ] NB. high precision > > > > > summary=.pol@e@s@hp f. NB. complete program > > > > > (I need the comma in tomb, so now it is smelly again.) > > > > > Michael wrote: "Any clue as to the input to summary, or what you're > > > > > summarising? Sorry if it's obvious!" > > > > > No sir, it is not obvious if it is not obvious to you. > > > > > Left input to summary@tomb and summary@hist is the size of the output > > > > > dataset. > > > > > Right input to summary@tomb is the input dataset described as a > > > > > tombola. The same number may occur on many tickets. The order of the > > > > > tickets is immaterial. > > > > > Right input to summary@hist is the input dataset described as a > > > > > histogram. the number of zeroes, the number of ones, the number og > > > > > twos &c. > > > > > Examples: > > > > > > > > > > 11 summary@tomb i.11 > > > > > > > > > > > > > > > 0 1 2 3 4 5 6 7 8 9 10 > > > > > > > > > > 11 summary@tomb 11 NB. this wouldn't work without the comma in tomb > > > > > 11 11 11 11 11 11 11 11 11 11 11 > > > > > > > > > > 1 summary@tomb i.11 NB. mean value > > > > > 5 > > > > > > > > > > 2 summary@tomb i.11 NB. mean plus/minus std.dev. > > > > > 1.83772 8.16228 > > > > > > > > > > > > > > > 3 summary@tomb i.11 NB. generalized into 3 numbers > > > > > > > > > > 1.12702 5 8.87298 > > > > > > > > > > > > > > > > > > > > Explanations: > > > > > > > > > > > > > > > > > > > > 5 tomb i.11 > > > > > > > > > > 1 0 0 0 0 0 > > > > > > > > > > 1 1 1 1 1 1 > > > > > > > > > > 1 2 4 8 16 32 > > > > > > > > > > 1 3 9 27 81 243 > > > > > > > > > > 1 4 16 64 256 1024 > > > > > > > > > > 1 5 25 125 625 3125 > > > > > > > > > > 1 6 36 216 1296 7776 > > > > > > > > > > 1 7 49 343 2401 16807 > > > > > > > > > > 1 8 64 512 4096 32768 > > > > > > > > > > 1 9 81 729 6561 59049 > > > > > > > > > > 1 10 100 1000 10000 100000 > > > > > > > > > > +/ hp 5 tomb i.11 > > > > > 11 55 385 3025 25333 220825 > > > > > > > > > > (}.%{.) +/ hp 5 tomb i.11 > > > > > 5 35 275 2303 20075 > > > > > > > > > > (*#) (}.%{.) +/ hp 5 tomb i.11 > > > > > 25 175 1375 11515 100375 > > > > > > > > > > s hp 5 tomb i.11 > > > > > 25 175 1375 11515 100375 > > > > > > > > > > f1 s hp 5 tomb i.11 > > > > > 25 175 1375 11515 100375 > > > > > > > > > > 25 175 1375 11515 100375 > > > > > > > > > > 25 175 1375 11515 100375 > > > > > > > > > > 25 175 1375 11515 100375 > > > > > > > > > > 25 175 1375 11515 100375 > > > > > > > > > > |: f1 s hp 5 tomb i.11 > > > > > 25 25 25 25 25 > > > > > > > > > > 175 175 175 175 175 > > > > > > > > > > 1375 1375 1375 1375 1375 > > > > > > > > > > 11515 11515 11515 11515 11515 > > > > > > > > > > 100375 100375 100375 100375 100375 > > > > > > > > > > f2 |: f1 s hp 5 tomb i.11 > > > > > 1 2 3 4 5 > > > > > > > > > > 25 25 25 25 25 > > > > > > > > > > 175 175 175 175 175 > > > > > > > > > > 1375 1375 1375 1375 1375 > > > > > > > > > > 11515 11515 11515 11515 11515 > > > > > > > > > > f3"1 f2 |: f1 s hp 5 tomb i.11 > > > > > 1 _2 3 _4 5 > > > > > > > > > > 25 _25 25 _25 25 > > > > > > > > > > 175 _175 175 _175 175 > > > > > > > > > > 1375 _1375 1375 _1375 1375 > > > > > > > > > > 11515 _11515 11515 _11515 11515 > > > > > > > > > > f4 f3"1 f2 |: f1 s hp 5 tomb i.11 > > > > > 1 25 175 1375 11515 > > > > > > > > > > 0 _2 _25 _175 _1375 > > > > > > > > > > 0 0 3 25 175 > > > > > > > > > > 0 0 0 _4 _25 > > > > > > > > > > 0 0 0 0 5 > > > > > > > > > > |: f4 f3"1 f2 |: f1 s hp 5 tomb i.11 > > > > > 1 0 0 0 0 > > > > > > > > > > 25 _2 0 0 0 > > > > > > > > > > 175 _25 3 0 0 > > > > > > > > > > 1375 _175 25 _4 0 > > > > > > > > > > 11515 _1375 175 _25 5 > > > > > > > > > > m s hp 5 tomb i.11 > > > > > 1 0 0 0 0 > > > > > > > > > > 25 _2 0 0 0 > > > > > > > > > > 175 _25 3 0 0 > > > > > > > > > > 1375 _175 25 _4 0 > > > > > > > > > > 11515 _1375 175 _25 5 > > > > > > > > > > (%.m) s hp 5 tomb i.11 > > > > > 25 225 875 1340 450 > > > > > > > > > > |.1,(%.m) s 5 tomb i.11 > > > > > 450 1340 875 225 25 1 > > > > > > > > > > p.|.1,(%.m) s hp 5 tomb i.11 > > > > > ┌─┬─────────────────────────────────────┐ > > > > > > > > > > │1│_9.54306 _7.0882 _5 _2.9118 _0.456938│ > > > > > > > > > > └─┴─────────────────────────────────────┘ > > > > > > > > > > _1 x: - |. > {: p.|.1,(%.m) s hp 5 tomb i.11 > > > > > 0.456938 2.9118 5 7.0882 9.54306 > > > > > > > > > > 5 summary@tomb i.11 > > > > > 0.456938 2.9118 5 7.0882 9.54306 > > > > > > > > > > > > > > > > > > > > Thanks! > > > > > Bo. Den fredag den 21. august 2020 17.01.49 CEST skrev 'Michael > > > > > Day' via Programming <[email protected]>: > > > > > > > > > > Any clue as to the input to summary, or what you're summarising? > > > > > > > > > > Sorry if it's obvious! > > > > > > > > > > Note these (display ?) errors: > > > > > > > > > > pol =. _1 [space] x: ... > > > > > > > > > > hp =. x [space] :: ] ... > > > > > > > > > > Cheers, > > > > > > > > > > Mike > > > > > > > > > > > > > > > On 21/08/2020 15:41, 'Bo Jacoby' via Programming wrote: > > > > > > > > > > > > tomb=.(^/i.@>:)~ NB. tombola lottery powers > > > > > > hist=.({."1~>:)~(*[:^/~i.@#@,)NB. histogram powers > > > > > > s=.(*#)@ (}.%{.) @ (+/) NB. summation > > > > > > f1=.$~2# # NB. n*n matrix > > > > > > f2=.>:@i.@#, }: NB. insert S0, remove Sn > > > > > > f3=.*_1^i.@# NB. change sign > > > > > > f4=.|:|.!.0"01~-@i.@# NB. shift zeroes in > > > > > > m=.|:@f4@(f3"1@f2@|:@f1) NB. matrix > > > > > > e=.1,(%.m) NB. solve linear equations > > > > > > pol=._1x: -@|.@>@{:@p.@|. NB.solve alg.eqn. > > > > > > hp=.x::: ] NB. high precision > > > > > > summary=.pol@e@s@hp f. NB. complete program > > > > > > sorry for the still missing carriage returns. > > > > > > Den fredag den 21. august 2020 16.37.19 CEST skrev Bo Jacoby > > > > > > <[email protected]>: > > > > > > > > > > > > tomb=.(^/i.@>:)~ NB. tombola lottery > > > > > > powershist=.({."1~>:)~(*[:^/~i.@#@,)NB. histogram powerss=.(*#)@ > > > > > > (}.%{.) @ (+/) NB. summationf1=.$~2# # NB. n*n matrixf2=.>:@i.@#, > > > > > > }: NB. insert S0, remove Snf3=.*_1^i.@# NB. change > > > > > > signf4=.|:|.!.0"01~-@i.@# NB. shift zeroes > > > > > > inm=.|:@f4@(f3"1@f2@|:@f1) NB. matrixe=.1,(%.m) NB. solve linear > > > > > > equationspol=._1x: -@|.@>@{:@p.@|. NB.solve alg.eqn.hp=.x::: ] NB. > > > > > > high precisionsummary=.pol@e@s@hp f. NB. complete program > > > > > > This should be better. Sorry. > > > > > > Bo. Den fredag den 21. august 2020 16.29.35 CEST skrev 'Bo > > > > > > Jacoby' via Programming <[email protected]>: > > > > > > > > > > > > Thank you! > > > > > > I was trying to accomplish this > > > > > > tomb=.(^/i.@>:)~ NB. tombola lottery > > > > > > powershist=.({."1~>:)~(*[:^/~i.@#@,)NB. histogram powerss=.(*#)@ > > > > > > (}.%{.) @ (+/) NB. summationf1=.$~2# # NB. n*n matrixf2=.>:@i.@#, > > > > > > }: NB. indsæt S0, fjern Snf3=.*_1^i.@# NB. change > > > > > > signf4=.|:|.!.0"01~-@i.@# NB. shift zeroes > > > > > > inm=.|:@f4@(f3"1@f2@|:@f1) NB. matrixe=.1,(%.m) NB. solve linear > > > > > > equationspol=._1x: -@|.@>@{:@p.@|. NB.solve alg.eqn.hp=.x::: ] NB. > > > > > > high precisionsummary=.pol@e@s@hpf. NB. complete program > > > > > > 1&(summary@tomb) computes the mean value of a dataset. > > > > > > > > > > > > 1 summary@tomb i.11 > > > > > > 5 > > > > > > > > > > > > > > > > > > The mean value of 99 zeroes and 1 one is > > > > > > > > > > > > 1 summary@hist 99 1 > > > > > > > > > > > > 0.01 > > > > > > > > > > > > > > > > > > > > > > > > The mean value plus/minus the standard deviation is computed like > > > > > > this > > > > > > > > > > > > 2 summary@tomb i.11 > > > > > > > > > > > > 1.83772 8.16228 > > > > > > > > > > > > 2 summary@hist 99 1 > > > > > > _0.0894987 0.109499 > > > > > > > > > > > > > > > > > > > > > > > > Of course these two numbers have the correct mean value > > > > > > > > > > > > 1 summary@tomb 2 summary@tomb i.11 > > > > > > > > > > > > 5 > > > > > > > > > > > > 1 summary@tomb 2 summary@hist 99 1 > > > > > > 0.01 > > > > > > > > > > > > > > > > > > > > > > > > The computation is generalized to 3 numbers > > > > > > > > > > > > 3 summary@tomb i.11 > > > > > > > > > > > > 1.12702 5 8.87298 > > > > > > > > > > > > 3 summary@hist 99 1 > > > > > > _0.108204j0.16452 _0.108204j_0.16452 0.246409 > > > > > > > > > > > > having the correct mean values and standarddeviations. > > > > > > > > > > > > 2 summary@tomb 3 summary@tomb i.11 > > > > > > > > > > > > 1.83772 8.16228 > > > > > > > > > > > > 2 summary@tomb 3 summary@hist 99 1 > > > > > > _0.0894987 0.109499 > > > > > > > > > > > > > > > > > > > > > > > > Thus complicated probability distributions functions are summarized > > > > > > by a few numbers. That is what I accomplished! > > > > > > Thanks! > > > > > > Bo. > > > > > > Den fredag den 21. august 2020 15.33.50 CEST skrev ethiejiesa > > > > > > via Programming <[email protected]>: > > > > > > > > > > > > Bo Jacoby <[email protected]> wrote: > > > > > >> How to de-smell this: > > > > > >> 3([* i.@#@,@[ ^/ i.@>:@])~ 0 0 1 1 1 > > > > > > 3 (]* ((^/&i. >:)~ #)) 0 0 1 1 1 > > > > > > > > > > > > Maybe? That comes from just a little mechanical algebra: > > > > > > > > > > > >> 3([* i.@#@,@[ ^/ i.@>:@])~ 0 0 1 1 1 > > > > > > First notice the repeated (i.) on either argument of (^/). There is > > > > > > a general > > > > > > pattern, (f@u v f@w <--> u v&f w), which in this case specializes to > > > > > > > > > > > > 3([* #@,@[ ^/&i. >:@])~ 0 0 1 1 1 > > > > > > > > > > > > Then, at least in this example the (@,) is superfluous, so we elide > > > > > > it: > > > > > > > > > > > > 3([* #@[ ^/&i. >:@])~ 0 0 1 1 1 > > > > > > > > > > > > Finally, here is an idiom: ( (u@[ v w@]) <--> ((v w)~ u)~ ), and > > > > > > since > > > > > > (x v~~ y <--> x v y), we have > > > > > > > > > > > > 3 (]* ((^/&i. >:)~ #)) 0 0 1 1 1 > > > > > > > > > > > > The last idiom is really a matter of preference. I like the bare > > > > > > verbs, but > > > > > > code golf-wise it doesn't win. > > > > > > > > > > > > More importantly, however, I really have no idea what you are > > > > > > trying to > > > > > > accomplish. The above just performs some J syntax manipulations; > > > > > > however, this > > > > > > doesn't at all demonstrate the main point of avoiding code smell as > > > > > > I see it, > > > > > > which is more about finding places to improve the *algorithm* > > > > > > rather than only > > > > > > cleaning up the syntax. > > > > > > ---------------------------------------------------------------------- > > > > > > 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 > > > > > > > > > > -- > > > > > This email has been checked for viruses by Avast antivirus software. > > > > > https://www.avast.com/antivirus > > > > > > > > > > ---------------------------------------------------------------------- > > > > > 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
