blob: 4acdc18430a569189ce80dfd1f98b34f278ed7a3 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#lang racket
(require "../../shared/lists.rkt")
(define (dot-product v w)
(accumulate + 0 (map * v w)))
(define (matrix-*-vector m v)
(map (lambda (m-row)
(accumulate + 0 (map * m-row v))) m))
(define (transpose mat)
(accumulate-n cons '() mat))
(define (matrix-*-matrix m n)
(let ((cols (transpose n)))
(map (lambda (m-row)
(map (lambda (n-col)
(dot-product m-row n-col)) cols)) m)))
(define test-m (list (list 1 2 3 4)
(list 4 5 6 6)
(list 6 7 8 9)))
(define test-n (list (list 1 2 3)
(list 4 5 6)
(list 6 7 8)
(list 6 7 8)))
(define test-v (list 1 2 3 4))
((lambda ()
(newline)
(display (matrix-*-vector test-m test-v))
(newline)
(display (transpose test-m))
(newline)
(display (matrix-*-matrix test-m test-n))))
|