免费预览已结束,剩余22页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Mathematica编程 8 1全局变量 局部变量 过程8 1 1全局变量 在Mathematica中键入的各种命令或在Mathematica的程序语句中 变量被赋值后 必须用Mathematica清除变量的命令才能使其还原为符号的变量 称为全局变量 察看某变量是否为全局变量 可以键入命令 变量名Global 变量名 说明该变量是全局变量 否则 就不是全局变量 例如 要知道变量w是否为全局变量 可以键入 w键入执行命令后 显示结果Global ww 2说明w是全局变量 且有数值2 8 1 2局部变量 在Mathematica的命令或程序中出现的任何合法的变量名符号 如果该变量名所代表的变量没有被赋值 则它就作为数学算式中的符号参与数学的公式推导和运算 如果该变量被赋值了 则用该变量所赋的值参与对应的数学公式推导和运算 因此 当用户在做符号运算时使用的符号含有被赋了值的变量名 则就会出现察觉不到的错误 为克服这种错误 可以在使用Mathematica的命令之前 先用Clear 变量1 变量2 将要使用的所有变量名做清除处理 就可以避免上述错误 不同于全局变量 称变量的赋值效果只在某一模块内有效的变量为局部变量 Mathematica中Module模块的命令为 Module 变量表 表达式 例如 在Mathematica键入In 4 u 5 In 5 s Module u v 1 u 1 v u v 3 Out 5 5In 6 Print u v s Out 6 5v5 在Mathematica中使用局部变量很简单 只要把涉及到的局部变量用大括弧 括起来 放在Module模块命令的 变量表 位置 并把相应的语句写成语句序列放在Module模块命令的表达式位置即可 例如 Mathematica中有如下命令In 7 s Sin x In 8 u Cos x In 9 D s u x Out 9 Cos x 2 Sin x 2命令中的变量s u的值将会影响随后的命令 如果写成In 10 Module s u x s Sin x u Cos x D s u x Out 10 Cos x 1 2 Sin x 1 2此时命令中的变量s u就是局部变量 它们的值将不会影响随后的命令 8 1 3过程 在Mathematica中 一个用分号隔开的表达式序列称为一个复合表达式 它也称为一个过程 例如 In 11 s 1 u s 3 u uOut 11 16 Mathematica的过程可以作为Module模块命令的表达式 如果不关心局部变量问题 可以把一个过程用小括号括起来构成一个整体 这样可以用由小括号括起来的过程来定义一个函数 例如 已知有n个元素的一个数表x a1 a2 an 定义一个计算此类数表最大数与最小数平方差的函数 用过程来定义可以写为 In 12 g x m Max x n Min x m m n n 如果不用小括号括起来 而是写为In 13 g x m Max x n Min x m m n n则In 13 定义的g x 实际上是Max x 不是数表最大数与最小数平方差函数 应该注意过程加小括号与不加括号的区别 本例题还可以用模块来定义函数 In 14 g x Module m n m Max x n Min x m m n n 8 2条件控制语句 Mathematica涉及条件选择的语句有好几种 这里介绍常用的三种语句 if语句 Which语句 Switch语句 8 2 1If语句If语句的一般形式为 If 条件 语句或语句列 具体形式有命令形式1 If 条件 语句1 功能 如果条件成立 则执行对应的语句1 并将语句执行结果作为If语句的值 如果条件不成立 不执行语句1 命令形式2 If 条件 语句1 语句2 功能 根据条件的成立与否确定执行哪一个语句 具体执行为 条件成立时 执行语句1 否则 执行语句2 并将语句执行结果作为If语句的值 命令形式3 If 条件 语句1 语句2 语句3 功能 根据条件的成立与否确定执行哪一个语句 具体执行为 条件成立时 执行语句1 条件不成立时 执行语句2 否则 执行语句3 并将语句执行结果作为If语句的值 例1 用Mathematica命令描述下面问题 先产生一个函数 0 1 内的随机实数 再判断该随机数是否小于0 5 如果小于0 5 则将此随机数显示出来 否则显示 解 Mathematica命令为 In 1 If p Random 0 5 p Out 1 0 202857In 2 If p Random 0 5 p Out 2 例2 写出分段函数的Mathematica自定义函数形式 并画出其在 3 3 上的图形解 因此Mathematica命令为 In 3 f x If x 1 x Sin x x Cos x 或f x If x 1 x Sin x x Cos x err In 4 Plot f x x 3 3 例3定义一个函数描述下面问题 任给一个函数y x 如果y x 的一阶导数为零 则输出符号 否则 输出y x 5解 Mathematica命令为 In 5 f y x Module s s D y x If s 0 Return s s 5 Return s In 6 f 3 x Out 6 In 7 f Tan x x Out 7 5 Sec2 x 8 2 2Which语句 命令形式1 Which 条件1 语句1 条件2 语句2 条件n 语句n 功能 由条件1开始按顺序依次判断相应的条件是否成立 若第一个成立的条件为条件k 则执行对应的语句k 命令形式2 Which 条件1 语句1 条件2 语句2 条件n 语句n True 字符串 功能 由条件1开始按顺序依次判断相应的条件是否成立 若第一个成立的条件为条件k 则执行对应的语句k 若直到条件n都不成立时 则返回符号字符串 例4 写出一元二次方程ax2 bx c 0判别根的类型的Mathematica自定义函数形式 解 一元二次方程根的判别式为 b2 4ac 当 0时方程有两个实根 当 0 tworealroots w 0 twocomplexroots w 0 duplicateroots In 9 g 0 1 2 Out 9 tworealrootsIn 10 g 3 1 2 Out 10 twocomplexrootsIn 11 g 3 0 0 Out 11 duplicateroots 例5任给向量x x1 x2 xn 定义一个可以计算如下三中向量范数的函数 解 In 12 norm x p Which p 1 Sum Abs x i i 1 Length x p 2 Sqrt Sum Abs x i 2 i 1 Length x True Max Abs x In 13 x 3 4 0 In 14 norm x 1 Out 14 7In 15 norm x 2 Out 15 5In 16 norm x 0 Out 16 4 例6 写出分段函数的Mathematica自定义函数形式 并画出其在 0 60 上的图形 解 因此Mathematica命令为 In 17 f x Which x60 0 In 18 Plot f x x 0 60 8 2 3Switch语句 命令形式 Switch 表达式 模式1 语句1 模式2 语句2 模式n 语句n 功能 先计算表达式 然后按模式1 模式2 的顺序依次比较与表达式结果相同的模式 找到的第一个相同的模式 则将此模式对应的语句计算计算结果作为Switch语句的结果 Switch语句是根据表达式的执行结果来选择对应的执行语句 它类似于一般计算机语言的Case语句 例7 用函数描述如下结果 任给一个整数x 显示它被3除的余数 解 Mathematica自定义函数 In 19 f x Switch Mod x 3 0 Print 0istheremainderondivisionof x by3 1 Print 1istheremainderondivisionof x by3 2 Print 2istheremainderondivisionof x by3 In 20 f 126 Out 20 0istheremainderondivisionof126by3In 21 f 346 Out 21 1istheremainderondivisionof346by3In 22 f 599 Out 22 2istheremainderondivisionof599by3 8 3循环控制语句 Mathematica的循环控制语句有三种语句 Do语句 For语句 While语句 为处理有时需要中途退出循环语句的问题 Mathematica还提供了在执行循环语句时退出循环体的语句 Return expr 退出函数所有过程和循环 返回expr值Break 结束本层循环Continue 转向本层For语句或While语句的下一次循环在Mathematica的循环结构中 使用如下表示式 可以达到简洁 快速的目的 k 表示赋值关系k k 1 k表示先处理k的值 再做赋值k k 1k 表示赋值关系k k 1 k表示先处理k的值 再做赋值k k 1 x y y x 表示交换x与y值x k表示x x kx k表示x x k 8 3 1Do语句 Do语句的一般形式为Do 循环体 循环范围 具体形式有命令形式1 Do expr n 功能 循环执行n次表达式expr 命令形式2 Do expr i imin imax 功能 按循环变量i为imin imin 1 imin 2 imax循环执行imax imin 1次表达式expr 命令形式3 Do expr i imin imax d 功能 按循环变量i为imin imin d imin 2d imin nd 循环执行 imax imin d 1次表达式expr 命令形式4 Do expr i imin imax j jmin jmax 功能 对循环变量i为imin imin 1 imin 2 imax每个值 再按循环变量j的循环执行表达式expr 这是通常所说的二重循环命令 类似的 可以用在Do命令中再加循环范围的方法得到多重循环命令 例8找出300至500之间同时能被3和11整除的自然数 解 Mathematica命令为 In 23 Do If Mod i 13 0If 5x 3y z 3 100 Print x x y y z z x 0 100 y 0 100 得解x 0y 25z 75x 4y 18z 78x 8y 11z 81x 12y 4z 84 例10对自然数k从1开始到10 取s 1做赋值s s k 并显示对应的值 直到s的值 5终止 解 In 25 s 1 Do s k Print s If s 5 Break k 1 10 126 8 3 2For语句 命令形式 For stat test incr body 功能 以stat为初值 重复计算incr和body直到test为False终止 这里start为初始值 test为条件 incr为循环变量修正式 body为循环体 通常由incr项控制test的变化 注意 上述命令形式中的start可以是由复合表达式提供的多个初值 如果循环体生成Break 语句 则退出For循环 如果循环体生成Continue 语句 则由incr的增量进入For语句的下一次循环 例11指出语句For i 1 t x i i10不满足条件i i 10 故退出For循环 8 3 3While语句 命令形式 While test body 功能 当test为True时 计算body 重复对test的判断和body的计算 直到test不为True时终止 这里test为条件 body为循环体 通常由body控制test值的变化 如果test不为True 则循环体不做任何工作注意 上述命令中 如果循环体生成Break 语句 则退出While循环 例12 用割线法求解方程x3 2x2 7x 4 0的根 要求误差 xk xk 1 10 12 x2 x1 x1 x0 f x1 f x1 f x0 x0 x1 x1 x2 In 29 N x1 12 Out 29 0 487120155928 例13编制20以内整数加法自测程序解 In 30 For i 1 i 10 i t Random Integer 0 10 s Random Integer 0 10 Print t s y Input While y t s Print t s y Wong Tryagain Print t s y Input Print t s y Good 执行结果为3 0 3 0 3Good7 3 12Wrong Ttryagain 7 3 10Good 例14韦达 VieTa 在1593年首次给出了如下关于圆周率 的关系式 韦达公式 试用韦达公式来写出计算圆周率 近似值的Mathematica命令 解 利用Mathematica自定义函数命令可以输入Mathematica命令为 In 31 vieta k Module u u N Product Cos Pi 2 n 1 n 1 k 20 Return 2 u In 32 Table n v vieta n N Pi 20 v n 1 10 2 Out 32 1 3 0614674589207181738 0 0801251946690750646 3 3 1365484905459392638 0 0050441630438539746 5 3 1412772509327728681 0 00031540265702037
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025新能源产业市场现状及投资评估和规划分析研究
- 2025新成就行业市场规模调研及未来趋势与投资潜力评估研究报告
- 2025新加坡高端医疗器械研发行业市场现状动态分析及投资评估规划研究报告
- 2025新加坡能源制造业市场深度调研及市场分析与发展趋势研究报告
- 2025新加坡生物医药行业市场深度分析及创新药物研发与临床试验报告
- 5G技术背景下用户行为特征分析-洞察及研究
- 电能质量控制与谐波治理-洞察及研究
- 祁连山冰川退缩对河流流量的影响-洞察及研究
- 2026年生活资源共享合同
- 中学生职业生涯规划教育讲座方案
- 承包扫雪合同协议
- 智慧树知到《眼视光学理论和方法(山东中医药大学)》2025章节测试附答案
- 《中级微观经济学教程》课件第7章
- 民航与军航协同管制-深度研究
- 2025年全国法制宣传日宪法知识竞赛考试题库及答案(190题)
- 安装工程质量通病防治手册
- 养殖场养殖养殖鱼塘承包合同
- 攻读博士学位期间拟开展的研究计划参考范文
- 【MOOC】国际名酒知识与品鉴-暨南大学 中国大学慕课MOOC答案
- 电能质量检测报告
- 无人机组装与调试 课件 项目一 无人机组装调试基础
评论
0/150
提交评论