- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mathematica的教程07自定义函数
自定义函数 简单函数的定义 复杂情况 纯函数 函数的属性 简单函数的定义 自定义函数的方法 f[x_] := x^2 + y f[2] f[y] f[a - 1] 在例中,In[1]定义了数学意义上的函数f(x)=x^2+y,自定义函数仍用:函数名[自变量]的形式,其中自变量x用 x_ 表示,而=用:= 表示,等号右边的数学表达式按常规形式.这一步执行后,没有输出结果,但Mathernatica记忆了关系式f[x_]:=x^2+y。 在例中首先定义了自变量是u,v的二元函数f(u,v)=u^2-v^2,在In[3]中以u=1,v=l+x代入得到函数值1-(l+x)^2,在In[4]和In [5]中就是对表达式1-(1+x)^2求导和积分。这说明,对自定义函数仍可按人的意图进行各种符号运算。不过在Mathematica中自定义函数时,格式较为特殊,容易出现错误。 x与x_的区别 g[x]:=x^2+y;f[x_]:=x^2+y g[2];f[2] g[y];f[y] f[x_]可以定义函数, g[x]不能定义一个函数 Mathematica只记住了符号g[x]表示x^2+y,但g[2]和g[y]等并没有值被求出。 Mathematics约定f[x]中的x_表示函数f的自变量,而f[x]表示函数f当自变量取值为x时的函数值。 “:=”与“=”的差别 如果将例中的:=改用=,却一切正常,看不出问题.但它们的差别可由下例说明。 两种等号的差别之一: x=2;f[x_]=2x;g[x_]:=2x; ?f ?g f[3] g[3] 如果事先没有定义x=2,则不会出现上述问题,被Mathematica记忆的仍是f[x]=2x.使用表达式f[x_]=2x与使用表达式f[x_]:=2x没有区别,再求f[3]时都是将x=3代入定义式右边的数学表达式,得到6。也就是说,都可以理解成了f(x)=2x了,因此两种等号没有差别。 二种等号的差别之二 在例中前一个函数定义后右边的积分立即被求出,而后一个函数在定义后并不进行积分,再求函数值时才进行积分.使用“?”查看可知,被Mathematica记忆的函数表达式不同。使用“=”时立即对右边的数学表达式进行计算,使用“:=”时右边的数学表达式不变,当求函数值时才进行计算。定义函数时,两种等号都可以使用,应当弄清两者的差别适当选用,不要造成定义函数必须使用“:=”的错觉。 由多个表达式定义的函数 可以使用递推公式定义函数。 自定义计算n!的函数。 f[0]=1;f[n_]:=n f[n-1];f[10] 说明:在例中In[1]定义了函数值f[0],In[2]的函数定义式是递推公式,由此实际上定义了f(n)=n!.但以上定义有缺陷,如果求f[0.5]就会出错,因为Mathematica并不认为n表示非负整数。解决方法是用n_Integer? Positive替代n_,说明n是整数(头为Integer)并且满足是正数的条件,其中问号是后一条件的分隔符. 参数个数不确定的函数 定义一个函数时,允许事先对参数指定默认值,如果使用时不给出参数值,就自动将默认值作为参数值。这样的参数格式如下: x_:v 其中冒号后面的v表示参数x的默认值. f[x_, y_:0] := x^2 + y^2; f[3]; f[3, 4] 以上In[1]中定义了第2个参数的默认值为0,这样在求值时允许不给出第2个参数的值。但是如果两个参数都使用默认值,就会出问题,在In[2]中就无法识别所给的一个参数值究竟是赋给哪一个参数的。当只有一个可选参数时,使用以上方法是最方便的。 复杂情况 (1)参数的一般表示法 _ 可以表示任何一个表达式 x_ 代表一个名为x的表达式. x_h 代表一个名为x附加有限制性说明h的表达式. _ _可以代表任何一个或多个表达式 x_ _可以代表名为x的一个或多个表达式. x_ _h 代表名为x附加说明h的一个或多个表达式. _ _ _可以代表任何零个或多个表达式 x_ _ _可以代表名为x的零个或多个表达式. x_ _ _ h 代表名为x附加说明h的零个或多个表达式. f[] := 2a; f[x]; f[y + 2]; f[1, 2] 说明:上例定义的是一元函数,无论自变量取何值都得到同一函数值,实际上定义了一个常值函数。最后的f[1,2]是不合法的,因为一个下划线只能代表一个参数,Mathematica不能求值。 f[__] := x + y; g[___] := a b; f[a]; f[1, 2, s]; g[]; g[r]; g[1, 2] 说明:上述两个例子演示了单下划线、双下划线、三下划线的区别,一然而它们却没有实用价值
文档评论(0)