Structure and Interpretation of Classical Mechanics
.
(define (((delta eta) f) q) (define (g epsilon) (f (+ q (* epsilon eta)))) ((D g) 0)) (define eta (literal-function 'eta)) (define q (literal-function 'q))
— Patrick Eli Catach
.
Code
(define (f q) (compose (literal-function 'f (-> (UP Real) Real)) q))
and
(define (f q) (compose (literal-function 'f) q))
have the same effect. If you execute
(show-expression ((((delta eta) f) q) 't))
you will get
.
It seems not to make sense, because is functional. Its input is a path function, not a real number. We cannot differentiate it with respect to its argument, which is a path.
It actually make sense in this special case because now
(define (f q) (compose (literal-function 'f (-> (UP Real) Real)) q))
In other words, is a function of one argument only. And variation itself can be expressed in terms of differentiation:
So
No. This explanation is not correct. Even if is a function of one argument only, it is still a path function. Its input argument is a path, not a number. Different path inputs will give different outputs.
The correct explanation should be the following.
(define (f q) (compose (literal-function 'f) q)) (define eta (literal-function 'eta)) (define q (literal-function 'q))
These lines actually imply that is just a path-independent function.
If the function is just a path-independent,
For the time that
,
So the above lines of code are not correct, because they do not represent a path-dependent function. The correct code (for one-dimensional path ) should be
(define (((delta eta) f) q) (define (g epsilon) (f (+ q (* epsilon eta)))) ((D g) 0)) (define (f q) (compose (literal-function 'f (-> (UP Real (UP* Real) (UP* Real)) Real)) (Gamma q))) (define q (literal-function 'q (-> Real (UP Real)))) (define eta (literal-function 'eta (-> Real (UP Real)))) (print-expression ((((delta eta) f) q) 't)) (show-expression ((((delta eta) f) q) 't))
The result is
But this has a problem. It seems that is still not a function with a path as input. It is just a function with 3 real numbers as inputs.
Note that the path-dependent function is not really a general functional. A general functional can depend on an input function in any ways. For example,
![]()
![]()
A functional that defines the arc length of a curve:
![]()
– The Calculus of Variations
– Brian Keng
The function is not an ordinary function because its input is not a real number, but a path-function
. In other words, it does not depend on individual values of
at different individual times. Instead, its output depends on the whole path
. However, the function
is not a general functional either.
It is not a general functional in the sense that its input is not a general mathematical function, but a (function that represents a) path . Also,
depends on
in a specific way:
(define (f q) (compose (literal-function 'f (-> (UP Real (UP* Real) (UP* Real)) Real)) (Gamma q)))
So, besides being a (non-general) functional, , with a path,
, as input,
can also be regarded as an ordinary function that has 3 real number inputs:
,
, and
.
We can vary with respect to a path (the itself), but we cannot differentiate with respect to a path. We can only differentiate with respect to the values of the path
.
For simplicity, we consider the case that the path is one-dimensional. Only in the sense that
can also be regarded as an ordinary function that has 3 real number inputs, it can use the chain rule of ordinary differentiation:
— Me@2020-06-20 01:17:39 PM
.
.
2020.06.24 Wednesday (c) All rights reserved by ACHK