Vocabulary/dcapco
>> << Down to: Dyad Back to: Vocabulary Thru to: Dictionary
x u D: n y Secant Slope Conjunction
Rank -- depends on the rank of u -- WHY IS THIS IMPORTANT?
This primitive has been removed from J Version 9.01 and later
The math/calculus addon defines a conjunction sslope_jcalculus_ that replaces the functions of this primitive. Execute
load 'math/calculus'
to load this addon after you have downloaded it through Tools|Package Manager.
The slope of a straight line drawn through point y and point y+x on the curve of the mathematical function [implemented by verb] u
...That is for n=1. More generally D:n is an approximation to the n-th derivative of u
sin D.1 y=:i.6 NB. The 1st derivative, for comparison purposes 1 0.540302 _0.416147 _0.989992 _0.653644 0.283662 0.0001 sin D:1 y NB. Secant slope for interval(s) [y,y+0.0001] 1 0.54026 _0.416192 _0.99 _0.653606 0.28371 0.001 sin D:1 y NB. Secant slope for wider interval 1 0.539881 _0.416601 _0.990063 _0.653265 0.284142 0.01 sin D:1 y NB. Secant slope for still wider interval 0.999983 0.536086 _0.420686 _0.990682 _0.649849 0.288452
Common Uses
1. To approximate a derivative, especially when better control over the step size x is needed
func =: verb define NB. function (x-2)^2 + (y-3)^2, with critical point at (2,3) 'x y' =. y (*: x-2) + (*: y-3) ) ]hessian =: func D. 2 (2 3) NB. Matrix of mixed second partial derivatives 2 _0.5 0.333333 2 NB. Whoops!! That's wrong. D. 2 chose a bad stepsize ]hessian =: 1e_6 func D: 2 (2 3) NB. Matrix of mixed second partial derivatives 2 0 0 2
Related Primitives
Derivative (u D. n)
More Information
1. x has the shape of an item of y, or is an atom that is replicated to that shape. When the full x is given, the step size can be controlled for each direction.
2. Multiple slopes (corresponding to partial derivatives) are calculated when the cells of u y have rank greater than 0. The result contains the slope of each result atom with respect to each input atom.
The shape of the overall result will be
(frame of y wrt verb u) , (shape of y) , (shape of result of u on a single cell) |<---- shape of result of single cell of u D: 1 ---->|
3. Higher derivatives are requested by a value of n greater than 1. These results are sensitive to step size
0j13 ": 1e_3 sin D:3 (1) NB. Some bad results 111.0223024625157 0j13 ": 1e_2 sin D:3 (1) _0.5390394797189 0j13 ": 1e_2 sin D:3 (1) _0.5276133364651 0j13 ": sin"0 D.3 (1) NB. This is the correct result _0.5403023058681
4. Higher-order secants are allowed.
The second-order secant is the secant of a verb u D: 1 whose result on each cell of u has shape
((shape of `y`) , (shape of result of `u` on a single cell)
The shape of u D: 2 y is
(frame of y wrt verb u) , (shape of y) , (shape of y) , (shape of result of u on a single cell) |<---- shape of result of single cell of u D: 1 ---->| |<----------- shape of result of single cell of u D: 2 ------------>|
The pattern continues for higher-order secants. These approximate all the possible mixed partial derivatives of u at y. The indexes in the "shape of y" sections of the above schematic select a particular mixed partial derivative.
Details
1. If any atom of n is less than 0, J signals an error.
n is converted to 1 >. '' $!.1 , n before processing, i.e. the first atom of n, but with 0 changed to 1.
The shape of the result is then
(frame of y wrt verb u) , (; n # <$y) , (shape of result of u on a single cell)