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转置)
计算逐点积
公元3年。使用(应用+乘积)
计算乘积之和