Mathematica 教程07自定义函数

上传人:油条 文档编号:26878376 上传时间:2018-01-03 格式:PPT 页数:22 大小:201KB
返回 下载 相关 举报
Mathematica 教程07自定义函数_第1页
第1页 / 共22页
Mathematica 教程07自定义函数_第2页
第2页 / 共22页
Mathematica 教程07自定义函数_第3页
第3页 / 共22页
Mathematica 教程07自定义函数_第4页
第4页 / 共22页
Mathematica 教程07自定义函数_第5页
第5页 / 共22页
点击查看更多>>
资源描述

《Mathematica 教程07自定义函数》由会员分享,可在线阅读,更多相关《Mathematica 教程07自定义函数(22页珍藏版)》请在金锄头文库上搜索。

1、自定义函数,简单函数的定义复杂情况纯函数函数的属性,简单函数的定义,自定义函数的方法fx_ := x2 + y f2 fy fa - 1在例中,In1定义了数学意义上的函数f(x)=x2+y,自定义函数仍用:函数名自变量的形式,其中自变量x用 x_ 表示,而=用:= 表示,等号右边的数学表达式按常规形式.这一步执行后,没有输出结果,但Mathernatica记忆了关系式fx_:=x2+y。,在例中首先定义了自变量是u,v的二元函数f(u,v)=u2-v2,在In3中以u=1,v=l+x代入得到函数值1-(l+x)2,在In4和In 5中就是对表达式1-(1+x)2求导和积分。这说明,对自定义函

2、数仍可按人的意图进行各种符号运算。不过在Mathematica中自定义函数时,格式较为特殊,容易出现错误。,x与x_的区别,gx:=x2+y;fx_:=x2+y g2;f2 gy;fyfx_可以定义函数, gx不能定义一个函数Mathematica只记住了符号gx表示x2+y,但g2和gy等并没有值被求出。Mathematics约定fx中的x_表示函数f的自变量,而fx表示函数f当自变量取值为x时的函数值。,“:=”与“=”的差别,如果将例中的:=改用=,却一切正常,看不出问题.但它们的差别可由下例说明。两种等号的差别之一:x=2;fx_=2x;gx_:=2x; ?f ?g f3 g3,在例中

3、因为开始己经定义x=2,当使用“=”定义f(x)时,立即将右边的数学表达式进行求值,将x=2代入得到函数定义式fx_=4,Mathematica记忆的是fx_=4。而使用“:=”时,Mathematics总是将输入的函数定义式原样记忆。,如果事先没有定义x=2,则不会出现上述问题,被Mathematica记忆的仍是fx=2x.使用表达式fx_=2x与使用表达式fx_:=2x没有区别,再求f3时都是将x=3代入定义式右边的数学表达式,得到6。也就是说,都可以理解成了f(x)=2x了,因此两种等号没有差别。二种等号的差别之二,在例中前一个函数定义后右边的积分立即被求出,而后一个函数在定义后并不进行

4、积分,再求函数值时才进行积分.使用“?”查看可知,被Mathematica记忆的函数表达式不同。使用“=”时立即对右边的数学表达式进行计算,使用“:=”时右边的数学表达式不变,当求函数值时才进行计算。定义函数时,两种等号都可以使用,应当弄清两者的差别适当选用,不要造成定义函数必须使用“:=”的错觉。,由多个表达式定义的函数,可以使用递推公式定义函数。自定义计算n!的函数。f0=1;fn_:=n fn-1;f10说明:在例中In1定义了函数值f0,In2的函数定义式是递推公式,由此实际上定义了f(n)=n!.但以上定义有缺陷,如果求f0.5就会出错,因为Mathematica并不认为n表示非负整

5、数。解决方法是用n_Integer? Positive替代n_,说明n是整数(头为Integer)并且满足是正数的条件,其中问号是后一条件的分隔符.,参数个数不确定的函数,定义一个函数时,允许事先对参数指定默认值,如果使用时不给出参数值,就自动将默认值作为参数值。这样的参数格式如下:x_:v 其中冒号后面的v表示参数x的默认值.fx_, y_:0 := x2 + y2; f3; f3, 4以上In1中定义了第2个参数的默认值为0,这样在求值时允许不给出第2个参数的值。但是如果两个参数都使用默认值,就会出问题,在In2中就无法识别所给的一个参数值究竟是赋给哪一个参数的。当只有一个可选参数时,使用

6、以上方法是最方便的。,复杂情况,(1)参数的一般表示法_ 可以表示任何一个表达式x_ 代表一个名为x的表达式.x_h 代表一个名为x附加有限制性说明h的表达式._ _可以代表任何一个或多个表达式x_ _可以代表名为x的一个或多个表达式.x_ _h 代表名为x附加说明h的一个或多个表达式._ _ _可以代表任何零个或多个表达式x_ _ _可以代表名为x的零个或多个表达式.x_ _ _ h 代表名为x附加说明h的零个或多个表达式.,f := 2a; fx; fy + 2; f1, 2说明:上例定义的是一元函数,无论自变量取何值都得到同一函数值,实际上定义了一个常值函数。最后的f1,2是不合法的,因

7、为一个下划线只能代表一个参数,Mathematica不能求值。f_ := x + y; g_ := a b; fa; f1, 2, s; g; gr; g1, 2说明:上述两个例子演示了单下划线、双下划线、三下划线的区别,一然而它们却没有实用价值,因为它们时函数定义式右边的数学表达式不起作用.真正有实用价值的应用是自定义带有可选参数的函数。,Plotsina_, b_, opt_ := PlotSinx, x, a, b, opt; Plotsin0, 2Pi, AxesLabel - t, r, AxesOrigin - Pi, 0可选项可以是任意多个或没有,因而在定义式中使用了三下划线.f

8、x_:=0+x;gx_,y_:=x y;f1,2,3,4,5;g-1,2,3,4,5说明:这两个自定义函数并不复杂,但会使人感觉到,使用个数不确定的参数,既令人费解又容易出错。以上作为函数参数使用的带有下划线的那些表达式称为模式,模式指明了参数的结构与名称,设置可选参数默认值的普遍方法如果可选参数较多,可以使用以下两种方法设置默认值:SetOptionsf,option1-value1,.设置函数f的一个或多个可选参数的默认值。Optionsf=option1-value1,.设置函数f的全部可选参数的默认值。以上两种设置方法的差别在于,后一个是设置全部可选参数的默认值,而前者可以只设置或改变

9、部分默认值。后一函数还可以用于查阅默认值。,Optionsf=a-1,b-2;fx_,opt_:a xb/.opt/.Optionsf?f;f2;f2,b-3;f2,a-2;f2,a-2,b-3以上函数的定义式的形式为:函数表达式/.输入的可选参数表/.默认的可选参数表。执行过程是:首先将非可选参数的值代入函数表达式,然后将输入的可选参数表中给出的可选参数值代入函数表达式,因为用户给出的可选参数值先进行替换,就不会再用默认值替换了。用户没有给出值的可选参数,最后一律被默认值替换。这里需要注意opt的格式,是将所有输入的可选参数表达式放入一个表中,这是操作符“/.”要求的。,纯函数,纯函数的表达

10、式 Mathematica还使用一种特殊的函数表示式,能定义一种没有函数名字的函数,称这种函数为纯函数表达式:Function自变量,函数表达式表示一个函数。Functionx,x2;Functionx,x22;Functionx,x23也可以定义多元纯函数。Functionx,y,SinxCosy;Functionx,y,SinxCosy2,3,纯函数表达式的缩写形式,以上纯函数表达式比普通函数的表达式还复杂,需要键入更多的字符。然而改用纯函数的缩写形式就方便了,缩写形式是:函数表达式& 用&替代Function并省略自变量一项,其中一元自变量用特殊符号#表示,多元时用#n表示第n个自变量。

11、%2f = Sin#1Cos#2 &f2, 3,说明:在例中In1是前例中定义的纯函数的缩写形式,在Out1中的#1与#意义相同,都表示自变量。缩写形式使纯函数表示法大大简化、用#字符表示自变量,用&表示纯函数。In2中的表达式%2即#12&2,表示当#1=2时的函数值.In3中将纯函数用f表示,因此In4中的f2,3也是求纯函数的函数值。引入纯函数,实际上给出了另一种定义函数f(x,y)=sin(x)cos(y)的方法,而且不必考虑自变量使用什么字符表示。还有符号#表示所有自变量,#n表示从第n个起往后的所有自变量。,函数的属性,查看函数的属性 函数的属性用于指明函数所具有的某些特殊性质,M

12、athematica的内部函数大都带有一些属性,也可以给自定义函数添加属性.查看Sinx的属性。AttributesSin查看、建立和清除属性的Attributesf 查看名为f的函数的属性。Attributesfattr1,attr2,. 设置f的属性Attributesf 设置f的无任何属性,添加和清除属性的函数。SetAttributesf,attr1,attr2,.添加属性到f的属性表中ClearAttributesf,attr1,attr2,.清除f的指定属性Clearf清除f的定义但不清除属性。ClearAllf清除f的定义和属性但不清除符号f。Removef清除符号f.常用的函数

13、属性(1)ProtectedProtected使函数的定义式受到保护,不能重新定义。Mathematica的内部函数都有此属性,以防被用户修改。除了使用上面列出的设置、添加、清除函数外,还有对这一属性的专门操作函数:,Protectf给函数f加上Protected属性.UnProtectf清除函数fProtected属性.注意,内部函数也能被解除保护、重新定义和重新加上保护,但重启Mathematica时自动恢复原状。fx_ := 2x Protectf?ffx_ := 3x(2) ReadProtected属性ReadProtected使函数的定义式不能用“?”查看,但是并不保护这个函数。,fx_ := 2x; SetAttributesf, ReadProtected?f; fx_ := 3x; f2(3)Locked 属性Locked将函数的属性锁定,既不能修改也不能清除,但是函数的定义式可以改变(当未加保护属性时)。(4) Listable有属性Listable的函数能将fa,b,c,.变成fa,fb,fc,.,Sin1, 2, 3(5)NumericFunction如果函数具有属性NumericFunction,当自变量是数时则Mathematica认为函数值也是数,例如Sinx有此属性。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号