Mathematica 函数右下标有无的区别

文章转载


这里写图片描述
简单地说,如果只写f[x],那就只定义了f[x]的值。因为这里的x就是符号x。

但写f[x_]的话,这里的x_就不再是x这个符号本身,而是一个模式,它可以代表任何东西。

当然还可以给模式加一些条件。

这里写图片描述

Mathematica会自动给f的定义排序,特殊的排在前面,一般的排在后面。这样,计算f[某个东西]时,它会先看这个东西是不是x;如果是的话,那就等于1;如果不是的话,再看它是不是大于0:如果是的话,那就等于3;如果不是的话,就只剩下最一般的定义,那就是等于2。

这里写图片描述

这样就可以针对自变量的不同取值范围给出不同的定义。这样在定义一些分段函数或者递归定义的函数的时候就比较方便。比如说我们可以这样定义阶乘:

这里写图片描述

我们还可以用更复杂的模式。比如说可以规定自变量的形式。下面定义的这个函数可以把只有一个元素的列表中的那个元素取出来。

这里写图片描述

还可以用两道下划线代表列表中的连续几项,三道下划线代表列表中长度可以为0的连续几项。注意

这里写图片描述

这里f[{1}]没有找到符合的定义,于是原样返回。

于是快速排序在Mathematica中可以这样写:

这里写图片描述

有人抱怨Mathematica语言可读性不好。但在我看来,模式匹配是大大提高了可读性的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值