作业帮 > 综合 > 作业

这个纯函数的#1,#2咋理解,mathematica软件

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/24 12:43:07
这个纯函数的#1,#2咋理解,mathematica软件
distances =
SparseArray[{{1, 2} -> 5, {2, 1} -> 5, {1, 3} -> 2, {3, 1} ->
2, {3, 2} -> 2,
{2, 3} -> 2, {2, 4} -> 4, {4, 2} -> 4, {3, 4} -> 5, {4, 3} ->
5, {4, 1} -> 6, {1, 4} -> 6, {4, 5} -> 8, {5, 4} -> 8, {1, 5} ->
1, {5, 1} -> 1}, {5, 5}, Infinity];
{length, tour} =
FindShortestTour[Range[5],
DistanceFunction -> (distances[[#1, #2]] &)]
#1,#2咋理解,纯函数的操作对象是什么?
f=distances[[#1, #2]] &]
令f函数作用于{x,y}
f/@{x,y},f@@{x,y}等
则#1就是x,#2就是y
相当于非纯函数f[x,y]
即distances[[x,y]]
当然x,y可以是两个点,如果是距离函数的话
在这里#1,#2表示的是位置,即所建立稀疏矩阵的指定的位置
比如distances[[3,4]]就表示,在矩阵中的3行4列的元素是多少,是5
再问: 这个我也懂,如果换做f[#1, #2] &[x, y] 我知道#1是x,#2是y 但是换做distances[[#1,#2]&这里的,我想知道相当于[x,y]的的函数参数在哪里呢
再答: distances[[#1,#2]]&的操作对像就是成对的点啊,跟其他距离函数没有区别比如 EuclideanDistance[{a, b}, {y, z}] DistanceFunction -> (distances[[#1, #2]] &)这样子只是对Range[5]中的元素进行了一个遍历啊, 不知道你什么意思。。。 参数就是1,2,3,4,5 1,2,3,4,5 合起来就成对
再问: f/@{x,y}这个不行~,缺#2
再答: 。。。在此例中可以用@@啊f@@{x,y}不就行了