- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软 件 介 绍 第5讲 自定义函数 5.1 自定义函数 5.2 函数的应用 5.1 自定义函数 前面几章所介绍的各种函数都是在Mathenatiea系统中给好定义、明确功能,提供给用户直接调用的。 但在实际问题中还有许多函数因为用户特殊需要,而系统中没有定义,在这种情况下需要由用户自己来给出定义,以供后面使用的方便,这就是下面要介绍的自定义函数。 5.1.1 自定义一元函数 自定义一元函数方法如下: f [x_] := 自选表达式 例如f[x_] := 2x + 3等,如果将此式同数学中常用的函数定义符号f(x)=2x+3相比较,容易看到二者间的差别。 按照Mathematica的规定,应该将圆括号换为专用于函数的方括号,即f[x]=2*x+3。 于是二者间的主要差别有二: 一是自变量“x_”与“x”的差别, 二是定义符“:=”与“=”的差别。 (1) 先看,x_与x功能上的差别 【例1-1】 f[x_]:= 2 x + 3b; f[x] f[y] f[b] f[{1, 2, 3}] g[x]:= 2x + 3b; g[x] g[y] 无定义,找不到与右端表达式相匹配的y,原样输出 g[b] g[{1, 2, 3}] 上面例子说明: ① 自定义函数符号f[x_] := 2x + 3b中的x_(在x后面必须紧跟着加一个下划线)同数学函数符号f(x)中x的功能基本上一样,都是起着自变量的作用, 在Mathemtica里将x_称为规则变量或模式变量, 而f[x]中的x类似于数学里的一个常量,即f[x]只代表f[x_]在某一点的值。 ② f[x_] := 2x + 3b中模式变量x_代表着一类重要的实体,它不仅可以取实数,还可以取向量和矩阵,以及由f所规定的同右端表达式中与x_相匹配的任何结构的量。 (2) 再看“=”与“:=”功能上的差别 差别是:前者为立即赋值, 后者为延时赋值 亦即使用“=”号时,右边表达式在定义时被立即赋值,而使用“:=”号时,右边的表达式在定义时暂不赋值,直到被调用时才被赋值。请看下面的例子: 【例1-2】 Clear[f, g]; x = 2; f[x_] = x^2; g[x_] := x^2; f[3] g[3] 上面例子说明,f[x_] = x^2在定义时便被赋值 x = 2,在调用它时,f[3]中的值已是22了, 而g[x_] := x^2在定义时暂时不赋值,直到调用g[3]时才被赋值g[3] = 32。 在使用自定义函数时,要特别注意到它与数学中已经习惯使用的函数符号f(x)在这两点上的不同,以避免一些不必要错误的发生。 例中设置开头语句Clear[f, g],是为了清除掉前面对f与g的所有定义,否则容易引起同例1中f,g的混淆,常用的清除函数有: f[x_] :=. 清除f[x_]的定义 Clear[f] 清除f的所有定义 说明: (1) x_的使用使x可作自变量:若f[x]=3+x,则f[x]与f[y]不同 (2) :=为延时赋值,每次调用时才计算,大多数情况下与赋值=产生相同的结果,但有时必须使用。 总之: (2) :=为延时赋值,每次调用时才计算,大多数情况下与赋值=产生相同的结果,但有时必须使用。 例如,定义递归函数必须使用延时赋值: f[0] = 1; f[n_] := n f[n - 1]; f[7] 分段函数定义也必须使用延时赋值: f[x_] := Which[ x 0, x^2, x 5, x^3, True, 0] (3) =较快,:=较慢 上一讲中铁路托运行李问题,可以编写代码如下: f[w_] : = If[w = 50, 0.25 w, If[w = 100, 0.35 w - 5, 0.45 w - 15]] f[40] 【例3-15】用Newdon迭代法求方程x=ex – 2在1.2附近的根。 流程图: 代码如下: f[x_] := x - Exp[x] + 2; x0 = 1.2; While[Abs[x - x0] 10^(-6), x = x0; x0 = x - f[x]/f[x]; Print[NumberForm[x0, 9]]] 5.1.2 自定义多元函数 自定义二元函数的一般形式是 f[u_,v_] := 自选表达式 如在第2章的参数式绘图中,绘制螺旋面时我们曾引入了 x[u_, v_] := u*Cos[v]; y
文档评论(0)