Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.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
Scheme 是否可以使用“矢量矩阵乘法”;“地图”;及;套用;只有_Scheme - Fatal编程技术网

Scheme 是否可以使用“矢量矩阵乘法”;“地图”;及;套用;只有

Scheme 是否可以使用“矢量矩阵乘法”;“地图”;及;套用;只有,scheme,Scheme,我被要求实现矩阵乘法。到目前为止,我的代码是:(定义mult(λ(m1-m2)(if(或(空?m1)(空?m2))()(map-vec mult m1-m2)) 仅生成列表的列表。为了生成元素,必须对每个内部列表进行汇总,以便沿对角线添加值。我被困在应该如何进行2D乘法的部分,以便m1中的每一行都被m2中的每一行相乘(因此向量矩阵乘法)。我还实现了“转置”和“vec mult”。请给我一个如何处理这个问题的提示。教授希望我们使用转置和映射,但我不知道该怎么做 谢谢对列表中的每个元素使用绑定变量执

我被要求实现矩阵乘法。到目前为止,我的代码是:
(定义mult(λ(m1-m2)(if(或(空?m1)(空?m2))()(map-vec mult m1-m2))

仅生成列表的列表。为了生成元素,必须对每个内部列表进行汇总,以便沿对角线添加值。我被困在应该如何进行2D乘法的部分,以便m1中的每一行都被m2中的每一行相乘(因此向量矩阵乘法)。我还实现了“转置”和“vec mult”。请给我一个如何处理这个问题的提示。教授希望我们使用转置和映射,但我不知道该怎么做


谢谢

对列表中的每个元素使用绑定变量执行以下操作:

(let ((a 5))
  (map (lambda (e) (* a e)) '(1 2 3 4)))
; ==> (5 10 15 20) 
使用列表作为参数求和(或执行任何操作):

(apply + '(1 2 3)) 
; ==> 6
解压缩
列表:

(apply map list '((1 2 3) (4 5 6) (7 8 9) (10 11 12)))
; ==> ((1 4 7 10) (2 5 8 11) (3 6 9 12))
展平一层:

(apply append '((1 (2)) (3 4)))
; ==> (1 (2) 3 4)

我们考虑两个矩阵:

    [ a b ]            [ x ]
A = [ c d ]        v = [ y ]
首先,A和B的矩阵积是:

      [ ax + by ]
Ax =  [ cx + dy ]
注意,转置B给出:

 T   
v  = [ x y ]
现在考虑矩阵A的行与v的转置的元素相乘:

[a b] mult [x y]    [ ax by ]

[c d] mult [x y]  = [ cx dy ]
请注意,行的总和为:

ax + by 
cx + dy
哪些是Ax的元素

所以把A乘以v:

  • 转置v
  • 对于所有行,计算带v转置的逐点积
  • 收集行的总和
  • 广告1:转置:

    公元2年。使用
    (映射*行v转置)
    计算逐点积

    公元3年。使用
    (应用+乘积)
    计算乘积之和