Data update

This commit is contained in:
Ingy döt Net 2026-04-30 12:34:36 -04:00
parent 4bb20c9b71
commit cbaf4c4b64
12390 changed files with 318560 additions and 27248 deletions

View file

@ -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))

View file

@ -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))