计算机代数系统程序设计.docVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机代数系统程序设计

第二章 Maple程序设计 前面, 我们使用的是Maple的交互式命令环境. 所谓交互式命令环境, 就是一次输入一条或几条命令, 然后按回车, 这些命令就被执行了, 执行的结果显示在同一个可执行块中. 对于大多数用户来说, 利用交互式命令环境解决问题已经足够了, 但如果要解决一系列同一类型的问题或者希望利用Maple编写需要的解决特定问题的函数和程序, 以期更加充分地利用Maple的强大功能, 提高大规模问题的计算效率, 掌握一定的程序设计是必要的. 幸运的是, Maple自身提供了一套编程工具, 即Maple语言. Maple语言实际上是由Maple各种命令以及一些简单的过程控制语句组成的. 1编程基础 1.1算子 所谓算子, 是从一个抽象空间到另一个抽象空间的函数. 在数学上算子的含义通常是函数到函数的映射. 在Maple中, 算子常用“箭头”记号定义(也称箭头操作符): f:=x-a*x*exp(x); g:=(x,y)-a*x*y*exp(x^2+y^2); 另外, 函数unapply也可以从表达式建立算子: unapply(x^2+1,x); unapply(x^2+y^2,x,y); 当我们依次把算子f作用到参数0, a, x^2+a时即可得平常意义上的函数值: f:=t-t*sin(t); f(0); f(a); f(x^2+a); 上述结果是函数作用的例子. 而最后一个结果实际上是算子f与算子g:=t-t^2+a复合后再作用到参数x的结果. 从数学上讲, 作用与复合是不同的,它们产生的结果是有区别的, 但在使用它们时, 两者还是有些重叠的. 在Maple中, 可以依赖于语法把它们区分开: 当复合两个算子时, 结果仍是算子, 两个算子的定义域必须是相容的; 当把一个算子作用于一个参数(参数必须在算子的定义域中)时, 结果是一个表达式; 在Maple中,函数作用的语法是使用括号( ),如函数f作用到参数u写作f(u). 而复合算子的符号是@,多重复合时使用符号@@. 通过进一步的例子可以清楚区分作用与复合的功能: f和g复合的结果是算子, 而把这个算子作用到参数x得到表达式f(g(x)). 例如, , 则是一个算子, 而是一个表达式, 因为x是一个实数. 试比较下述两例: D(g@f); D(g*h); 另外一个应引起注意的问题是算子(函数)与表达式的异同,在第一章2.2.2中曾探讨过函数与表达式的区别,这里再通过几个例子说明其中的微妙差异: f1:=x^2+1; f2:=y^2+1; f3:=f1+f2; 再看下面的例子: g1:=x-x^2+1; g2:=y-y^2+1; g3:=g1+g2; 与前面例子不同的是,两个算子(函数) g1, g2相加的结果依然是函数名g3,出现这个问题的主要原因是g1与g2分别为x,y的函数,Maple认为它们的定义域不相容. 要得到与前例的结果,只需稍作改动: g3:=g1(x)+g2(y); 下面的例子想说明生成Maple函数的两种方式“箭头操作符”及“unapply”之间微妙的差异: x:=x: a:=1: b:=2: c:=3: a*x^2+b*x+c; f:=unapply(a*x^2+b*x+c,x); g:=x-a*x^2+b*x+c; 由此可见,f中的a,b,c已经作了代换,而g中则显含a,b,c。再看下面实验: f(x); g(x); f与g两者相同,再对其微分: D(f); D(g); 再改变常数c的值,观察f与g的变化: c := 15; f(x); g(x); 由此可见,在利用Maple进行函数研究时,对同一问题应该用不同方法加以校验,而这一切的支撑是数学基础! 1.2 编程初体验 利用算子可以生成最简单的函数—单个语句的函数, 但严格意义上讲它并非程序设计, 它所生成的数据对象是子程序. 所谓子程序,简单地说, 就是一组预先编好的函数命令, 我们由下面的简单程序来看看Maple程序的结构: plus:=proc(x,y) x+y; end; 这个程序只有2个参数, 在程序内部它的名称是x, y, 这是Maple最简单的程序结构, 仅仅在proc( )和end中间加上在计算中需要的一条或者多条命令即可, Maple会把最后一个语句的结果作为整个子程序的返回结果, 这一点需要引起注意. 再看下例: P:=proc(x,y) x-y; x*y; x+y; end: P(3,4); 显然, 尽管程序P有三条计算命令,但返回

文档评论(0)

panguoxiang + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档