Funny,  I think I’ve usually done the quicker one.  

Thanks for reminding me,

Mike

Sent from my iPad

> On 19 Oct 2020, at 22:03, Raul Miller <[email protected]> wrote:
> 
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to