Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matrix 方案中的矩阵加法_Matrix_Scheme_Racket - Fatal编程技术网

Matrix 方案中的矩阵加法

Matrix 方案中的矩阵加法,matrix,scheme,racket,Matrix,Scheme,Racket,我正在尝试添加一个矩阵,但它不起作用 (define (matrix-matrix-add a b) (map (lambda (row) (row-matrix-add row b)) a)) (define (row-matrix-add row matrix) (if (null? (car matrix)) '() (cons (add-m row (map car matrix)) (row-matrix-add

我正在尝试添加一个矩阵,但它不起作用

(define (matrix-matrix-add a b) (map (lambda (row) (row-matrix-add row b)) a)) (define (row-matrix-add row matrix) (if (null? (car matrix)) '() (cons (add-m row (map car matrix)) (row-matrix-add row (map cdr matrix))))) (define (add-m row col) (if (null? col) 0 (+ (car row) (car col) (add-m (cdr row) (cdr col))))) (定义(矩阵添加a和b) (地图(lambda(行)(行矩阵添加行b)) a) ) (定义(行矩阵添加行矩阵) (如果为空(车辆矩阵)) '() (cons(新增m行(地图车矩阵)) (行矩阵添加行(映射cdr矩阵(()()))) (定义(添加m行列) (如果(空?列) 0 (+(汽车排) (车列) (增补-m(cdr行)(cdr列(()())))
以下是一个工作实现:

(define (matrix-add m1 m2)

  (define (matrix-add-row r1 r2 res-row)
    (if (and (not (null? r1)) (not (null? r2)))
    (matrix-add-row (cdr r1) (cdr r2)
            (cons (+ (car r1) (car r2)) res-row))
    (reverse res-row)))

  (define (matrix-add-each m1 m2 res)
    (if (and (not (null? m1)) (not (null? m2)))
    (let ((res-row (matrix-add-row (car m1) (car m2) ())))
      (matrix-add-each (cdr m1) (cdr m2) (cons res-row res)))
    (reverse res)))
  (matrix-add-each m1 m2 ()))
示例用法和输出:

>  (matrix-add '((7 2) (3 8)) '((4 8) (0 5)))
((11 10) (3 13))
> (matrix-add '((5 2) (4 9) (10 -3)) '((-11 0) (7 1) (-6 -8)))
((-6 2) (11 10) (4 -11))

以下是一个工作实现:

(define (matrix-add m1 m2)

  (define (matrix-add-row r1 r2 res-row)
    (if (and (not (null? r1)) (not (null? r2)))
    (matrix-add-row (cdr r1) (cdr r2)
            (cons (+ (car r1) (car r2)) res-row))
    (reverse res-row)))

  (define (matrix-add-each m1 m2 res)
    (if (and (not (null? m1)) (not (null? m2)))
    (let ((res-row (matrix-add-row (car m1) (car m2) ())))
      (matrix-add-each (cdr m1) (cdr m2) (cons res-row res)))
    (reverse res)))
  (matrix-add-each m1 m2 ()))
示例用法和输出:

>  (matrix-add '((7 2) (3 8)) '((4 8) (0 5)))
((11 10) (3 13))
> (matrix-add '((5 2) (4 9) (10 -3)) '((-11 0) (7 1) (-6 -8)))
((-6 2) (11 10) (4 -11))

这里是非常简短的工作实现。当您可以使用它时,Map擅长消除递归层


(define(matrix add xy)(map(lambda(xy)(map+xy))xy))

这里是非常简短的工作实现。当您可以使用它时,Map很好地消除递归层


(定义(矩阵加x y)(映射(λ(x y)(映射+x y))x y))

什么不起作用?你有错误吗?它没有做它应该做的事情。基本上,加法是错误的。刚启动的方案什么不起作用?你有错误吗?它没有做它应该做的事情。基本上,加法是错误的。刚开始的计划这个解决方案太可怕了。让事情变得比实际情况更复杂。这个解决方案太可怕了。让事情变得比实际情况更复杂。