怎么用Mathematica进行模式匹配?
1、明确一下,A是由三层列表构成的。

2、匹配第一层的所有整数:
Cases[A, _Integer]
只得到3个整数,因为Mathematica把A里面的子列表视为A的一个元素。
看,下一步。

3、找出A的第一层的子列表:
Cases[A, _List]

4、找出A的第一层的浮点数:
Cases[A, _Real]
结果只找到12.3,不包括里面的整数和分数。
原因是,Real是浮点数,不是全体实数。

5、找出A里面第一层的有理数:
Cases[A, _Rational]
同样,Mathematica只找到5/6这个分数,把小数和整数都排除在外。

6、找出A第一层的奇数:
Cases[A, t_ /; Mod[t, 2] == 1]

7、找出A第一层的所有非偶数:
Cases[A, t_ /; Mod[t, 2] != 0]

8、找出A的第一层的所有字母:
Cases[A, _Symbol]
m+n被视为表达式,不是字母。

9、找出A第一层的加法表达式:
Cases[A, _Plus]

10、A的第一层里面,以x为指数的幂运算表达式:
Cases[A, _^x]

11、Cases[A, x^_]

1、深入第二层,寻找A里面幂运算表达式:
Cases[A, _Power, 2]

2、寻找A里面所有的幂运算表达式:
Cases[A, _Power, Infinity]

3、A里面的所有字母:
Cases[A, _Symbol, Infinity]
令人吃惊的是,Mathematica竟然可以深入到表达式里面寻找字母,比如m和n。

4、寻找所有的加法表达式:
Cases[A, _Plus, Infinity]
为什么2+3没有找出来?
因为对A进行定义的时候,2+3已经被算出结果了。


声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
阅读量:25
阅读量:96
阅读量:63
阅读量:80
阅读量:91