Bo Jacoby <[email protected]> wrote:
> ?? 1&o.^:2 t.i.10x NB. Why does sin sin x produces an
> error message?
> |domain error
> |?????? 1&o.^:2 t.i.10
> ? (1&o.t.i.10)&p.^:2 t.i.10 NB. this trick works around the bug
> 0 1 0 _1r3 0 1r10 0 _8r315 0 13r2520

Roger Hui <[email protected]> replied:
> 1&o.^:2 t. signals domain error because
> u t. does a table look-up and 1&o.^:2 is not
> in the table.
>
> Are you claiming that if f t. and g t. both
> work then f...@g t. should work?

Taylor series are just polynomials (possibly with infinite numbers of terms).
As such, certain compositions of functions can be easily simulated.
   taylorplus =: 2 : 'u t.+v t.' NB. (u+v)t.
   taylortimes =: 2 : '+/@(u t.*|.@(v t.))@i.@>:' NB. (u*v)t.

One could similarly model u@:v t.
   polyplus =: +/@:,: NB. Polynomial addition (not used here)
   polytimes =: +//.@:(*/) NB. Polynomial multiplication
   polypow =: polytimes^:([`]`1:) NB. Polynomial power
   taylorat =: 2 : 'y{+/(u t.@:]*(v t.i.>:y) polypow ])"0 i._' NB. u@:v t.

Unfortunately, J does not support sums of infinite series.
There are two cases where the infinite series can be calculated finitely:
1) If u has a finite Taylor expansion with only the first n terms non-zero,
   i._ can be replaced by i.n
2) If 0=v t.0 (which happens with functions like 1&o.), all terms beyond the
   first >:y terms are zero at powers y and below, so i._ can be
replaced by i.>:y

Thus, your example just happens to work for 1&o.
   taylorat2 =: 2 : 'y{+/(u t.@:]*(v t.i.>:y) polypow ])"0 i.>:y'
   sin taylorat2 sin"0 i.10
0 1 0 _0.333333 0 0.1 0 _0.0253968 0 0.00515873
   0 j.~(1&o.t.i.10)&p.^:2 t.i.10 NB. (0 j.~y forces conversion to real)
0 1 0 _0.333333 0 0.1 0 _0.0253968 0 0.00515873

But similar techniques won't work for 2&o. or any other function with
non-zero constant terms. For example:
   (2&o.t.i.10)&p.^:2 t.i.10
4357r8064 0 4241r10080 0 _1241r12096 0 _1159r226800 0 12521r2540160 0
   (2&o.t.i.8)&p.^:2 t.i.8
389r720 0 101r240 0 _37r360 0 _53r10800 0

-- Mark D. Niemiec <[email protected]>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to