问题标题:
Mathematica如何实现交叉计算(二)?如何实现交叉计算(二)?例如:输入:s1={{1,2},{3,4},{5,6},{3,2}};s2={{4,7},{24,31},{48,72}};输出:s3={48,60,72}说明:s1是乘法表,s2是与s1对应
问题描述:
Mathematica如何实现交叉计算(二)?
如何实现交叉计算(二)?
例如:
输入:s1={{1,2},{3,4},{5,6},{3,2}};
s2={{4,7},{24,31},{48,72}};
输出:s3={48,60,72}
说明:s1是乘法表,s2是与s1对应的区间表
下面的"相乘"表示两个表中任何两个元素相乘,如{1,2}与{3,4}相乘等于{3,4,6,8},其中两个表c1,c2"相乘"可用Table[c1[[j1]]*c2[[j2]],{j1,Length[c1]},{j2,Length[c2]}]函数.
首先取s1中前两个子表"相乘",并按s2中第1个区间取出一个表,再把这个表与s1中第3个子表"相乘",并按s2第2个子表的区间取出一个表,所得表再与s1第4个子表"相乘"并按s2第3个子表的区间取出一个表.依次交叉做下去.
上式子为:{1,2}与{3,4}"相乘"={3,4,6,8},取区间{4,7}={4,6}与{5,6}"相乘"={20,24,30,36}取区间{24,31}={24,30}与{3,2}相乘={72,90,48,60}取区间{48,72}={48,60,72}
谢谢!
郝志伟回答:
s1={{1,2},{3,4},{5,6},{3,2}};s2={{4,7},{24,31},{48,72}};s3=Fold[Intersection[Times@@@Tuples@{#1,#2[[1]]},Range@@#2[[2]]]&,First@s1,Thread[{Rest@s1,s2}]]
点击显示
数学推荐
热门数学推荐