Mathematica 如何得到2个表中多种运算符号的表达式?
来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/09/22 06:58:41
Mathematica 如何得到2个表中多种运算符号的表达式?
如何得到2个表中多种运算符号的表达式?
输入:
s1={5,6,7,8}
s2={1,2,3,4}
例如如何得到2种运算符号的表达式:
s3=5~1#6~2#7~3#8~4
(其中~和#各表示一种运算符号,假设没有结合律,即前面得到的结果再与下一个数运算即可)
例1:如当~表示+,而#表示-时就输出:
s4=5-1+6-2+7-3+8-4=16
例2:如当~表示*,而#表示+时就输出:
s5=5*1+6*2+7*3+8*4=380 (假设没有结合律,即前面得到的结果再与
下一个数运算,这实际是省略了括号)
当s1,s2的元素很多,手工列出s3的表达式很麻烦,如何通过表s1,s2自动得到s3的表达式?
如何得到2个表中多种运算符号的表达式?
输入:
s1={5,6,7,8}
s2={1,2,3,4}
例如如何得到2种运算符号的表达式:
s3=5~1#6~2#7~3#8~4
(其中~和#各表示一种运算符号,假设没有结合律,即前面得到的结果再与下一个数运算即可)
例1:如当~表示+,而#表示-时就输出:
s4=5-1+6-2+7-3+8-4=16
例2:如当~表示*,而#表示+时就输出:
s5=5*1+6*2+7*3+8*4=380 (假设没有结合律,即前面得到的结果再与
下一个数运算,这实际是省略了括号)
当s1,s2的元素很多,手工列出s3的表达式很麻烦,如何通过表s1,s2自动得到s3的表达式?
这个问题的具体处理,取决于你要使用的靠里的那个运算符是否具有Listable属性,以及靠外的那个运算符是否允许多个参数.大部分的算数运算符都有Listable属性.比如乘法:Attributes[Times]
(* {Flat, Listable, NumericFunction, OneIdentity, Orderless, Protected} *)多个参数方面嘛,有的有有的没有……总之你举的两个例子都符合这个条件,对于有这种属性的算符,可以这样处理:Plus @@ (s1-s2)
Plus @@ (s1 s2)至于没有Listable属性的嘛,其实也差不多……唉呀直觉上这个回答已经够你用了,就先到这儿吧.
再问: 可能我没说清楚 表达式:s3=5~1#6~2#7~3#8~4 实际应该是:s3=(((((((5~1)#6)~2)#7)~3)#8)~4) 因此 s4=((((((5*1)+6)*2)+7)*3)+8)*4=380 也就是说,如何才能把s3这个表达式列出来? 谢谢!
再答: 以你举的例子为例的话:mid = Transpose[{s1, s2}];
Fold[(# + #2[[1]]) #2[[2]] &, Times @@ First@mid, Rest@mid]
(* {Flat, Listable, NumericFunction, OneIdentity, Orderless, Protected} *)多个参数方面嘛,有的有有的没有……总之你举的两个例子都符合这个条件,对于有这种属性的算符,可以这样处理:Plus @@ (s1-s2)
Plus @@ (s1 s2)至于没有Listable属性的嘛,其实也差不多……唉呀直觉上这个回答已经够你用了,就先到这儿吧.
再问: 可能我没说清楚 表达式:s3=5~1#6~2#7~3#8~4 实际应该是:s3=(((((((5~1)#6)~2)#7)~3)#8)~4) 因此 s4=((((((5*1)+6)*2)+7)*3)+8)*4=380 也就是说,如何才能把s3这个表达式列出来? 谢谢!
再答: 以你举的例子为例的话:mid = Transpose[{s1, s2}];
Fold[(# + #2[[1]]) #2[[2]] &, Times @@ First@mid, Rest@mid]
Mathematica 如何得到2个表中多种运算符号的表达式?
mathematica 符号运算
Mathematica符号运算速成
Mathematica 如何得到变量x的这种逻辑“或”表达式?
如何使用Mathematica进行符号运算和化简
matlab 求导得到的符号表达式再进行运算,解方程组.
Mathematica 如何生成”或“表达式?
如何将Mathematica计算出的表达式化为C++中的式子?
mathematica求助:如何对带有字母的多项式进行运算?
如何把mathematica不定积分的值代入下一步运算
mathematica 表达式简化的问题
5个4运用运算符号如何得到16