A minor side note: (+/\@:= -: >:/~) i.2000 1 timespacex '+/\=i.2000' 0.010131 3.78202e7 timespacex '>:/~i.2000' 0.002597 4.21203e6
Thanks, -- Raul On Thu, Oct 15, 2020 at 2:21 PM 'Michael Day' via Programming <[email protected]> wrote: > > It took me a while to see what was required using the matrix, M and the > derived coefficients, a. > > But this works ok. I haven't turned the explicit code into a function, > but that should be quite > straightforward. > > NB. fixed point font best past here.... > a =. y %. M =. 1,. }:"1 */\"1 (-/~ * +/\@:=@i.@#) x > M > 1 0 0 0 0 > 1 3r4 0 0 0 > 1 3r2 9r8 0 0 > 1 9r4 27r8 81r32 0 > 1 3 27r4 81r8 243r32 > a > _14.10142 17.559765 _10.878424 4.8348551 0 > > 6{."1 [n =: 1,}:*/\ x-~/steps _1.5 1.5 30 NB. n is Newton basis > form of new x > 1 1 1 1 1 1 > 0 0.1 0.2 0.3 0.4 0.5 > 0 _0.065 _0.11 _0.135 _0.14 _0.125 > 0 0.091 0.143 0.162 0.154 0.125 > 0 _0.19565 _0.29315 _0.3159 _0.2849 _0.21875 > > plot a +/ . * n > > Earlier, I'd overlooked the (rather obvious!) fact that you need to > apply a to the Newton > basis form, n here, of your required prediction points, not the > untransformed points. > > Mike > > > On 15/10/2020 14:50, Stefan Baumann wrote: > > Dear all. > > Recently I stumbled upon the Newton polynomial and took it as a practice to > > implement it without using loops, but failed. I first didn't get a grab on > > how to create the matrix used in > > https://en.wikipedia.org/wiki/Newton_polynomial#Main_idea, and eventually > > came up with code following > > https://en.wikipedia.org/wiki/Newton_polynomial#Application: > > > > NB. Newton polynomial > > > > np=: 4 : 0 > > > > a=. {. y > > > > for_i. }.>:i.#x do. > > > > y=. (2 (-~)/\ y) % i ({:-{.)\ x NB. Divided differences > > > > a=. a, {. y NB. Coefficients are the topmost entries > > > > end. > > > > NB. Convert the summands aᵢ(x-x₀)…(x-xᵢ₋₁) of the polynomial > > > > NB. from multiplier-and-roots to coefficients form and add them up > > > > +/@,:/ p."1 (;/a) ,. (<''), }:<\ x > > > > ) > > > > x=: _3r2 _3r4 0 3r4 3r2 > > > > y=: 3&o. x > > > > load'plot' > > > > load'stats' > > > > plot (];(x np y)&p.) steps _1.5 1.5 30 > > > > I also tried replacing the loop with fold F:. but again was not able to do > > so. Anyone out there who can enlighten me? > > > > Many thanks. Stefan. > > ---------------------------------------------------------------------- > > 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
