Data update
This commit is contained in:
parent
4bb20c9b71
commit
cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions
|
|
@ -0,0 +1,23 @@
|
|||
(define (dec x)
|
||||
(- x 1))
|
||||
|
||||
(define (halve x)
|
||||
(/ x 2))
|
||||
|
||||
(define (row*col row col)
|
||||
(apply + (map * row col)))
|
||||
|
||||
(define (matrix-multiply m1 m2)
|
||||
(map
|
||||
(lambda (row)
|
||||
(apply map (lambda col (row*col row col))
|
||||
m2))
|
||||
m1))
|
||||
|
||||
(define (matrix-exp mat exp)
|
||||
(cond ((= exp 1) mat)
|
||||
((even? exp) (square-matrix (matrix-exp mat (halve exp))))
|
||||
(else (matrix-multiply mat (matrix-exp mat (dec exp))))))
|
||||
|
||||
(define (square-matrix mat)
|
||||
(matrix-multiply mat mat))
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
(import (srfi 231))
|
||||
|
||||
(define (matrix* A B)
|
||||
(array-copy! (array-inner-product A + * B)))
|
||||
|
||||
(define (matrix-square A)
|
||||
(matrix* A A))
|
||||
|
||||
(define (matrix-identity A)
|
||||
(array-copy! (make-array (array-domain A)
|
||||
(lambda (i j) (if (= i j) 1 0)))))
|
||||
|
||||
(define (matrix-expt A n)
|
||||
(cond ((zero? n) (matrix-identity A))
|
||||
((= 1 n) A)
|
||||
((even? n) (matrix-expt (matrix-square A)
|
||||
(quotient n 2)))
|
||||
(else (matrix* A (matrix-expt (matrix-square A)
|
||||
(quotient n 2))))))
|
||||
|
||||
(define a
|
||||
(list*->array 2 '((3 2)
|
||||
(2 1))))
|
||||
|
||||
(for-each (lambda (i)
|
||||
(for-each display
|
||||
(list "a^" i " = " (array->list* (matrix-expt a i)) #\newline)))
|
||||
(iota 11))
|
||||
Loading…
Add table
Add a link
Reference in a new issue