Update
This commit is contained in:
parent
7c695b47eb
commit
40fc24500d
@ -28,24 +28,6 @@
|
|||||||
; look for the compiled file like "convolution.o" and from now on:
|
; look for the compiled file like "convolution.o" and from now on:
|
||||||
; load("carleman.o")$
|
; load("carleman.o")$
|
||||||
|
|
||||||
; Usage
|
|
||||||
; -----
|
|
||||||
; Two functions are provided here:
|
|
||||||
; * carleman(v)
|
|
||||||
; * carleman_diag(v)
|
|
||||||
; The most important is the second one.
|
|
||||||
;
|
|
||||||
; Both functions compute the Carleman matrix of a function given as
|
|
||||||
; a list of coefficients from its Taylor expansion at 0.
|
|
||||||
; For instance: carleman([0,2,1,0,0,0,0,0]); for f(x)=x^2+2x
|
|
||||||
;
|
|
||||||
; The size of resulting matrices will match the length of the initial list.
|
|
||||||
;
|
|
||||||
; The second function returns the diagonalized Carleman matrix as a list
|
|
||||||
; of three matrices whose dot product is the Carleman matrix.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Compute the Carleman matrix for series whose coefficients are in v.
|
; Compute the Carleman matrix for series whose coefficients are in v.
|
||||||
; Return a list of lists.
|
; Return a list of lists.
|
||||||
; The vector v contains Maxima objects, but the car '(mlist simp) should
|
; The vector v contains Maxima objects, but the car '(mlist simp) should
|
||||||
@ -62,7 +44,7 @@
|
|||||||
(addn
|
(addn
|
||||||
(loop for a in x
|
(loop for a in x
|
||||||
for b in u
|
for b in u
|
||||||
collect (mul a b))) s))
|
collect (mul a b)) NIL) s))
|
||||||
finally (return s))
|
finally (return s))
|
||||||
collect u)))
|
collect u)))
|
||||||
|
|
||||||
@ -84,7 +66,7 @@
|
|||||||
(addn
|
(addn
|
||||||
(loop for e in x
|
(loop for e in x
|
||||||
for f in u
|
for f in u
|
||||||
collect (mul e f)))
|
collect (mul e f)) NIL)
|
||||||
(sub d1 d2)) x)
|
(sub d1 d2)) x)
|
||||||
for d2 = (div d1 d) then (div d2 d)
|
for d2 = (div d1 d) then (div d2 d)
|
||||||
finally (setf (cdr z) r)
|
finally (setf (cdr z) r)
|
||||||
@ -115,7 +97,7 @@
|
|||||||
(addn
|
(addn
|
||||||
(loop for e in x
|
(loop for e in x
|
||||||
for f in u
|
for f in u
|
||||||
collect (mul e f)))
|
collect (mul e f)) NIL)
|
||||||
(sub d1 d2)) (cdr y))
|
(sub d1 d2)) (cdr y))
|
||||||
finally (return (append q x)))))
|
finally (return (append q x)))))
|
||||||
|
|
||||||
@ -128,7 +110,7 @@
|
|||||||
(defun $carleman (v)
|
(defun $carleman (v)
|
||||||
(simplifya (cons '($matrix)
|
(simplifya (cons '($matrix)
|
||||||
(mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
(mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
||||||
(carleman (cdr v))))))
|
(carleman (cdr v)))) NIL))
|
||||||
|
|
||||||
; Let M be the Carleman matrix of a function having 0 as a fixed point
|
; Let M be the Carleman matrix of a function having 0 as a fixed point
|
||||||
; (ie. f(0)=0) and f'(0) not in {0, 1} ; now, V(M) is such
|
; (ie. f(0)=0) and f'(0) not in {0, 1} ; now, V(M) is such
|
||||||
@ -148,13 +130,13 @@
|
|||||||
; left part
|
; left part
|
||||||
(simplifya
|
(simplifya
|
||||||
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
||||||
(carleman-diag-left m d))))
|
(carleman-diag-left m d))) NIL)
|
||||||
; diagonal matrix
|
; diagonal matrix
|
||||||
(simplifya
|
(simplifya
|
||||||
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
||||||
(carleman-diag-middle m d))))
|
(carleman-diag-middle m d))) NIL)
|
||||||
; right part
|
; right part
|
||||||
(simplifya
|
(simplifya
|
||||||
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
(cons '($matrix) (mapcar #'(lambda (x) (simplify (cons '(mlist) x)))
|
||||||
(carleman-diag-right m d))))))))
|
(carleman-diag-right m d))) NIL)) NIL)))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user