这个纯函数的#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咋理解,纯函数的操作对象是什么?
人气:169 ℃ 时间:2020-05-24 12:15:20
解答
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}不就行了
推荐
猜你喜欢
- 六年级数学同步训练下册P16页第三题怎么做
- 二阶微分方程y^3y''+1=0 当x=1 时,y=1,y'=0
- 自然界中某种因素的变化会引起其他一系列因素的变化,例如青藏高原积雪面积减小,会引起该地域自然环境的连锁变化.这种变化包括( ) ①地表温度年变化增大 ②风化加速导致岩崩
- 十字相乘法 因式分解 a^3+4a^2+4a
- 四边形ABCD的内角A与C互补,AB=1,BC=3,CD=DA=2
- 有17个苹果,分别分成二分之一,三分之一和九分之一,怎么分,
- (传球概率等)甲.乙.丙.丁四个人进行传球练习,每次球从一个人的手中传入其余三个人中的任意一个人的手
- A(-2,-3),B(2,1),C(1,4),D(-1,-4),判断AB向量CD向量是否共线