3 ms·
The article is interesting but one have to be aware that dual number are not a solution to automatic differentiation. The reason is that to have automatic diff
by frankohn 10y ago
The article is interesting but one have to be aware that dual number are not a solution to automatic differentiation.
The reason is that to have automatic differentiation one needs to keep in principle the epsilon^n for any order and the dual number just take epsilon^2 = 0 which is an strong limitation.
For example with dual number you can say that:
limit(x->0) (sin(x) - 1) / x = 1
just by doing x = epsilon but they will fail with:
limit(x->0) (cos(x) - 1) / x^2 = -1/2
because the quadratic terms you need will go to zero for x = epsilon.
- blablabla123 10y ago>The reason is that to have automatic differentiation one >needs to keep in principle the epsilon^n for any order and >the dual number just take epsilon^2 = 0 which is an strong >limitation. Actually not. Differentiation in an abstract sense is the change of the function, approximated linearly. This means: when you do normal differentiation, you basically do already throw away the squared terms. The Leibniz notation for a differentiated function df/dx is really explicit about this principle - as opposed to the Newton notation f'(x). What these people call dual numbers automatic differentiation is a really powerful tool. In a more abstract sense, having an object and adding a small epsilon to it, allows you differentiate much more general objects. For instance I could ask: how does a function S[f] of a function change with respect to a function f. I know this sounds like abstract non-sense but you can for example calculate the curve of a rope with it by solving dS[f] = 0 to f. >limit(x->0) (sin(x) - 1) / x = 1 >just by doing x = epsilon No, that's not the case. If you use the L'Hospital rules, you throw away the epsilon (it's constant) and the derivatives of both enumerator and denominator don't change. Thus the two limits stay the same.
- effie 10y ago> For example with dual number you can say that: limit(x->0) (sin(x) - 1) / x = 1 That is not a valid statement. Perhaps you meant this? limit(x->0) sin(x) / x = 1