在mathematica中编写两个函数

时间:2013-01-10 15:32:10

标签: wolfram-mathematica

我是Mathematica的新手,我无法定义某种功能组合。

m1m2成为m1: R^2 -> R^2m2:R^2->R^1的地图,其中R是实线

m1[eta_, zeta_] = {eta^3, zeta^3} 
m2[x_, y_] = x^2 + y^2

m3[eta_, zeta_]  = Composition[m2, m1][eta, zeta]

在评估最后一行时,即shift+enter我得到了输出

m2[{eta^3, zeta^3}]

但对此的答案应为m3[eta,zeta]=eta^6 + zeta^6

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您的函数m1返回包含2个元素的列表,而您的函数m2需要2个参数。更改m1返回的内容或m2期望的内容。在这种情况下,将m2重新定义为

可能更容易
m2[{x_, y_}] = x^2 + y^2

线索是m2[{eta^3, zeta^3}]只是Mathematica在为函数提供错误的参数时给出的输出 - 它返回未评估的输入表达式。你学习的时候会看到很多。

哦,您可能希望在函数定义中使用SetDelayed(通常写为:=)而不是Set(或=)。请参阅文档,了解您可能需要的原因。

答案 1 :(得分:1)

写:m3 [eta_,zeta_] = m2 @@ m1 [eta,zeta]