1绪论0.1符号计算系统简介#数值计算与符号计算1946年世界上第一台计算机ENIAC(TheElectronicNumericalIntegratorandComputer)是为数值积分服务的。一提起计算机求解人们立刻想到的是数值求解,这是因为计算机的早期应用范围主要是数值求解。其实数值求解是计算机求解的一个方面,计算机进行计算的另一方面即对数学表示式的处理已形成一门新的科学分支,称为符号计算或计算机代数,它是一门研究使用计算机进行数学公式推导的理论和方法,演算数学公式的理论和算法是它研究的中心课题。数值计算:常量、变量、函数、运算符--〉数值、字符、逻辑量表达式€一个值多€一近似计算例:计算y=sin10+ln10。其结果是1.75856。在高级语言中,算术表达式由常量、变量、函数和运算符等组成,算术表达式的值为某一精度范围内的数值。计算各类表达式的值是高级语言的主要工作。符号计算(计算机代数):常量、变量值、函数值--〉数值、字符、逻辑量表达式€表达式多€多准确计算x2sinxdx=-(-2+x2)cosx+2xsinx与数值计算相比,符号计算对计算机硬件和软件提出了更高的要求。#符号计算系统符号计算系统是一个表示数学知识和数学工具的系统,一个集成化的计算机数学软件系统。#数值计算、#符号计算、#图形演示#程序设计公式推导、数值计算和图形可视化操作一致性和连贯性。符号计算系统的对象从初等数学到高等数学,几乎涉及所有数学学科。包括各种数学表达式的化简、多项式的四则运算、求最大公因式、因式分解(factor)、常微分方程和偏微分方程的解函数。各种特殊函数的推导、函数的级数展开、矩阵和行列式的各种运算和线性方程组的符号解等。和数值计算一样,算法也是符号计算的核心。就算法而言,符号计算比数值计算能继承更多的更丰富的数学遗产,古典数学家许多算法仍然是核心算法的成员,近代数学2的算法成果也在不断地充实到符号计算中。符号计算已成功地应用于几乎所有的科学技术和工程领域,其中包括数学理论领域。由于它和数值计算一样,能够正确地完成人在短时间内无法完成的公式推导计算,使得不少研究领域的前沿向前推移。#符号计算的应用•验证公式的工具在十九世纪,法国文学家CharlesDelaunay计算月亮的位置作为时间函数。从1847年到1867年用了20年的时间,完成并发表了长达数百页的计算方面的文章,推导了近四万个公式。到1970年MIT的一个研究小组以Drprit为首用符号计算软件对于Delaunay的计算公式进行复算,只用了20小时的CPU便完成了。复算表明原先的计算只有3个错误,其中一个错误是某项的系数是3而不是2,另外两个错误是由此而引起的。这是一个很有代表性的例子。例如:一个七个自由度行走的机器人,从运动方程求解加速度时,包括大量的多维转换公式推导,可以有上百项,甚至上千项。这时只能用符号计算系统才能迅速、准确的求解,在推导有限元的刚度矩阵中,在计算行列式展开和合并中,都可以用任何一个符号计算系统来完成公式演算。用符号计算系统进行公式推导,简单、正确和快速。它帮助科研人员摆脱了理论推导中繁琐的一面,将精力更多的放在创造性的思维中。•理论研究中的实验方法在物理、化学和生物学等许多自然科学领域中,实验是科学研究的一个手段。符号计算系统的出现为数学领域和一些理论研究领域提供了“实验”工具。部分高校的“数学实验室”应运而生。数学的创造大多来自直觉,用符号计算系统对设想的定理结论直接验证,将待研究的方程绘出图形以观察变化趋势,会给科研人员带来不同程度的灵感和启发,甚至会得到意想不到的收获。再将结果进行理论深化并加以严格证明。如今数学实验已被一些数学工作者所接受。数学实验课程已列入国家教委21世纪教学改革的重点课程之一。#符号计算系统软件简介符号计算已有几十个软件系统,一般有专用系统和通用系统两类。通用符号计算系统都具有数值计算、符号计算和图形功能。都有适合于从工作站到微机使用的多种版本。符号计算语言是这种算法在计算机上的工具。符号计算系统由符号计算语言和若干软件包组成。目前,典型的通用符号计算系统有:(按字母顺序排列)AxiomMacsymaMapleMathematicaReduceDerive符号计算系统通常都有两种运行方式:一种是交互式,每发一个命令,就执行一种相应的数学计算。另一种方式是写一段程序,执行一系列的命令,就想用Fortran或C写程序一样。每个符号计算系统都有自己的程序设计语言,这些语言与通用的高级语言大同小异。请看C语言和Mathematica中的几个语句形式:3C语言Mathematicaif(表达式)语句1else语句2If[表达式,语句1,语句2]while(表达式)语句While[表达式,语句]for(初值;终值条件;增量)语句For[初值,终值条件,增量,语句]1.2Mathematica简介Mathematica是美国Wolfram研究公司开发的符号计算系统。1988年发布Mathematica系统的1.0版,因系统精致的结构和强大的计算能力而广为流传,经不断扩充和修改后,在1991年和1997年推出了功能更加充实和完善的Mathematica2.0版和Mathematica3.0版,在1999年推出了Mathematica4.0版。Mathematica是最大的单应用程序之一,它内容丰富功能强大的函数覆盖了初等数学、微积分和线性代数等众多的数学领域,它包含了数学多方向的新方法和新技术;它包含的近百个作图函数是数据可视化的最好工具;它的编辑功能完备的工作平台Notebooks已成为许多报告和论文的通用标准;在给用户最大自由限度的集成环境和优良的系统开放性前题下,吸引了各领域和各行各业的用户。现在Mathematica在世界上拥有超过一百万的用户,已在工程领域、计算机科学、生物医学、金融和经济、数学、物理、化学和社会科学等范围得到应用。尤其在科研院所和高等院校流行。目前,至少有14种语言写成的200多册书籍和几种专门介绍Mathematica的期刊。在英国和日本都有大学将Mathematica作为理工科学生入校必修的计算机课程之一。它也是“数学模型”和“数学实验”课程最好的工具之一。世界各地的大学和高等教育工作者已开发基于Mathematica的多门课程。Mathematica是用C语言编写的,Mathematica1.2版大约有150,000行长。它吸取了不同类型的软件的特点。·具有BASIC语言的简单易学的交户式操作方式·具有MathCAD,Matlab那样强的数值计算功能·具有Maccsyma,Maple,Reduce和SMP那样的符号计算功能·具有APL和LISP那样的人工智能列表处理功能·像C与PASCAL那样的结构化程序设计语言#Mathematica的开发者StephenWolfram是Mathematica的创始人,并公认是当今科学计算的先驱。Wolfram1959年生于伦敦。他在Eton(伊顿公学),Oxford(牛津大学)和Caltech(加州理工学院)受教育。他在15岁发表了第一篇科技论文,于1979年20岁时在加州理工学院获理论物理学博士学位。从1973年开始使用计算机,1981年主持开发了第一个计算机代数系统SMP。Wolfram的研究范围包括了物理学、数学和计算机的许多领域。他早期的工作主要在能物理、量子场论和宇宙学方面。由于他在物理和计算方面的成绩,1981年成为最年轻的麦克阿(MacArthur)奖学金获奖者。Wolfram所做的元细胞自动机(cellularautomata)的计算模型应用到数学和物理出现的复杂系统。Wolfram关于元细胞自动机的工作已在4许多不同的邻域得到广泛的应用,它导致生物学和物理学中图样生成的新模型,以及研究混沌和随机性的新方法。Wolfram发明了基于元细胞自动机的快速加密系统。1986年,他创办了杂志ComliexSystems。担任过伊里诺大学复杂系统研究中心的主任,物理学、数学和计算机科学教授。从WolframResearch公司创办开始,StephenWolfram就担任公司的总裁并致力于Mathematica的发展,Wolfram负责Mathematica的总体设计,他写了Mathematica大部分的基本核心代码。DanielR.Grayson是伊里诺大学的数学教授。他于1976年在麻省理工获得数学博士学位,曾在哥伦比亚大学和高等研究所工作。他写了Mathematica的数学部分的许多内容,包括任意精度的算术运算、解方程、矩阵演算、幂级数和椭圆函数。Grayson主要的研究兴趣是代数K理论,这个数学分支把代数几何、线性代数和数论的概念结合在一起。Grayson广泛地使用计算机研究数论中的猜想。在参加Mathematica工作以前,Grayson开发了一种用于数论研究的交互式计算机系统。RomanE.Maeder负责Mathematica的符号积分、多项式因式分解和其它多项式运算。Maeder于1986年在苏黎世高等工艺学院获得博士学位,其论文是关于程序设计语言的数学理论。从1983年起,Maeder的工作领域是计算机代数及其对数学教育的应用。他给计算数学研究生开设了“数学实验室”课程。StephenM.Omobundro写了Mathematica的三维图形程序代码。Omobundro于1985年在伯克力加州大学获数学物理学博士学位。1985至1986年他曾在ThinkMachines公司从事大规模并行计算的算法方面的工作。他是ConnectionMachine计算机用的LISP语言设计者之一。1.3初识MathematicaMathematica是什么?Mathematica能做什么?希望Mathematica会成为你工作和学习中的好伙伴!#进入math4.0在“开始”菜单中的“程序”中单击,进入Mathematica4.0之后,得到如下的Notebook窗口,并给Notebook暂时取名Untitled-1,直到用户保存时另命名为止。假定用户已经掌握windows中下列常规操作:•单击:单击鼠标左键;双击:快速地连续击两次鼠标左键;拖放:按住鼠标左键拖动鼠标。在文件菜单中保存、打开关闭文件等操作。图0-1Mathematic4.0窗口5#退出math4.0在“File”菜单中选择“Exit”命令或按“Alt+F4”。如果窗口中还有内容没有保存到Notebook中,这时会出现一个对话框,系统要问你是否保存Notebook,单击对话框上的“否(N)”按钮则关闭窗口;单击“是(Y)”按钮,则保存Notebooks后退出窗口。退出后返回到调入Mathematica以前的状态。#输入和计算表达式运行命令方式:按Shift+EnterIn[1]:=12345*23456Out[1]=289564320(*像在用一个计算器*)对x312x2145x+1716因式分解;In[2]:=Factor[x^3-12x^2-145x+1716]Out[2]=(-13+x)(-11+x)(12+x)In[3]:=Expand[(x-3)(y^2-x+6)](*展开多项式*)Out[3]=18+9xx3y2+x2y2计算391,561,357的最大公约数;In[4]:=GCD[391,561,357]Out[4]=17In[5]:=LCM[21,29,35](*计算21,29,35的最小公倍数*)Out[5]=30453x2y5解方程组xy5In[6]:=Solve[{3x-2y==5,x+y==5},{x,y}]Out[6]={{x-3,y-2}}dx2sinx计算dxIn[7]:=D[x^2Sin[x],x]2Out[7]=xCos[x]+2xSin[x]计算不定积分x2sinxdxIn[8]:=Integrate[x^2Sin[x],x]Out[8]=-(-2+x2)Cos[x]+2xSin[x]计算定