




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件介绍 第5讲自定义函数 5 1自定义函数5 2函数的应用 5 1自定义函数前面几章所介绍的各种函数都是在Mathenatiea系统中给好定义 明确功能 提供给用户直接调用的 但在实际问题中还有许多函数因为用户特殊需要 而系统中没有定义 在这种情况下需要由用户自己来给出定义 以供后面使用的方便 这就是下面要介绍的自定义函数 5 1 1自定义一元函数5 1 2自定义多元函数5 1 3自定义函数的保存与重新调出 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 2x 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 nf n 1 f 7 分段函数定义也必须使用延时赋值 f x Which x5 x 3 True 0 3 较快 较慢 上一讲中铁路托运行李问题 可以编写代码如下 f w If w 50 0 25w If w 100 0 35w 5 0 45w 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 u v u Sin v z u v a u b v 共有3个自定义二元函数 这为我们绘制参数曲线面提供了很大的方便 类似的还可以定义三元 四元以及更多元的自定义函数 5 1 2自定义多元函数自定义二元函数的一般形式是f u v 自选表达式例如h a k x a Exp k 2 x 2 带参数的概率函数s a b c x a Sin b x c 带参数的简谐运动函数 5 1 3自定义函数的保存与重新调出已经自定义好的函数 如果希望以后多次使用 这就需要妥善保存与重新调出 保存的方法如下 Save 文件名 自定义函数名序列f g h 例1 3 将函数保存到文件file1中 f x 1 1 x 2 Save file1 f 如果还有新的函数想要追加到文件file1中 可以g u v u 2 v 2 h a x y a Exp x 2 y 2 Save file1 g h 5 1 3自定义函数的保存与重新调出已经自定义好的函数 如果希望以后多次使用 这就需要妥善保存与重新调出 保存的方法如下 Save 文件名 自定义函数名序列f g h 例1 3 将函数保存到文件file1中 f x 1 1 x 2 Save file1 f 如果想要查看一下文件file1中的内容 有 file1 保存在文件filel中名为f g h的函数如果要重新调用 方法如下 首先进入Mathematica 然后调出file1文件 便可直接使用文件中的函数了 例如 计算f 1 g 1 2 的值有 file1f 1 g 1 2 5 2函数的应用本节介绍函数的一些应用 包括 如何使用函数进行重复运算 如何将函数应用于表达式的某些部分和将函数应用于集合等 由于这些函数的运算涉及到一些高级符号语言 可能对读者来说较难理解 但这些运算是非常有价值的 通过这些运算可以使读者更加有效地使用Madlematica系统进行工作 5 2 1函数迭代5 2 2变换规则5 2 3函数运算与算子 5 2 1函数迭代首先介绍关于重复使用函数的函数 见下表 表重复使用函数的函数 1 嵌套函数Nest与NestList函数Nest f x n 能对自变量使用函数f共n次 得到的是迭代最后的结果 下面先定义一个函数 然后利用函数Nest产生这个函数的迭代 re x 1 x 3Nest re x 3 函数NestList与Nest的区别在于前者在迭代过程中利用上一步的结果 而且得到的是一个序列 如果想得到一个迭代序列的话 使用这个函数会很方便 1 嵌套函数Nest与NestList函数NestList与Nest的区别在于前者在迭代过程中利用上一步的结果 而且得到的是一个序列 如果想得到一个迭代序列的话 使用这个函数会很方便 下面的例子是求解3的平方根的迭代算法 即newton3 x N 1 2 x 3 x NestList newton3 5 0 4 2 不动点函数FixedPoint与FixedPointList函数FixedPoint可以迭代至结果不再发生变化为止 其给出的结果是最后迭代结果 利用上面定义的函数产生最后迭代结果 FixedPoint newton3 5 0 如果想得到迭代序列 可以利用函数FixedPointList来进行 FixedPointList newton3 5 0 2 不动点函数FixedPoint与FixedPointList如果想得到迭代序列 可以利用函数FixedPointList来进行 FixedPointList newton3 5 0 也可以在函数FixedPointList中加入迭代的终止条件来限制比较长的序列的迭代 例如可以设置上面的迭代误差 当两次结果的差别小于0 0001时终止迭代 即FixedPointList newton3 5 0 SameTest Abs l 2 0 0001 3 迭代 折叠 函数Fold与FoldList函数FoldList和Fold可以用于多变量函数 其作用和以上两个函数一样 下面举几个例子说明这两个函数的应用 f x y x y 2FoldList f x a b c Fold函数可以得到最后结果 Fold f x a b c 3 迭代 折叠 函数Fold与FoldList在Mathematica中可以利用这两个函数构造很多有用的程序 下面是利用函数Fold生成一个求阶乘的程序 即fac n Fold Times 1 Range n fac 5 提示 在Mathematica中还有很多使用判断条件控制迭代次数的函数 利用这些函数可以使复杂的程序变简单 7 2 2变换规则变换规则可分为自动使用的规则与非自动使用的规则两类 1 自动使用的规则由上述内容知道 对表达式的求值过程就是系统对表达式进行一系列的使用变换规则的过程 系统原有的变换规则与用户新建的变换规则 函数或表达式 均被存入系统的规则库里 在求值时系统将会自动查阅与使用 7 2 2变换规则1 自动使用的规则由上述内容知道 对表达式的求值过程就是系统对表达式进行一系列的使用变换规则的过程 系统原有的变换规则与用户新建的变换规则 函数或表达式 均被存入系统的规则库里 在求值时系统将会自动查阅与使用 其中用 与 号定义的规则都属于这一类 可称之为自动使用的规则 比如在前面表达式求值中所举的例1 例2就是这样的例子 2 非自动使用的规则非自动使用的规则不能放入系统的规则库中 求值系统无法找到它们 因而系统不能自动使用 要由用户来说明这些规则 并要求它们做某些变换时 这些规则才能对表达式发挥作用 在数学里有许多用等式描述的演算规则 它们经常从两个不同的方向被人们使用 例如x2 1 x 1 x 1 根据不同的需要 可以要求它从左到右展开 也可以要求它从右到左合并 像这样的演算规则就应该放入非自动使用的规则中 因为在定义自动使用规则时 总是依照一个方向来考虑和进行变换的 3 带有条件的规则在延时赋值号 与 号定义的变换规则中 还可附加条件 它们定义的形式如下 模式 表达式 条件 模式 表达式 条件其中 是附加条件用的操作符 例2 1 利用带条件的规则定义阶乘函数f n n f 0 1 f n n f n 1 IntegerQ n n 0其中附加条件的内容是当n为整数时其值为真 否则为假 同时还要求n 0 例2 2 利用带条件的规则定义分段函数g x 1 x 15 这样定义的规则除了模式与对象表达式必须匹配以外 同时还要求附加条件也要满足 执行的结果才能正确 7 2 3函数运算与算子在数学中算子是完成特定计算或者操作的函数 从广义的角度来说 可以将函数看成算子 比如数学上常用的拉普拉斯算子 其实就是完成相应操作的函数 对于函数f x 完全可以看成是对对象x施以算子f定义的算子运算 将函数看成算子 Mathematica系统提供了对算子进行运算的运算函数 也就是以函数为变量的函数 7 2 3函数运算与算子对于函数f x 完全可以看成是对对象x施以算子f定义的算子运算 将函数看成算子 Mathematica系统提供了对算子进行运算的运算函数 也就是以函数为变量的函数 下表列出了几个常用的进行函数运算的函数 进行函数运算的函数 下面的例子是求函数Sin Cos和Tan的复合函数sin cos tan x 并对该复合函数求反函数 sct Composition Sin Cos Tan InverseFunction sct 对该复合函数算子给定变量 可以得到函数值 1 sct 1 Mathematica系统不能自动地将某个算子作用于表达式 但总是可以借助于一些函数的使用来完成这样的要求 下表列出了关于算子的一些运算函数 常用算子运算函数 7 3 4全局变量与局部变量前面使用的变量均为全局变量 这样做可能较为危险 一是会增加内存开支 二是当变量使用较多的情况下 若后面的程序与前面的程序使用了相同变量 再次调用前面的程序可能出现奇怪的错误 例4 1 f x a 0 Do a a i i 1 x a a为1加到x的值 f 4 4a 4 f a a 有问题 7 3 4全局变量与局部变量前面使用的变量均为全局变量 这样做可能较为危险 一是会增加内存开支 二是当变量使用较多的情况下 若后面的程序与前面的程序使用了相同变量 再次调用前面的程序可能出现奇怪的错误 例4 1 f x a 0 Do a a i i 1 x a f 4 4a 4 f a a原因是调用f a 后 全局变量a的值已经变为10了 使用模块函数可以解决这个问题 因为模块函数内定义的变量均为局部变量 模块函数的定义格式为 Module x y 模块体
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 颈椎损伤患者的个案护理
- 公司节假日培训课件
- 梯子游戏故事案例解读
- 亮闪闪的微笑课件
- 《装在套子里的人》笔记课件
- 腹外疝的护理查房
- 事故安全宣传培训记录课件
- 皮肤科护士年终总结
- 电气工程师年终总结报告
- 慢性肾小球肾炎患者的护理
- 2025-2026学年高二上学期数学第一次月考立体几何卷全解析【测试范围:沪教版2020必修第三册第十章】(上海专用)
- 小学法律知识竞赛试题(附答案)
- 浙教版(2023)五年级上册信息科技 第1课 身边的算法 课件
- 2025年五年级上学期语文第一单元测试卷含答案
- Unit 3 Places we live in单元整体公开课一等奖创新教学设计表格式(5课时)
- 2025年4月自考02204经济管理试题及答案
- 统战工作培训课件
- 泡茶的步骤课件
- 食堂整体装修方案(3篇)
- 工作票及操作票实施培训
- 《无机化学》第六版 课件 0绪论
评论
0/150
提交评论