mathematica 定义函数时连用两个中括号,如f[a_][x_],这是什么意思,与f[a_,x_]有什么本质区别吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/20 12:35:57
mathematica 定义函数时连用两个中括号,如f[a_][x_],这是什么意思,与f[a_,x_]有什么本质区别吗?
xUKOW+#T:a= PU.Tyb?b;ePlQc@%`1{g__; Բs{G\P!EPm˼LdskVY?4G8SE  i20l2@M\<6y/ءcK適T*(@QaQy2㣟k%b2na6fujKC,6(=TTEJ'dzۉ+o¬gvCkl44=E)a) < Gج26~v`(Eb.Y .%2~ R4x 0=[?øc1gȲ3,I,>eΩ),~~N`9cxPvZ<^aXS{B񪺦/*V;rfwV)R'dҔN9 rٌy:bN8.$n*ήBBI$\S_e`4ʿ׉NwQ+9]7ء,B7e/W\lwV V9g؝^Dރ8-H̵/"d]$~ӏB9Iku? D15b~LꢆZqgV%4GԅNNJ6z4J% B-sbiܝ|ig[X2NwAWMFgl&qɀv~& 0t $7ƀ~RYh`ڼ̠2fN\R+2=>E ea/UM2HJ45"*˂ ߢr5ñ>dEQW;2P.\p@,N7Ye 09vbݱ43>xF?fxR [kG\jYAbQ58*ӈ j/$ (xA6eCS jzpγ4q %rDᇑϿ%-ejJen75B۝)4qxr6f"EtZkxy 6{znf J7

mathematica 定义函数时连用两个中括号,如f[a_][x_],这是什么意思,与f[a_,x_]有什么本质区别吗?
mathematica 定义函数时连用两个中括号,如f[a_][x_],这是什么意思,与f[a_,x_]有什么本质区别吗?

mathematica 定义函数时连用两个中括号,如f[a_][x_],这是什么意思,与f[a_,x_]有什么本质区别吗?
两者本质上还是有一些细微的不同,主要反映在两个函数的值集的不同,见下图:

可以看到函数 f 的定义是存在 f 的 DownValues,但是函数 g 的定义却是存在 g 的 SubValues 中的,对于一般的不涉及自定义函数属性操作的话,两者区别不大,推荐使用第一种表达方式,但是如果你除了自定义函数外,还要赋予函数一些属性,例如 HoldAll,Listable 等等,那么两者是有一些显著的差异的,稍不注意就会出错,切记只有 DownValues 定义的函数才能使所有的参数全部继承这些属性,而通过 SubValues 定义的函数只有最外面的参数才能继承属性.
下面是一个例子,看了之后就明白了.

上图中 f 和 g 的执行结果是不一样的.

经过分析,我初步认为两者完全一样,都是定义函数的方式。
首先我们采用两种方式分别定义一个函数:
f[x_, y_] = x^2 + y^2;
z[x_][y_] = x^2 + y^2;
再使用FullForm()函数查看函数的完整形式:
f[x,y]// FullForm
f[x][y]// FullForm
输出结果都是:
Plu...

全部展开

经过分析,我初步认为两者完全一样,都是定义函数的方式。
首先我们采用两种方式分别定义一个函数:
f[x_, y_] = x^2 + y^2;
z[x_][y_] = x^2 + y^2;
再使用FullForm()函数查看函数的完整形式:
f[x,y]// FullForm
f[x][y]// FullForm
输出结果都是:
Plus[Power[x,2],power[y,2]]

收起