Mathematica 如何实现交叉计算?
问题描述:
Mathematica 如何实现交叉计算?
如何实现交叉计算?
例如:
输入:s1={{1,2},{3,4},{5,6,7}};
s2={{4,7},{24,36}};
输出:s3={24,28,30,36}
说明:s1是乘法表,s2是区间表.下面的"相乘"表示两个表中任何两个元素相乘
首先取s1中{1,2}与{3,4}"相乘"等于{3,4,6,8},取s2中第1个区间值{4,7}得到{4,6},再把
{4,6}与{5,6,7}"相乘"得到{20,24,28,30,36,42},取s2中第2个区间值{24,36}得到{24,28,30,36},当有更多子表时依次类推.
答
"再把{4,6}与{5,6,7}"相乘"得到{20,24,28,30,36,42}"可以用
Times @@@ Tuples@{{4,6},{5,6,7}}
"取s2中第2个区间值{24,36}得到{24,28,30,36}"可以用
Select[%,IntervalMemberQ[Interval@{24,36},#] &]