基于Mathematica函数StateSpaceModel的系统分析方法
mathematica优化函数
mathematica优化函数Mathematica是一款非常强大的数学计算工具,它提供了丰富的优化函数,可以帮助我们解决各种优化问题。
本文将围绕“Mathematica优化函数”展开,详细介绍优化函数的使用方法。
一、导入数据在进行优化计算之前,我们需要导入相应的数据。
在Mathematica中,可以使用Import函数导入各种数据格式的文件,比如Excel表格、CSV文件、TXT文件等。
以下是一个例子:data = Import["data.csv"];这里我们导入了一个名为“data.csv”的CSV文件。
二、定义目标函数在进行优化计算之前,我们需要定义一个目标函数。
目标函数就是我们想要优化的函数,可以是任何数学公式。
在Mathematica中,可以使用Function函数定义一个自定义函数。
以下是一个例子:f[x_] := x^2 + 2x + 1;这里我们定义了一个名为“f”的函数,它的形参为“x”,函数体为“x^2 + 2x + 1”。
三、使用内置优化函数Mathematica提供了许多内置的优化函数,我们可以直接调用这些函数进行优化计算。
以下是一些常用的优化函数:1、MinimizeMinimize函数可以帮助我们寻找一个函数在给定区间内的最小值。
以下是一个例子:min = Minimize[f[x], x];这里我们使用了Minimize函数,寻找了函数“f”在所有实数范围内的最小值。
2、MaximizeMaximize函数可以帮助我们寻找一个函数在给定区间内的最大值。
以下是一个例子:max = Maximize[f[x], x];这里我们使用了Maximize函数,寻找了函数“f”在所有实数范围内的最大值。
3、NMinimizeNMinimize函数可以帮助我们寻找一个函数在给定区间内的最小值,并返回一个数值近似解。
以下是一个例子:min = NMinimize[f[x], x];这里我们使用了NMinimize函数,寻找了函数“f”在所有实数范围内的最小值,返回了一个数值近似解。
Mathematica高级数学建模与计算教程
Mathematica高级数学建模与计算教程第一章:Mathematica概述Mathematica是一种强大的数学建模和计算工具,它能够帮助用户解决各种复杂的数学问题。
本章将介绍Mathematica的基本概念、界面和功能,以及如何开始使用Mathematica。
1.1 Mathematica的基本概念Mathematica是由Wolfram Research公司开发的一款数学软件,它集成了数学计算、数据分析、可视化等多种功能,广泛应用于科学研究、工程和金融等领域。
Mathematica的核心是一种高级程序语言,用户可以用它进行数学建模和计算,并通过交互式界面进行操作。
1.2 Mathematica的界面和功能Mathematica的主界面分为菜单栏、工具栏和工作区等部分。
菜单栏提供了各种功能的快捷操作,工具栏则包含了常用的工具和命令按钮。
在工作区中,用户可以编写和执行Mathematica代码,并查看结果。
1.3 快速开始在Mathematica中,用户可以使用各种内置的函数和命令来进行数学建模和计算。
例如,可以使用内置函数Plot来绘制函数图像,使用函数Solve来求解方程,使用函数Integrate来进行积分等等。
用户可以通过简单的代码来描述数学问题,并得到计算结果。
第二章:数学建模基础数学建模是将实际问题转化为数学问题,并使用数学方法进行求解的过程。
本章将介绍数学建模的基本原理和方法,并结合具体例子演示如何使用Mathematica进行数学建模。
2.1 数学建模的基本原理数学建模的过程可以分为问题定义、数学模型的建立、模型求解和结果分析等几个步骤。
问题定义阶段需要明确问题的背景、目标和约束条件;数学模型的建立阶段需要选择合适的数学模型来描述问题;模型求解阶段需要使用合适的方法和工具进行求解;结果分析阶段需要对求解结果进行验证和解释。
2.2 使用Mathematica进行数学建模Mathematica提供了丰富的函数和命令来支持数学建模的各个步骤。
mathematica在常微分方程实验中的应用
mathematica在常微分方程实验中的
应用
常微分方程是一类重要的数学模型,在很多方面都具有重要的应用。
以前用来
求解它们的方法都是比较复杂的,对于科学家们来说,获得一个准确的解需要很大的计算成本。
但是随着计算机技术的不断发展,许多数学软件可以帮助科学家快速求解常微分方程。
Mathematica就是一款不可多得的数学软件,它大大改变了科学
家们求解常微分方程的方式。
Mathematica可以实现省时、高效的非线性常微分方程求解,并且提供了一系
列函数供用户选择,以方便对任意非线性常微分方程的求解。
此外,Mathematica
还支持十分复杂的常微分方程分析,用户可以使用它快速地分析某类常微分方程的解的存在性和唯一性,甚至可以解决一些比较复杂的常微分方程,例如多变量的、高阶的、不规则的常微分方程等。
除此之外,Mathematica还可以为用户建立常微分方程的模型,除了方便用户
建立模型以外,还提供了一系列工具,用户可以快速地调节任意常微分方程的参数,从而改变求解结果。
Mathematica的另一大优点就是可视化的能力,它能够将计算
结果以图形的方式展示出来,使用户更加直观地认识求解结果。
总之,Mathematica在常微分方程实验中的应用十分广泛。
它可以简单地为科
学家提供极高效的、精确的求解能力,也能为科学家提供先进的可视化能力,实现快速、准确的常微分方程实验效果。
毫无疑问,Mathematica可以为科学家研究常
微分方程提供重要支持,将研究常微分方程的现代化理念发挥到最大——从数学理论中收获最多的结论。
Mathematica使用教程
Mathematica使用教程【Mathematica 简介】Mathematica 软件是由沃尔夫勒姆研究公司(Wolfram Research Inc.)研发的。
Mathematica 版发布于1988年6月23日。
发布之后,在科学、技术、媒体等领域引起了一片轰动,被认为是一个革命性的进步。
几个月后,Mathematica 就在世界各地拥有了成千上万的用户。
今天,Mathematica 已经在世界各地拥有了数以百万计的忠实用户。
Mathematica 已经被工业和教育领域被广泛地采用。
实际上,Mathematica 负责将高级的数学和计算引入了传统上非技术的领域,极大的增加了科技软件的市场。
一个包含应用、咨询、书籍、和课程软件的行业支持着国际化的 Mathematica 用户群,这个行业还在不断地膨胀。
随着沃尔夫勒姆研究公司不断地扩大和 Mathematica 的使用被不断地扩展到不同的领域,将会看到 Mathematica 在全世界范围内对未来产品、重要研究发现、和教学的巨大影响。
数学软件是现在科研工作者的必备的工具,个人比较喜欢用Mathematica,因为它是最接近数学语言的。
Mathematica 在15日发布,其最显著的变化是允许自由形式的英文输入,而不再需要严格按照Mathematica语法,这类似于Wolfram|Alpha搜索引擎。
Mathematica 8允许用户按照自己习惯的思考过程输入方程式或问题,最令人激动的部分是软件不是逐行执行命令,而是能理解上下文背景。
1. Enter your queries in plain English using new free-form linguistic input2. Access more than 10 trillion sets of curated, up-to-date, and ready-to-use data3. Import all your data using a wider array of import/export formats4. Use the broadest statistics and data visualization capabilities on the market5. Choose from a full suite of engineering tools, such as wavelets and control systems6. Use more powerful image processing and analysis capabilities7. Create interactive tools for rapid exploration of your ideas8. Develop faster and more powerful applicationsWolfram Research 的CEO 和创立者斯蒂芬·沃尔夫勒姆表示:“传统上,让计算机执行任务必须使用计算机语言或者使用点击式界面:前者要求用户掌握它的语法;而后者则限制了可访问函数的范围。
《Mathematica》使用手册
《Mathematica》使用手册Mathematica 使用手册1.简介1.1 Mathematica 简介1.2 Mathematica 的应用领域1.3 Mathematica 的基本特性2.安装与启动2.1 系统要求2.2 安装 Mathematica2.3 启动 Mathematica2.4 探索 Mathematica 界面2.5 设置用户首选项3.数值计算3.1 基本数值运算3.2 数值函数的使用3.3 数值积分与微分3.4 数值解方程3.5 特殊数值计算技巧4.符号计算4.1 符号数据类型4.2 符号运算与化简4.3 方程求解与解析解4.4 函数极限和级数展开4.5 矩阵与线性代数运算5.绘图与可视化5.1 绘制函数图像5.2 绘制二维与三维图形5.3 自定义图形选项5.4 绘制动态图形5.5 数据可视化6.编程与函数定义6.1 Mathematica 的编程语言 6.2 函数的定义与使用6.3 控制流程与条件判断6.4 模块化与函数封装6.5 文件读写与外部程序交互7.数据分析与统计7.1 数据导入与清洗7.2 数据处理与转换7.3 数据可视化与探索7.4 数值统计与假设检验7.5 机器学习与数据建模8.物理与工程应用8.1 经典力学模拟8.2 电磁场与电路分析8.3 量子力学与粒子物理8.4 工程建模与仿真8.5 数据分析在物理与工程中的应用9.MATLAB 兼容性与互操作9.1 导入与导出 MATLAB 数据9.2 运行 MATLAB 代码9.3 在 Mathematica 中调用 MATLAB 函数 9.4 在 MATLAB 中调用 Mathematica 函数9.5 MATLAB 兼容性的限制与注意事项10.Mathematica 社区与资源10.1 论坛和社区支持10.2 官方文档与教程10.3 第三方扩展包与资源10.4 在线学习资源10.5 Mathematica 社区的活动与会议本文档涉及附件:附件1:示例代码文件附件2:图形绘制示例文件附件3:数据分析样本数据集本文所涉及的法律名词及注释:1.版权:法律上对原创作品的保护权益。
数学软件Mathematica详解教程
生成 n 元列表 {expr,expr,...,expr}
{expr|i 在列表 list 中变化}
Table[expr,{i,a,b,h}] {expr|i 在 Range[a,b,h]中变化}
Table 中的 expr 一般给的是通项公式
RandomInteger[range,n] 生成 n 个伪随机整数,range 表示取值范围
ToExpression[str]
ToString[expr]
转化为表达式
将表达式转化为字符串
更多字符串相关函数参见 “参考资料中心”
26
列表
列表
是 Mathematica 的基本对象,可用来表示集合,数组等 分为标准列表和稀疏列表
标准列表: 用大括号括起来的有限个元素,元素之间用逗号分隔
求最大值
求最小值
19
常用初等函数
Re[x], Im[x]
Conjugate[x] Arg[x]
提取实部和虚部
取共轭 辐角
Mod[m,n]
Quotient[m,n] Sin[x], Cos[x], ... ArcSin[x], ArcCos[x], ... Sinh, Cosh, ...,
m 除以 n 的余数
In[1]:= Clear[x,y]; In[2]:= f=2*x+y; In[3]:= f./{x->2,y->3} (* f(2,3) 的值 *)
In[3]:= f./{2->5}
(*把 2 替换成 5*)
15
数的基本运算
Mathematica 中的实数分精确数和双精度数
N[x,n] N[x] IntegerPart[x] FractionalPart[x] Floor[x] Round[x] Ceil[x] Precision[expr] x 的带 n 位有效数字的近似值 x 的双精度近似值 整数部分 小数部分 取整:不大于 x 的最大整数 取整:四舍五入 取整:不小于 x 的最小整数 显示计算精度
《数学软件Mathematica应用浅谈》
数学软件Mathematica应用浅谈摘要我们在科学、工程和数学问题中常常会遇到求解类似方程f x 的情况。
高等数学中的许多重要方法,如求极限、导数和积()0分等,只靠笔算去实现是相当困难的,然而在实际的应用过程中,我们往往只关心这些问题的实际结果。
同时线性规划问题在生产和生活中都起到了重大作用,因此线性规划的求解方法也成为了一个备受关注的话题。
面对这种种不宜笔算的难题,我们需要一个强大的数学工具帮助我们解决这些问题。
针对于上述亟待解决的问题,数学软件Mathematica正是求解这些问题的一个实用系统也就是所谓的数学实验。
在该论文中我们将具体介绍两种利用Mathematica求解方程近似根的方法,分别为“利用牛顿法求解方程的根”和“利用对分区间法求解方程的根”。
另外,Mathematica有很强的图形功能,它对微积分中的问题,可以给出精彩的几何解释。
当然还能利用Mathematica来求解线性规划问题。
Mathematica的各项应用无论是在科学研究还是在生产实践中都有着举足轻重的地位。
关键词:Mathematica;求解方程近似根;微积分;线性规划BRIEF DISCUSSION ON THE APPLICATION OFMATHEMATICAL SOFTWAREMATHEMATICAABSTRACTIn science, engineering and mathematical problems often encountered in solving a similar equation . Higher mathematics in many important ways, such as seeking to limit, d erivative and integral, it is very difficult to rely on written calculation to achieve,in the actual application process, however, we tend to only care about the actual results of these methods. Linear programming problem in the production and living played a major role in the method of linear programming has also become a topic of concern. Faced with all these should not be written calculation problems,we need a powerful mathematical tool to help us solve these difficulties. For these problems to be solved mathematical software Matllematica, precisely to solve these problems of a practical system is the so-called mathematical experiment.In this paper we will specifically introduce two Mathematica solving equations approximate root, respectively, using Newton's law and equation root "and use the partition method and the root of the equation". Of Mathematica have strong graphics capabilities of the problems in the calculus can be given a wonderful geometric interpretation. Of course also use Mathematica to solve linear programming problems. The application of Mathematica have a pivotal position in the practice of scientific research is still in production.KEY WORDS:Mathematica , Approx imately solving equation root, Calculus , The Linear Programming目录第一章数学软件Mathematica简介 (1)(一)Mathematica简介 (1)(二)Mathematica的影响 (1)第二章利用Mathematica求解方程的近似根 (3)(一)利用牛顿法求解方程的根 (3)(二)利用对分区间法求方程的根 (5)第三章用数学软件Mathematica求解微积分 (8)(一)运用Mathematica求解运动学问题1 (8)(二)运用Mathematica求解运动学问题2 (10)第四章线性规划模型的建立及Mathematica求解 (13)(一)Mathematica在求解不等式约束问题的应用举例 (13)(二)线性规划模型的建立及Mathematica求解 (16)结束语 (20)参考文献 (22)致谢 (24)第一章数学软件Mathematica简介(一)Mathematica简介Mathematica是一款科学计算软件,很好地结合了数值和符号计算引擎、图形系统、编程语言、文本系统、和与其他应用程序的高级连接。
Mathematica教程-5用Mathematica求解线性代数基本问题
一般情况下,Mathematica假设所有变量都为全局变量。 也就是说无论何时你使用一个你定义的变,Mathematica 都假设你指的是同一个目标。然而在编制程序时,你则 不会想把所有的变量当作全局变量,因为如果这样程序 可能就不具有通用性,你也可能在调用程序时陷入混乱 状态。下面给出定义模块或块和局部变量的常用形式
逻辑表达式的运算形式
expr1&&expr2&&expr3 exprl||expr2||expr3 计算expri,直到其中有一个 为假为止 计算expri,直到其中有一个 为真为止
循环结构
Mathematica程序的执行包括对一系列 Mathematica表达式的计算。对简单程序, 表达式的计算可用分号“;”来隔开,然后 一个接一个地进行计算。然而,有时你需要 对同一表达式进行多次计算,即循环计算。
下例中我们根据i定义m: ln[12]:=m=i^2 Out[12]:=i2 在计算i+m的整个过程中使用块中i的局部值: h[13]:=Block[{i=a},i+m] Out[13]=a+a2 而对于下面的例子,只有直接出现在i+m中的i,才被 看作局部变量: In[14]:=Module[{i=a},i+m] Out[14]=a+i2
Cross[u,v]
向量u与v的外积(对三维向量而言,即 为向量积)
例
例(续)
二、矩阵的运算
• 下表列出矩阵的其他一些运算
矩阵运算函数 Det[A] Transpose[A] Inverse[A] 说明
计算方阵A的行列式 表示A的转置矩阵 表示A的逆矩阵 给出A的所有k阶子式,返回结果为一个 表 计算A的迹(4.0版) 表示An
Mathematica函数及使用方法
函数及使用方法(来源: )注:为了对有一定了解地同学系统掌握地强大功能,我们把它地一些资料性地东西整理了一下,希望能对大家有所帮助.一、运算符及特殊符号; 执行,不显示结果顺次执行,,并显示结果关于系统变量地信息关于系统变量地全部信息执行命令! 地阶乘显示文件内容< >> 打开文件写>>> 打开文件从文件末写() 结合率[] 函数{} 一个表<* *> 在语言中使用地函数(**) 程序地注释第个参数所有参数把作用于后面地式子前一次地输出倒数第二次地输出第个输出变量地注释" " 字符串` 上下文加减*或乘除^ 乘方^^ 以为进位地数且或非自加,自减,* 同语言>,<,>,< 逻辑判断(同)立即赋值建立动态赋值:> 建立替换规则> 建立替换规则相当于[]将规则应用于将规则不断应用于知道不变为止名为地一个任意表达式(形式变量)名为地任意多个任意表达式(形式变量)—————————————————————————————————————二、系统常数....地无限精度数值...地无限精度数值..卡塔兰常数....高斯常数...黄金分割数角度弧度换算复数单位无穷大负无穷大复无穷大不定式—————————————————————————————————————三、代数计算[] 展开表达式[] 展开表达式[] 化简表达式[] 将特殊函数等也进行化简[] 展开所有地幂次形式[,{...}] 按复数实部虚部展开[] 化简中地特殊函数[, ] 合并同次项[, {,...}] 合并,...地同次项[] 通分[] 部分分式展开[, ] 对地部分分式展开[] 约分[] 展开表达式[, ] 展开表达式[] 提出共有地数字因子[, ] 提出与无关地数字因子[, {...}] 提出与无关地数字因子[, ] 多项式中地系数[, , ] 多项式中^地系数[, ] 表达式中地最高指数[] 表达式地分子[] 表达式地分母[] 展开地分子部分[] 展开地分母部分[] 展开表达式中地三角函数[] 给出表达式中地三角函数因子[] 给出表达式中地三角函数因子地表[] 对表达式中地三角函数化简[] 三角到指数地转化[] 指数到三角地转化[][] —————————————————————————————————————四、解方程[, ] 从方程组中解出[, , ] 从方程组中削去变量,解出[, , ] 解微分方程,其中是地函数[{,...},{...}]解微分方程组,其中是地函数[, , {...}] 解偏微分方程[, ] 把方程组中变量约去[, ] 给出等式成立地所有参数满足地条件[, ] 化简并给出所有可能解地条件[] 用和将逻辑表达式展开[] 求函数地逆函数[, ] 求多项式函数地第个根[, ] 得到多项式方程地所有根—————————————————————————————————————五、微积分函数[, ] 求[]地微分[, {, }] 求[]地阶微分[..] 求[]对...偏微分[, ] 求[]地全微分[] 求[]地全微分[, {, }] 阶全微分^^[..] 对..地偏微分[, ] []对在地不定积分[, {, , }] []对在区间()地定积分[, {, , }, {, , }] []地二重积分[, >] 趋近于时地极限[, {}] 在处地留数[, {, , }] 给出[]在处地幂级数展开[, {, }, {, , }]先对幂级数展开,再对[] 化简并给出最常见地表达式[, ] 给出级数中第次项地系数[, {...}]'或[...][] 一阶导数[, ] 给出逆函数地级数[...] 给出两个基数地组合[,{,..}]表示一个在处地幂级数,其中为系数[]^ 阶小量^[, ]^ 阶小量()^—————————————————————————————————————八、数值函数[] 表达式地机器精度近似值[, ] 表达式地位近似值,为任意正整数[, ] 求方程数值解[, , ] 求方程数值解,结果精度到位[, , {, , }]微分方程数值解[, {,...}, {, , }]微分方程组数值解[, {}] 以为初值,寻找方程数值解[, {, , , }][, {}] 数值求和,为步长[, {}, {,..},..] 多维函数求和[, {, , , }]函数求积[, {, , }] 函数数值积分优化函数:[, {}] 以为初值,寻找函数最小值[, {, , , }][,{},{,..}]为线性不等式组,为..之线性函数,得到最小值及此时地..取值[, {}, {, ,..}]同上[] 解线性组合在>>约束下地最小值,为向量为矩阵[{...}] 向量组地极小无关组数据处理:[]用指定函数组对数据进行最小二乘拟和可以为{{},{}..}多维地情况: [{}, {, , ^[]}, ][]对数据进行差值,同上,另外还可以为{{,{}},{,{,.}..}指定各阶导数默认为次,可修改[]对离散数据插值,可为维[,{{},{},..}][,{}, {},..]以对应[]地为数据进行插值[] 对复数数据进行付氏变换[] 对复数数据进行付氏逆变换[{...},{,...}]得到每个表中地最小值[{...},{,...}]得到每个表中地最大值[, ] 将表中使得为地元素选择出来[, ] 将表中匹配模式地元素地个数[] 将表中元素按升序排列[] 将表中元素按[]为地顺序比较地任两个元素,实际上[]中默认集合论:[..] 表地并集并排序[..] 表地交集并排序[...]从全集中对地差集—————————————————————————————————————九、虚数函数[] 复数表达式地实部[] 复数表达式地虚部[] 复数表达式地模[] 复数表达式地辐角[] 复数表达式地共轭—————————————————————————————————————十、数地头及模式及其他操作整数实数复数有理数(*注:模式用在函数参数传递中,如[]规定传入参数地类型,另外也可用来判断[[],...]*)[] 数字以近制地前个码元[] 类上[] 地反函数[] 把实数有理化成有理数,误差小于[, ] 将中小于地部分去掉默认为^[] 给出小数部分位数,对于等为无限大[] 给出有效数字位数,对于等为无限大[, ] 设置显示时地小数部分位数[, ] 设置显示时地有效数字位数—————————————————————————————————————十一、区间函数[{, }] 区间[, ](* [ [{}]]*)[, ] 在区间内吗?[] 区间在区间内吗?[...] 区间地并[...] 区间地交—————————————————————————————————————十二、矩阵操作或 [, , ] 矩阵、向量、张量地点积[] 矩阵地逆[] 矩阵地转置[,{..}]将矩阵第行与第列交换[] 矩阵地行列式[] 特征值[] 特征向量[] 特征系统,返回{}[, ] 解线性方程组[] 矩阵地零空间,即[]零向量[] 化简为阶梯矩阵[, ] 地所有*阶子矩阵地行列式地值(伴随阵,好像是)[, ] 阵自乘次[..] 中各个元之间相互组合,并作为地参数地到地矩阵[]给出矩阵地外积[] 地奇异值,结果为{},[[]][][] 地广义逆[] 分解[] 分解[] 分解—————————————————————————————————————十三、表函数(*“表”,我认为是中最灵活地一种数据类型 *)(*实际上表就是表达式,表达式也就是表,所以下面 *)(*一个表中元素地位置可以用于一个表来表示 *)表地生成{,...} 一个表,元素可以为任意表达式,无穷嵌套[,{}] 生成一个表,共个元素[,{, }] 生成一个表,共个元素[][,{},{},..] 多维表[] 简单数表{}[, , ] 以为步长地数表[, ] 一维表,元素为[] (从到)[,{..}] 多维表,元素为[..] (各自从到) [] 阶单位阵[] 对角阵元素操作[, ]或[[]]第个元[[]] 倒数第个元[[,..]] 多维表地元[[{,..}] 返回由第()地元素组成地子表[] 第一个元[] 最后一个元[] 函数头,等于[[]][, ] 取出由表制定位置上地元素值[, ] 取出表前个元组成地表[,{}] 取出表从到地元素组成地表[, ] 去掉表前个元剩下地表,其他参数同上[] 去掉表第一个元剩下地表[, ] 把作用到每一个地元上,为地所有元组成地表表地属性[] 第一曾元素地个数[] 表地维数返回{..}为一个*...地阵[] 秩[] 最大深度[] 给出中第层子表达式地列表[, ] 满足模式地中元地个数[, ] 中是否有匹配地元[, ] 地反函数[, ] 表中匹配模式地元素地位置列表[{...}]匹配模式地所有元素地表表地操作[, ] 返回在表地最后追加元后地表[, ] 返回在表地最前添加元后地表[, , ] 在第元前插入[,{,..}]在元素[[{,..}]]前插入[,{,..}]删除元素[[{,..}]]后剩下地表[]删除匹配地所有元后剩下地表[] 将地第元替换为[] 返回按顺序排列地表[] 把表倒过来[, ] 把表循环左移次[, ] 把表循环右移次[, ] 把按每各元为一个子表分割后再组成地大表[] 抹平所有子表后得到地一维大表[] 抹平到第层[] 把相同地元组成一个子表,再合成地大表[, ] 把[[]]处地子表抹平[] 由地元素组成地所有全排列地列表[] 如果在之前返回,如果在之后返回,如果与全等返回[] 把通过两两交换得到标准顺序所需地交换次数(排列数)以上函数均为仅返回所需表而不改变原表[] 相当于[];[] 相当于[];—————————————————————————————————————十四、绘图函数二维作图[,{}] 一维函数[]在区间[]上地函数曲线[{..},{}] 在一张图上画几条曲线[{,..}] 绘出由离散点对()组成地图[{{},{},..}] 绘出由离散点对()组成地图[{},{}] 由参数方程在参数变化范围内地曲线[{{},{},...},{}]在一张图上画多条参数曲线选项:>{} 作图显示地值域范围>生成图形地纵横比> 标题文字>{} 分别制定是否画轴>{}轴上地说明文字>用什么方式画轴地刻度>{} 坐标轴原点位置>{{}, {}}设置轴线地线性颜色等属性> 是否画边框>{}边框四边上地文字同边框上是否画刻度同图上是否画栅格线>{{},{}设置边框线地线性颜色等属性[>] 把离散点按顺序连线>{{},{},..}曲线地线性颜色等属性> 曲线取样点,越大越细致三维作图[,{}, {}]二维函数[]地空间曲面[{}, {}, {}]同上,曲面地染色由[]值决定[] 二维数据阵地立体高度图[]同上,曲面地染色由[数据]值决定[{},{}]二元数方程在参数变化范围内地曲线[{{},{},...},{}]多条空间参数曲线选项:>{} 三维视点,默认为{}> 是否画三维长方体边框>{} 三轴比例三维长方体边框线性颜色等属性> 是否染色>{..} 为某一个光源{{}}为灯色,向方向照射>颜色函数慢散射光地光源> 是否画曲面上与轴平行地截面地截线截线线性颜色等属性>{{}, {}}网格范围指定图形顶部、底部超界后所画地颜色 > 是否染色> 略去被遮住不显示部分地信息等高线[,{},{}]二维函数[]在指定区间上地等高线图[] 根据二维数组数值画等高线选项:> 画条等高线>{,..} 在处画等高线> 是否用深浅染色> 是否画等高线> {{},{},..}等高线线性颜色等属性同上密度图[,{},{}]二维函数[]在指定区间上地密度图[] 同上图形显示[] 显示一组图形对象,为选项设置[...] 在一个图上叠加显示一组图形对象[{,...}]在一个图上分块显示一组图形对象[]把选中地中地图画循环放映选项:(此处选项适用于全部图形函数)>颜色函数指定绘图地背景颜色> 竖着写文字此后输出文字地字体,颜色大小等>等把其作用于某点地函数值上决定某点地颜色> 是否对遮挡部分也染色曲线、曲面最大弯曲度绘图函数(续)图元函数[, ]为下面各种函数组成地表,表示一个二维图形对象[, ]为下面各种函数组成地表,表示一个三维图形对象[, ]表示一个由和决定地曲面对象[]表示一个由决定地等高线图对象[]表示一个由决定地密度图对象以上定义图形对象,可以进行对变量赋值,合并显示等操作,也可以存盘[] {}或{},在指定位置画点[{,..}]经由点连线[{, }, {, }] 画矩形[{},{}]由对角线指定地长方体[{,..}] 封闭多边形[{}] 画圆[{},{}] 画椭圆,为半长短轴[{},{}] 从角度~地圆弧[{, }, ] 填充地园、椭圆、圆弧等参数同上[>] 颜色栅格[] 在坐标上输出表达式[""] 直接用图元语言写[{,..}] 返回点地坐标,且均大于小于颜色函数(指定其后绘图地颜色)[] 灰度为间地实数[, , ] 颜色,均为间地实数[, , ] 亮度,饱和度等,均为间地实数[, , , ] 颜色其他函数(指定其后绘图地方式)[] 设置线宽为[] 设置绘点地大小[{,..}] 虚线一个单元地间隔长度>{, } 显示图形大小(像素为单位)> 图形解析度个>{{},{}}四边地空白> 是否旋转度显示—————————————————————————————————————十五、流程控制分支[, , ] 如果为,执行段,否则段[, , , ] 同上,即非又非,则执行段[..] 执行第一为地对应地[..]执行第一个所匹配地所对应地段循环[,{}] 重复执行次[,{}, {},...]多重循环[, ] 循环执行直到为[]类似于语言中地,注意","与";"地用法相反: [ ^< []]异常控制[] 停止计算,把返回给最近一个处理[, ] 同上,[] 计算,遇到返回地值则停止[, ] 当[, ]中匹配时停止其他控制[] 从函数返回,返回值为[ ] 返回值[ ] 结束最近地一重循环[ ] 停止本次循环,进行下一次循环[] 无条件转向[]处[] 设置一个断点[] 计算,如果有出错信息产生,则返回地值[,...]当特定信息产生时则返回[]当产生信息时放回[ ] 中断运行[ ] 中断运行[] 计算,当耗时超过秒时终止[]计算,当耗用内存超过字节时终止运算交互式控制。
Mathematica使用说明
Mathematica 入门一、引 言Mathematica 是美国Wolfram 公司开发的一个功能强大的数学软件系统,它主要包括:数值计 算、符号计算、图形功能和程序设计. 本指导书力图在不大的篇幅中给读者提供该系统的一个简 要的介绍. 指导书是按Mathematica 4.0版本编写的, 但是也适用于Mathematica 的任何其它图形 界面的版本.Mathematica 在数值计算、符号运算和图形表示等方面都是强有力的工具,并且其命令句法惊 人地一致, 这个特性使得Mathematica 很容易使用.不必担心你还不太熟悉计算机.本入门将带你 迅速了解Mathematica 的基本使用过程, 但在下面的介绍中,我们假定读者已经知道如何安装及启动Mathematica. 此外,始终要牢记的几点是:● Mathematica 是一个敏感的软件. 所有的Mathematica 函数都以大写字母开头; ● 圆括号( ),花括号{ },方括号[ ]都有特殊用途, 应特别注意; ● 句号“.”,分号“;”,逗号“,”感叹号“!”等都有特殊用途, 应特别注意; ● 用主键盘区的组合键Shfit+Enter 或数字键盘中的Enter 键执行命令.二、一般介绍1. 输入与输出例1 计算 1+1:在打开的命令窗口中输入1+2+3并按组合键Shfit+Enter 执行上述命令,则屏幕上将显示:In[1] : =1+2+3 Out[1] =6这里In[1] : = 表示第一个输入,Out[1]= 表示第一个输出,即计算结果.2. 数学常数Pi 表示圆周率π; E 表示无理数e; I 表示虚数单位i ; Degree 表示π/180; Infinity 表示无穷大.注:Pi,Degree,Infinity 的第一个字母必须大写,其后面的字母必须小写.3. 算术运算Mathematica 中用“+”、“-”、“*”、“/” 和“^”分别表示算术运算中的加、减、乘、除和 乘方.例2 计算 π⋅⎪⎭⎫ ⎝⎛⋅+⎪⎭⎫⎝⎛⋅--213121494891100. 输入 100^(1/4)*(1/9)^(-1/2)+8^(-1/3)*(4/9)^(1/2)*Pi则输出 3103π+这是准确值. 如果要求近似值,再输入N[%] 则输出 10.543这里%表示上一次输出的结果,命令N[%]表示对上一次的结果取近似值. 还用 %% 表示上 上次输出的结果,用 %6表示Out[6]的输出结果.注:关于乘号*,Mathematica 常用空格来代替. 例如,x y z 则表示x*y*z,而xyz 表示字符 串,Mathematica 将它理解为一个变量名. 常数与字符之间的乘号或空格可以省略.4. 代数运算例3 分解因式 232++x x 输入 Factor[x^2+3x+2] 输出 )x 2)(x 1(++ 例4 展开因式 )2)(1(x x ++ 输入 Expand[(1+x)(2+x)] 输出 2x x 32++例5 通分 3122+++x x 输入 Together[1/(x+3)+2/(x+2)]输出 )x 3)(x 2(x38+++例6 将表达式)3)(2(38x x x+++ 展开成部分分式输入 Apart[(8+3x)/((2+x)(3+x))]输出 3x 12x 2+++ 例7 化简表达式 )3)(1()2)(1(x x x x +++++ 输入 Simplify[(1+x)(2+x)+(1+x)(3+x)]输出 2x 2x 75++三、函数1. 内部函数Mathematica 系统内部定义了许多函数,并且常用英文全名作为函数名,所有函数名的第一个 字母都必须大写,后面的字母必须小写. 当函数名是由两个单词组成时,每个单词的第一个字母都 必须大写,其余的字母必须小写. Mathematica 函数(命令)的基本格式为函数名[表达式,选项] 下面列举了一些常用函数:算术平方根x Sqrt[x] 指数函数x e Exp[x] 对数函数x a log Log[a,x]对数函数x ln Log[x]三角函数 Sin[x], Cos[x], Tan[x], Cot[x], Sec[x], Csc[x] 反三角函数ArcSin[x], ArcCos[x], ArcTan[x], ArcCot[x], AsrcSec[x], ArcCsc[x]双曲函数 Sinh[x], Cosh[x], Tanh[x], 反双曲函数 ArcSinh[x], ArcCosh[x], ArcTanh[x] 四舍五入函数 Round[x] (*取最接近x 的整数*) 取整函数 Floor[x] (*取不超过x 的最大整数*) 取模 Mod[m,n] (*求m/n 的模*)取绝对值函数 Abs[x] n 的阶乘 n! 符号函数 Sign[x] 取近似值 N[x,n] (*取x 的有n 位有效数字的近似值,当n 缺省时,n 的默认值 为6*)例8 求π的有6位和20位有效数字的近似值. 输入 N[Pi] 输出 3.14159输入 N[Pi, 20] 输出 3.1415926535897932285 注:第一个输入语句也常用另一种形式: 输入 Pi//N 输出 3.14159例9 计算函数值(1) 输入 Sin[Pi/3] 输出23 (2) 输入 ArcSin[.45] 输出 0.466765 (3) 输入 Round[-1.52] 输出 -2 例10 计算表达式)6.0arctan(226sin 2ln 1132+-+-e π 的值 输入 1/(1+Log[2])*Sin[Pi/6]-Exp[-2]/(2+2^(2/3))*ArcTan[.6] 输出 0.2749212. 自定义函数在Mathematica 系统内,由字母开头的字母数字串都可用作变量名,但要注意其中不能包含空 格或标点符号.变量的赋值有两种方式. 立即赋值运算符是“=”,延迟赋值运算符是“: =”. 定义函数使用 的符号是延迟赋值运算符“: =”.例11 定义函数 12)(23++=x x x f ,并计算)2(f ,)4(f ,)6(f . 输入Clear[f,x]; (*清除对变量f 原先的赋值*) f[x_]:=x^3+2*x^2+1; (*定义函数的表达式*) f[2] (*求)2(f 的值*)f[x]/.{x->4} (*求)4(f 的值,另一种方法*)x=6; (*给变量x 立即赋值6*)f[x] (*求)6(f 的值,又一种方法*)输出17 97 289注:本例1、2、5行的结尾有“;”,它表示这些语句的输出结果不在屏幕上显示.四、解方程在Mathematica 系统内,方程中的等号用符号“==”表示. 最基本的求解方程的命令为 Solve[eqns, vars]它表示对系数按常规约定求出方程(组)的全部解,其中eqns 表示方程(组),vars 表示所求未知变量. 例12 解方程0232=++x x 输入 Solve[x^2+3x+2==0, x] 输出 }}1x {},2x {{-→-→例13 解方程组 ⎩⎨⎧=+=+1dy cx by ax输入 Solve[{a x + b y == 0,c x + d y ==1}, {x,y}]输出 ⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→-→ad bc a y ,ad bc b x例14 解无理方程a x x =++-11输入 Solve[Sqrt[x-1]+ Sqrt[x+1] == a, x]输出 ⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→24a 4a 4x 很多方程是根本不能求出准确解的,此时应转而求其近似解. 求方程的近似解的方法有两种, 一种是在方程组的系数中使用小数,这样所求的解即为方程的近似解;另一种是利用下列专门用于 求方程(组)数值解的命令:NSolve[eqns, vars] (*求代数方程(组)的全部数值解*)FindRoot[eqns, {x, x0}, {y, y0} ,]后一个命令表示从点),,(00 y x 出发找方程(组)的一个近似解,这时常常需要利用图像法先大致确定所求根的范围,是大致在什么点的附近.例15 求方程013=-x 的近似解 输入 NSolve[x^3-1== 0, x]输出 {{→x -0.5-0.866025ii},{→x -0.5+0.866025ii},{→x 1.}} 输入 FindRoot[x^3-1==0,{x, .5}] 输出 {→x 1.}下面再介绍一个很有用的命令:Eliminate[eqns, elims] (*从一组等式中消去变量(组)elims*)例16从方程组 ⎪⎩⎪⎨⎧=+=-+-+=++11)1()1(1222222y x z y x z y x 消去未知数y 、z .输入Eliminate[{x^2+y^2+z^2 ==1,x^2+(y-1)^2 + (z-1)^2 ==1, x + y== 1},{y, z}] 输出 0x 3x 22==+-注:上面这个输入语句为多行语句,它可以像上面例子中那样在行尾处有逗号的地方将行与行 隔开, 来迫使Mathematica 从前一行继续到下一行在执行该语句. 有时候多行语句的意义不太明 确,通常发生在其中有一行本身就是可执行的语句的情形,此时可在该行尾放一个继续的记号“\”, 来迫使Mathematica 继续到下一行再执行该语句.五、保存与退出Mathematica 很容易保存Notebook中显示的内容,打开位于窗口第一行的File菜单,点击Save 后得到保存文件时的对话框,按要求操作后即可把所要的内容存为*.nb文件. 如果只想保存全部输入的命令,而不想保存全部输出结果,则可以打开下拉式菜单Kernel,选中Delete All Output,然后再执行保存命令. 而退出Mathematica与退出Word的操作是一样的.六、查询与帮助查询某个函数(命令)的基本功能,键入“?函数名”,想要了解更多一些,键入“??函数名”,例如, 输入?Plot则输出Plot[f,{x,xmin,xmax}] generates a plot of f as a functionof x from xmin to xmax. Plot[{f1,f2,…},{x,xmin,xmax}] plots several functions fi它告诉了我们关于绘图命令“Plot”的基本使用方法.例17 在区间]1,1y=的图形.[-上作出抛物线2x输入Plot[x^2,{x,-1,1}]则输出例18 .输入Plot[{Sin[x],Cos[x]},{x,0,2Pi}]则输出??Plot则Mathematica会输出关于这个命令的选项的详细说明,请读者试之.此外,Mathematica的Help菜单中提供了大量的帮助信息,其中Help菜单中的第一项Help Browser(帮助游览器)是常用的查询工具,读者若想了解更多的使用信息,则应自己通过Help菜单去学习.空间图形的画法(基础实验)实验目的 掌握用Mathematica 绘制空间曲面和曲线的方法. 熟悉常用空间曲线和空间曲面 的图形特征,通过作图和观察, 提高空间想像能力. 深入理解二次曲面方程及其图形.基本命令1.空间直角坐标系中作三维图形的命令Plot3D命令Plot3D 主要用于绘制二元函数),(y x f z =的图形. 该命令的基本格式为Plot3D[f[x,y],{x,x1,x2},{y,y1,y2},选项]其中f[x,y]是y x ,的二元函数, x1,x2表示x 的作图范围, y1,y2表示y 的作图范围.例如,输入Plot3D[x^2+y^2,{x,-2,2},{y,-2,2}]则输出函数22y x z +=在区域22,22≤≤-≤≤-y x 上的图形(图2.1)与Plot 命令类似, Plot3D 有许多选项. 其中常用的如PlotPoints 和ViewPoint. PlotPoints 的用 法与以前相同. 由于其默认值为PlotPoints->15, 常常需要增加一些点以使曲面更加精致, 可能要 用更多的时间才能完成作图. 选项ViewPoint 用于选择图形的视点(视角), 其默认值为 ViewPoint->{1.3,-2.4,2.0},需要时可以改变视点.2.利用参数方程作空间曲面或曲线的命令ParametricPlot3D 用于作曲面时, 该命令的基本格式为ParametricPlot3D[{x[u,v],y[u,v],z[u,v]},{u,u1,u2},{v,v1,v2},选项]其中x[u,v],y[u,v],z[u,v]是曲面的参数方程表示式. u1,u2是作图时参数u 的范围, v1,v2是参数v 的 范围.例如,对前面的旋转抛物面, 输入ParametricPlot3D[{u*Cos[v],u*Sin[v],u^2},{u,0,3},{v,0,2 Pi}]同样得到曲面22y x z +=的图形(图2.2).由于自变量的取值范围不同, 图形也不同. 不过, 后者比较好的反映了旋转曲面的特点, 因 而是常用的方法.又如, 以原点为中心, 2为半径的球面. 它是多值函数, 不能用命令Plot3D 作图. 但是, 它的 参数方程为,20,0,cos 2,sin sin 2,cos sin 2πθπϕϕθϕθϕ≤≤≤≤===z y x因此,只要输入ParametricPlot3D[{2 Sin[u]*Cos[v],2 Sin[u]*Sin[v],2 Cos[u]},{u,0,Pi},{v,0,2 Pi}]便作出了方程为22222=++y x z 的球面(图2.3)..用于作空间曲线时,ParametricPlot3D 的基本格式为ParametricPlot3D[{x[t],y[t],z[t]},{t,t1,t2},选项]其中x[t],y[t],z[t]是曲线的参数方程表示式. t1,t2是作图时参数t 的范围.例如, 空间螺旋线的参数方程为).80(10/,sin ,cos π≤≤===t t z t y t x输入ParametricPlot3D[{Cos[t],Sin[t],t/10,RGBColor[1,0,0]},{t,0,8 Pi}]则输出了一条红色的螺旋线(图2.4).在这个例子中,请读者注意选项RGBColor[1,0,0]的位置.用于作空间曲线时, ParametricPlot3D 的选项PlotPoints 的默认值是30, 选项ViewPoint 的默 认值没有改变.3.作三维动画的命令MoviPlot3D:无论在平面或空间, 先作出一系列的图形, 再连续不断地放映, 便得到动画. 例如, 输入调用作图软件包命令<<Graphics\Animation.m.执行后再输入MoviePlot3D[Cos[t*x]*Sin[t*y],{x,-Pi,Pi},{y,-Pi,Pi},{t,1,2},Frames->12]则作出了12幅曲面图, 选中任一幅图形, 双击它便可形成动画.实验举例一般二元函数作图例2.1 (教材 例2.1) 作出平面y x z 326--=的图形,其中20,30≤≤≤≤y x . 输入Plot3D[6-2x-3y,{x,0,3},{y,0,2}]则输出所作平面的图形(图2.5).如果只要位于第一卦限的部分, 则输入Plot3D[6-2x-3y,{x,0,3},{y,0,2},PlotRange->{0,6}]观察图形.2.6).图2.6例2.2 (教材 例2.2) 作出函数2214y x z ++=的图形.输入k[x_,y_]:=4/(1+x^2+y^2)Plot3D[k[x,y],{x,-2,2},{y,-2,2},PlotPoints->30,PlotRange->{0,4},BoxRatios->{1,1,1}]则输出函数的图形2.7. 观察图形, 理解选项PlotRange->{0,4}和BoxRatios->{1,1,1}的含义. 选项 BoxRatios 的默认值是{1,1,0.4}.例2.3 (教材 例2.3) 作出函数22y x xye z ---=的图形. 输入命令Plot3D[-x*y*Exp[-x^2-y^2],{x,-3,3},{y,-3,3},PlotPoints->30,AspectRatio->Automatic];则输出所求图形(图 图2.8例2.4 (教材 例2.4) 作出函数)94cos(22y x z +=的图形. 输入Plot3D[Cos[4x^2+9y^2],{x,-1,1},{y,-1,1},Boxed->False,Axes->Automatic,PlotPoints->30,Shading->False]则输出网格形式的曲面图2.9, 这是选项Shading->False 起的作用, 同时注意选项Boxed->False 的作用.二次曲面例2.5 (教材 例2.5) 作出椭球面1194222=++z y x 的图形. 这是多值函数, 用参数方程作图的命令ParametricPlot3D. 该曲面的参数方程为,cos ,sin sin 3,cos sin 2u z v u y v u x === (ππ20,0≤≤≤≤v u ).输入ParametricPlot3D[{2*Sin[u]*Cos[v],3*Sin[u]*Sin[v], Cos[u]},{u,0,Pi},{v,0,2 Pi},PlotPoints->30]则输出椭球面的图形, 可使图形更加光滑.图2.10例2.6 (教材 例2.6) 作出单叶双曲面1941222=-+z y x 的图形. 曲面的参数方程为,tan 3,cos sec 2,sin sec u z v u y v u x === (.20,2/2/πππ≤≤<<-v u )输入ParametricPlot3D[{Sec[u]*Sin[v],2*Sec[u]*Cos[v], 3*Tan[u]},{u,-Pi/4,Pi/4},{v,0,2 Pi},PlotPoints->30]图2.11例2.7 作双叶双曲面13.14.15.1222222-=-+z y x 的图形.曲面的参数方程是,csc 3.1,sin cot 4.1,cos cot 5.1u z v u y v u x ===其中参数πππ<<-≤<v u ,20时对应双叶双曲面的一叶, 参数πππ<<-<≤-v u ,02时对应双叶双曲面的另一叶. 输入sh1=ParametricPlot3D[{1.5*Cot[u]*Cos[v],1.4*Cot[u]*Sin[v],1.3/Sin[u]},{u,Pi/1000,Pi/2},{v,-Pi,Pi}, DisplayFunction->Identity];(*DisplayFunction->Identity 是使图形暂时不输出的选项*) sh2=ParametricPlot3D[{1.5*Cot[u]*Cos[v],1.4* Cot[u]*Sin[v],1.3/Sin[u]},{u,-Pi/2,-Pi/1000}, {v,-Pi,Pi},DisplayFunction->Identity];Show[sh1,sh2,DisplayFunction->$DisplayFunction](*命令Show[sh1,sh2]是把图形sh1,sh2放置在一起, DisplayFunction->$DisplayFunction 是恢复显示图形的选项*) 输出为图2.12.例2.8 可以证明: 函数xy z =的图形是双曲抛物面. 在区域22,22≤≤-≤≤-y x 上作出它的图形.输入Plot3D[x*y,{x,-2,2},{y,-2,2},BoxRatios->{1,1,2}, PlotPoints->30]输出图形略. 也可以用ParametricPlot3命令作出这个图形, 输入ParametricPlot3[{r*Cos[t],r*Sin[t],r^2*Cos[t] *Sin[t]},{r,0,2},{t,0,2 Pi},PlotPoints->30]输出为图2.13例2.9 (教材 例2.7) 作出圆环v z u v y u v x sin 7,sin )cos 38(,cos )cos 38(=+=+=,(πππ22/,2/30≤≤≤≤v u )的图形.输入ParametricPlot3D[{(8+3*Cos[v])*Cos[u],(8+3*Cos[v])*Sin[u],7*Sin[v]},{u,0,3*Pi/2},{v,Pi/2,2*Pi}];图2.14例2.10 画出参数曲面]2,001.0[],4,0[)5/2/ln(tan cos sin sin sin cos ∈∈⎪⎩⎪⎨⎧++===v u u v v z vu y v u x π的图形.输入命令ParametricPlot3D[{Cos[u]*Sin[v],Sin[u]Sin[v],Cos[v]+Log[Tan[v/2]+u/5]}, {u,0,4*Pi},{v,0.001,2}];则输出所求图形(图2.15).曲面相交例2.11 (教材 例2.8) 作出球面22222=++z y x 和柱面1)1(22=+-y x 相交的图形. 输入g1=ParametricPlot3D[{2 Sin[u]*Cos[v],2 Sin[u]*Sin[v],2 Cos[u]},{u,0,Pi},{v,0,2 Pi},DisplayFunction->Identity];g2=ParametricPlot3D[{2Cos[u]^2,Sin[2u],v},{u,-Pi/2,Pi/2},{v,-3,3},DisplayFunction->Identity];Show[g1,g2,DisplayFunction->$DisplayFunction]则输出所求图形(图2.16)例2.12 作出锥面222z y x =+和柱面1)1(22=+-y x 相交的图形. 输入g3=ParametricPlot3D[{r*Cos[t],r*Sin[t],r}, {r,-3,3},{t,0,2 Pi},DisplayFunction->Identity];Show[g2,g3,DisplayFunction->$DisplayFunction]输出为图2.17.图2.17例2.13 画出以平面曲线x y cos =为准线, 母线平等Z 轴的柱面的图形. 写出这一曲面的参数方程为⎪⎩⎪⎨⎧=∈-∈==s z R s t t y t x ],,[,cos ππ 取参数s 的范围为[0, 8]. 输入命令ParametricPlot3D[{t,Cos[t],s},{t,-Pi,Pi},{s,0,8}]则输出所求图形(图2.18).例2.14 (教材 例2.9) 作出曲面x y x y x z =+--=2222,1及xOy 面所围成的立体图形. 输入g1=ParametricPlot3D[{r*Cos[t], r*Sin[t],r^2},{t,0,2*Pi},{r,0,1},PlotPoints->30]; g2=ParametricPlot3D[{Cos[t]*Sin[r],Sin[t]Sin[r],Cos[r]+1},{t,0,2*Pi},{r,0,Pi/2},PlotPoints->30];Show[g1,g2]则输出所求图形(图图2.19例2.15 (教材 例2.10) 作出螺旋线t z t y t x 2,sin 10,cos 10===(R t ∈)在xOz 面上的正投影曲线的图形.所给螺旋线在xOz面上的投影曲线的参数方程为10==.,cosx2ztt输入ParametricPlot[{2t,10Cos[t]},{t,-2Pi,2Pi}];则输出所求图形(图图2.20注:将表示曲线的方程组, 消去其中一个变量, 即得到曲线在相应于这一变量方向上的正投影曲线的方程, 不考虑曲线所在平面, 它就是投影柱面方程; 对于参数方程, 只要注意将方程中并不存在的那个变元看成第二参数而添加第三个方程即可.例2.16 (教材例2.11) 作出默比乌斯带(单侧曲面)的图形.输入Clear[r,x,y,z];r[t_,v_]:=2+0.5*v*Cos[t/2];x[t_,v_]:=r[t,v]*Cos[t]y[t_,v_]:=r[t,v]*Sin[t]z[t_,v_]:=0.5*v*Sin[t/2];ParametricPlot3D[{x[t,v],y[t,v],z[t,v]},{t,0,2 Pi},{v,-1,1},PlotPoints->{40,4},Ticks->False]则输出所求图形(图空间曲线例2.17 (教材 例2.12) 作出空间曲线)60(2,sin ,cos π≤≤===t t z t t y t t x 的图形. 输入ParametricPlot3D[{t*Cos[t],t*Sin[t],2*t,RGBColor[1.0,0,0.5]},{t,0,6 Pi}]则输出所求图形(图图2.22例2.18 绘制参数曲线 ⎪⎩⎪⎨⎧===2/cos 2sin t z t y t x 的图形.输入命令ParametricPlot3D[{Sin[t],2Cos[t],t.2},{t,0,12}];则输出所求图形(图2.23).例2.19 绘制参数曲线 ⎪⎪⎩⎪⎪⎨⎧=+==t z t y t x arctan 211cos 2的图形.输入命令ParametricPlot3D[{Cos[t]^2,1/(1+2*t),ArcTan[t]},{t,0,8}]; 则输出所求图形(图2.24).动画制作例2.20 平面正弦曲线的运动. 输入Table[Plot[Sin[x+t*Pi],{x,0,6 Pi}],{t,0,2,1/8}]则作出了16幅具有不同相位的正弦曲线(输出图形略). 双击屏幕上某一幅画, 则可形成动画. 下面是动画的最后一幅图(图2.25).例2.21 (教材 例2.13) 作模拟水波纹运动的动画. 输入调用软件包命令<<Graphics\Animation.m执行后再输入MoviePlot3D[Sin[Sqrt[x^2+y^2]+t*2*Pi],{x,-8 Pi,8 Pi},{y,-8 Pi,8 Pi},{t,1,0},PlotPoints->50,AspectRatio->0.5,ViewPoint->{0.911,-1.682,2.791},Frames->12]则输出12幅具有不同相位的水面图形, 双击屏幕上任意一幅图, 均可观察动画效果. 下图是第一幅图(图2.26).图2.26例2.22 (教材 例2.14) 用动画演示由曲线],0[,sin π∈=z z y 绕z 轴旋转产生旋转曲面的过程.该曲线绕z 轴旋转所得旋转曲面的方程为,sin 222z y x =+ 其参数方程为])2,0[],,0[(,,sin sin ,cos sin ππ∈∈===u z z z u z y u z x输入For[i=1,i<=30,i++,ParametricPlot3D[{Sin[z]*Cos[u],Sin[z]*Sin[u],z},{z,0,Pi},{u,0,2*Pi*i/30},AspectRatio->1,AxesLabel->{"X","Y","Z"}]];则输出连续变化的30幅图形. 双击屏幕上任意一幅图, 均可观察动画效果. 下面是生成旋转曲面的过程中的第23幅图(图2.27).图2.27例2.23 将一张薄膜贴在1,0,1,0====y y x x 的方框上, 薄膜振动的函数取为)cos()sin()sin()cos 1)(cos 1(16),,(224141222t n m y m x n m n n m t y x u m n ππππππ+⋅-+=∑∑==其中t 为参数, 作出图形随t 的变动而引起薄膜振动的动画.初始位置是).0,,(y x u 通过t 的不同值得到多幅画面, 然后将这些图形连续地一张张显示出来, 即可达到运动的动画效果. 输入命令<<Graphics 'Animation '; Clear[x,y,t,m,n];u[x_,y_,t_]:=Sum[16*(1+Cos[n*Pi])*(1-Cos[m*Pi])*Sin[n*Pi*x]*Sin[m*Pi*y]*Cos[Sqrt[m^2+n^2]*Pi*t] /(m^2*n^2*Pi*2),{m,1,4},{n,1,4}]Animate[Plot3D[u[x,y,t],{x,0,1},{y,0,1}, PlotRange->{-8,8}],{t,0,1.75,0.25}];图2.28附录Ⅰ 大学数学实验指导书项目三 多元函数微积分实验1 多元函数微分学(基础实验)实验目的 掌握利用Mathematica 计算多元函数偏导数和全微分的方法, 掌握计算二元 函数极值和条件极值的方法. 理解和掌握曲面的切平面的作法. 通过作图和观察, 理解二元 函数的性质、方向导数、梯度和等高线的概念.基本命令1.求偏导数的命令D命令D 既可以用于求一元函数的导数, 也可以用于求多元函数的偏导数. 例如: 求),,(z y x f 对x 的偏导数, 则输入D[f[x,y,z],x] 求),,(z y x f 对y 的偏导数, 则输入D[f[x,y,z],y]求),,(z y x f 对x 的二阶偏导数, 则输入D[f[x,y,z],{x,2}] 求),,(z y x f 对y x ,的混合偏导数, 则输入D[f[x,y,z],x,y] …………2.求全微分的命令Dt该命令只用于求二元函数),(y x f 的全微分时, 其基本格式为Dt[f[x,y]]其输出的表达式中含有Dt[x],Dt[y], 它们分别表示自变量的微分d x ,d y . 若函数),(y x f 的表 达式中还含有其它用字符表示的常数, 例如a, 则Dt[f[x,y]]的输出中还会有Dt[a], 若采用选 项Constants->{a}, 就可以得到正确结果, 即只要输入Dt[f[x,y],Constants->{a}]3.在Oxy 平面上作二元函数),(y x f 的等高线的命令ContourPlot 命令的基本格式为ContourPlot[f[x,y],{x,x1,x2},{y,y1,y2}]例如,输入ContourPlot[x^2-y^2,{x,-2,2},{y,-2,2}]则输出函数22y x z -=的等高线图(图1.1). 该命令的选项比较多(详细的内容参见光盘中的实验案例库). 如选项Contours->15表示作15条等高线, 选项Contours->{0}表示只作函数值为0的等高线.实验举例求多元函数的偏导数与全微分例1.1 (教材 例1.1) 设),(cos )sin(2xy xy z +=求.,,,222yx zx z y z x z ∂∂∂∂∂∂∂∂∂输入Clear[z];z=Sin[x*y]+Cos[x*y]^2; D[z,x] D[z,y] D[z,{x,2}] D[z,x,y]则输出所求结果.y Cos x y2y Cos x y Sin x yx Cos x y 2x Cos x y Sin x y2y 2Cos x y 2y 2Sin x y 2y 2Sin x y2Cos x y 2x y Cos x y 2x y Sin x y 2Cos x y Sin x y2x y Sin x y2例1.2 设,)1(y xy z +=求yzx z ∂∂∂∂,和全微分dz.输入Clear[z];z=(1+x*y)^y;D[z,x] D[z,y]则有输出⎪⎪⎭⎫ ⎝⎛++++++-]1[1)1()1(12xy Log xy xy xy xy y y y再输入Dt[z]则得到输出⎪⎪⎭⎫⎝⎛+++++]1[][1])[][()1(xy Log y Dt xy y xDt x yDt y xy y 例1.3 (教材 例1.2) 设,)(y xy a z +=其中a 是常数, 求dz.输入Clear[z,a];z=(a+x*y)^y;wf=Dt[z,Constants->{a}]//Simplify则输出结果:(a+xy)-1+y (y 2Dt[x,Constants->{a}]+Dt[y,Constants->{a}](xy+(a+xy)Log[a+xy]))其中Dt[x,Constants->{a}]就是d x , Dt[y,Constants->{a}]就是d y . 可以用代换命令“/.”把它们 换掉. 输入wf/.{Dt[x,Constants->{a}]->dx,Dt[y,Constants->{a}]->dy}输出为(a+xy)-1+y (dxy 2+dy(xy+(a+xy)Log[a+xy]))例1.4 (教材 例1.3) 设v u e y v u e x u u cos ,sin -=+=,求.,,,yv x v y u x u ∂∂∂∂∂∂∂∂ 输入eq1=D[x==E^u+u*Sin[v],x,NonConstants->{u,v}](*第一个方程两边对x 求导数, 把u,v 看成x,y 的函数*) eq2=D[y==E^u-u*Cos[v],x,NonConstants->{u,v}](*第二个方程两边对x 求导数, 把u,v 看成x,y 的函数*) Solve[{eq1,eq2},{D[u,x,NonConstants->{u,v}],D[v,x,NonConstants->{u,v}]}]//Simplify(*解求导以后由eq1,eq2组成的方程组*)则输出}}][][1(][}],{tan ,,[,][][1][}],{tan ,,[{{v Sin E v Cos E u v Cos E v u ts NonCons x v D v Sin E v Cos E v Sin v u ts NonCons x u D u u u u u -+-->->-+->->-其中D[u,x,NonConstants->{u,v}]表示u 对x 的偏导数, 而D[v,x,NonCosnstants->{u,v}]表示v 对x 的偏导数. 类似地可求得u ,v 对y 的偏导数.微分学的几何应用例1.5 求出曲面222y x z +=在点(1,1)处的切平面、法线方程, 并画出图形.解(1) 画出曲面的图形. 曲面的参数方程为⎪⎩⎪⎨⎧=∈∈==2]2,0[],2,0[,cos 2/sin rz r u u r y u f x π 输入命令Clear[f];f[x_,y_]=2x^2+y^2;p1=Plot3D[f[x,y],{x,-2,2},{y,-2,2}];g1=ParametricPlot3D[{r*Sin[u]/Sqrt[2.],r*Cos[u],r^2}, {u,0,2*Pi},{r,0,2}] 则输出相应图形(图1.2).(2) 画出切平面的图形. 输入命令a=D[f[x,y],x]/.{x->1,y->1}; b=D[f[x,y],y]/.{x->1,y->1}; p[x_,y_]=f[1,1]+a(x-1)+b(y-1);g2=Plot3D[p[x,y],{x,-2,2},{y,-2,2}];则输出切平面方程为,012=-+y x 及相应图形(图1.3).(3) 画出法线的图形. 输入命令ly[x_]=1+b(x-1)/a;lz[x_]=f[1,1]-(x-1)/a;g3=ParametricPlot3D[{x,ly[x],lz[x]},{x,-2,2}]; Show[p1,g2,g3,AspectRatio->Automatic,ViewPoint->{-2.530,-1.025,2.000}];则输出相应图形(图1.4).例1.6 (教材 例1.4) 求曲面14),(22++=y x y x k 在点⎪⎭⎫⎝⎛2164,21,41处的切平面方程, 并把曲面和它的切平面作在同一图形里.输入Clear[k,z];k[x_,y_]=4/(x^2+y^2+1); (*定义函数k(x,y)*)kx=D[k[x,y],x]/.{x->1/4,y->1/2};(*求函数k(x,y)对x 的偏导数, 并代入在指定点的值*) ky=D[k[x,y],y]/.{x->1/4,y->1/2};(*求函数k(x,y)对y 的偏导数, 并代入在指定的值*) z=kx*(x-1/4)+ky*(y-1/2)+k[1/4,1/2]; (*定义在指定点的切平面函数*)再输入qm=Plot3D[k[x,y],{x,-2,2},{y,-2,2},PlotRange->{0,4}, BoxRatios->{1,1,1},PlotPoints->30, DisplayFunction->Identity]; qpm=Plot3D[z,{x,-2,2},{y,-2,2}, DisplayFunction->Identity];Show[qm,qpm,DisplayFunction->$DisplayFunction]则输出所求曲面与切平面的图形(图1.5).多元函数的极值例1.7 (教材 例1.5) 求x y x y x y x f 933),(2233-++-=的极值. 输入Clear[f];f[x_,y_]=x^3-y^3+3x^2+3y^2-9x; fx=D[f[x,y],x] fy=D[f[x,y],y]critpts=Solve[{fx==0,fy==0}]则分别输出所求偏导数和驻点:2236369y y x x -++-{{x->-3,y->0},{x->-3,y->2},{x->1,y->0},{x->1,y->2}}再输入求二阶偏导数和定义判别式的命令fxx=D[f[x,y],{x,2}]; fyy=D[f[x,y],{y,2}]; fxy=D[f[x,y],x,y]; disc=fxx*fyy-fxy^2输出为判别式函数2xy yy xx f f f -的形式:(6+6x)(6-6y)再输入data={x,y,fxx,disc,f[x,y]}/.critpts;TableForm[data,TableHeadings->{None,{ "x ", "y ", "fxx ", "disc ", "f "}}]最后我们得到了四个驻点处的判别式与xx f 的值并以表格形式列出.X y fxx disc f -3 0 -12 -72 27 -3 2 -12 72 31 1 0 12 72 -51 2 12 -72 -1易见,当2,3=-=y x 时,12-=xx f 判别式disc=72, 函数有极大值31; 当0,1==y x 时,12=xx f 判别式disc=72, 函数有极小值-5;当0,3=-=y x 和2,1==y x 时, 判别式disc=-72, 函数在这些点没有极值. 最后,把函数的等高线和四个极值点用图形表示出来,输入d2={x,y}/.critpts;g4=ListPlot[d2,PlotStyle->PointSize[0.02],DisplayFunction->Identity]; g5=ContourPlot[f[x,y],{x,-5,3},{y,-3,5},Contours->40,PlotPoints->60,ContourShading->False,Frame->False,Axes->Automatic,AxesOrigin->{0,0},DisplayFunction->Identity];Show[g4,g5,DisplayFunction->$DisplayFunction]则输出图1.6.从上图可见, 在两个极值点附近, 函数的等高线为封闭的. 在非极值点附近, 等高线不 封闭. 这也是从图形上判断极值点的方法.注:在项目一的实验4中,我们曾用命令FindMinimum 来求一元函数的极值, 实际上,也可 以用它求多元函数的极值, 不过输入的初值要在极值点的附近. 对本例,可以输入以下命令FindMinimum[f[x,y],{x,-1},{y,1}]则输出{-5.,{x->1.,y->-2.36603×10-8}}从中看到在0,1==y x 的附近函数),(y x f 有极小值-5, 但y 的精度不够好.例1.8 求函数22y x z +=在条件0122=-+++y x y x 下的极值. 输入Clear[f,g,la]; f[x_,y_]=x^2+y^2;g[x_,y_]=x^2+y^2+x+y-1; la[x_,y_,r_]=f[x,y]+r*g[x,y]; extpts=Solve[{D[la[x,y,r],x]==0,D[la[x,y,r],y]==0,D[la[x,y,r],r]==0}]得到输出⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+->-+->-+->-⎩⎨⎧⎭⎬⎫⎩⎨⎧-->--->--->-)31(21),31(21),33(31,)31(21),31(21),33(31y x r y x r再输入f[x,y]/.extpts//Simplify得到两个可能是条件极值的函数值}.32,32{-+但是否真的取到条件极值呢? 可利用等高线作图来判断.输入dian={x,y}/.Table[extpts[[s,j]],{s,1,2},{j,2,3}] g1=ListPlot[dian,PlotStyle->PointSize[0.03],DisplayFunction->Identity]cp1=ContourPlot[f[x,y],{x,-2,2},{y,-2,2},Contours->20,PlotPoints->60,ContourShading->False,Frame->False,Axes-> Automatic,AxesOrigin->{0,0},DisplayFunction->Identity]; cp2=ContourPlot[g[x,y],{x,-2,2},{y,-2,2},PlotPoints->60,Contours->{0},ContourShading-> False,Frame->False,Axes->Automatic,ContourStyle->Dashing[{0.01}],AxesOrigin->{0,0},DisplayFunction->Identity]; Show[g1,cp1,cp2,AspectRatio->1,DisplayFunction->$DisplayFunction]输出为⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+-+-⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧----)31(21,2321,)31(21,2321 及图1.7. 从图可见,在极值可疑点,2321,2321⎪⎪⎭⎫ ⎝⎛----⎪⎪⎭⎫ ⎝⎛+-+-2321,2321 处, 函数),(y x f z =的等高线与曲线0),(=y x g (虚线)相切. 函数),(y x f z =的等高线是一系列同心圆, 由里向外, 函数值在增大, 在)31(21),31(21--=--=y x 的附近观察, 可以得出),(y x f z =取条件极大的结论. 在),31(21+-=x )31(21+-=y 的附近观察, 可以得出),(y x f z =取条件极小的结论.梯度场例1.9 画出函数222),,(y x z z y x f --=的梯度向量. 解 输入命令<<Graphics`ContourPlot3D` <<Graphics`PlotField3D` <<Calculus`VectorAnalysis`SetCoordinates[Cartesian[x,y,z]];f=z^2-x^2-y^2;cp3d=ContourPlot3D[f,{x,-1.1,1.1},{y,-1.1,1.1},{z,-2,2},Contours->{1.0},Axes->Tr ue,AxesLabel->{"x","y","z"}];vecplot3d=PlotGradientField3D[f,{x,-1.1,1.1},{y,-1.1,1.1},{z,-2,2},PlotPoints->3,Ve ctorHeads->True];Show[vecplot3d, cp3d];则输出相应图形(图1.8)例1.10 在同一坐标面上作出⎪⎪⎭⎫⎝⎛++=2211),(y x x y x u 和 ,11),(22⎪⎪⎭⎫⎝⎛+-=y x y y x v 的等高线图(0>x ), 并给出它们之间的关系.解 输入命令<<Calculus`VectorAnalysis` <<Graphics`PlotField`SetCoordinates[Cartesian[x,y,z]];check[u_,v_]:={Grad[u][[1]]-Grad[v][[2]],Grad[v][[1]]+Grad[u][[2]]} u=x(1+1/(x^2+y^2));v=y(1-1/(x^2+y^2)); check[u,v]//Simplifyugradplot=PlotGradientField[u,{x,-2,2},{y,-2,2},DisplayFunction->Identity];uplot=ContourPlot[u,{x,-2,2},{y,-2,2},ContourStyle->GrayLevel[0],ContourShading->False,DisplayFunction->Identity,Contours->40,PlotPoints->40]; g1=Show[uplot,ugradplot,DisplayFunction->$DisplayFunction];vgradplot=PlotGradientField[v,{x,-2,2},{y,-2,2},DisplayFunction->Identity];vplot=ContourPlot[v,{x,-2,2},{y,-2,2},ContourStyle->GrayLevel[0.7],ContourShading->False,DisplayFunction->Identity,Contours->40,PlotPoints->40]; g2=Show[vplot,vgradplot,DisplayFunction->$DisplayFunction]; g3=Show[uplot,vplot,DisplayFunction->$DisplayFunction];g4=Show[ugradplot,vgradplot,DisplayFunction->$DisplayFunction];则输出相应图形(图1.9),其中(a) ),(y x u 的梯度与等高线图;(b) ),(y x v 的梯度与等高线图; (c) ),(y x u 与),(y x v 的等高线图; (d) ),(y x u 与),(y x v 的梯度图.图1.9从上述图中可以看出它们的等高线为一族正交曲线. 事实上, 有,,2222x v y x x y u y v y x x x u ∂∂-=+=∂∂∂∂=+=∂∂ 且,0=∇⋅∇v u 它们满足拉普拉斯方程022222222=∂∂+∂∂=∂∂+∂∂y vx v y u x u 例1.11 (教材 例1.6) 设,),()(22y x xe y x f +-=作出),(y x f 的图形和等高线, 再作出它的梯度向量gradf 的图形. 把上述等高线和梯度向量的图形叠加在一起, 观察它们之间的关系.输入调用作向量场图形的软件包命令<<Graphics\PlotField.m再输入Clear[f];f[x_,y_]=x*Exp[-x^2-y^2];dgx=ContourPlot[f[x,y],{x,-2,2},{y,-2,2},PlotPoints->60, Contours->25,ContourShading->False,Frame->False,Axes->Automatic,AxesOrigin->{0,0}] td=PlotGradientField[f[x,y],{x,-2,2},{y,-2,2},Frame->False] Show[dgx,td]输出为图1.10. 从图可以看到Oxy 平面上过每一点的等高线和梯度向量是垂直的, 且梯度的 方向是指向函数值增大的方向图1.10例1.12 求出函数244),(y xy x y x f +-=的极值, 并画出函数),(y x f 的等高线、驻点以及),(y x f -的梯度向量的图形.输入命令<<Graphics`PlotField`f=x^4-4*x*y+y^2;FindMinimum[f,{x,1},{y,1}]conplot=ContourPlot[f,{x,-2,2},{y,-3,3},ContourShading->False,PlotPoints->100,Contours->{-4,-2,0,2,4,10,20}];fieldplot=PlotGradientField[-f,{x,-2,2},{y,-3,3},ScaleFunction->(Tanh[#/5]&)];critptplot=ListPlot[{{-Sqrt[2],-2*Sqrt[2]},{0,0},{Sqrt[2],2*Sqrt[2]}},PlotStyle->{PointSize [0.03]}];Show[conplot,fieldplot,critptplot];则得到),(y x f 的最小值.4)82843.2,41421.1(-=f 以及函数的图形(图1.11).实验习题 1.设,xy e z =求.dz2.设),,(y xy f z =求.,,22222y x zy z x z ∂∂∂∂∂∂∂ 3.设),sin (cos ),(228/)(22y x e y x g y x+=+-求.,,2yx z y z x z ∂∂∂∂∂∂∂ 4.试用例1.5的方法求265433051830120),(xy x x x x y x f +++--=的极值. 5.求324y x z +=在01422=-+y x 条件下的极值.6.作出函数42210/)2(),(y x e y x f +-=的等高线和梯度线的图形, 并观察梯度线与等高线的 关系.实验2 多元函数积分学(基础实验)实验目的掌握用Mathematica 计算二重积分与三重积分的方法; 深入理解曲线积分、曲面积分的 概念和计算方法. 提高应用重积分和曲线、曲面积分解决各种问题的能力.基本命令1. 计算重积分的命令lntegrate 和NIntegrate 例如,计算dydx xy x ⎰⎰102, 输入Integrate[x*y^2,{x,0,1},{y,0,x}]则输出 151又如,计算dydx xy )sin(10102⎰⎰的近似值, 输入NIntegrate[Sin[x*y^2],{x,0,1},{y,0,1}] 则输出 0.160839注: Integrate 命令先对后边的变量积分.计算三重积分时,命令Integrate 的使用格式与计算二重积分时类似. 由此可见, 利用 Mathematica 计算重积分, 关键是确定各个积分变量的积分限. 2. 柱坐标系中作三维图形的命令CylindricalPlot3D使用命令Cylindricalplot3D, 首先要调出作图软件包. 输入 <<Graphics`ParametricPlot3D` 执行成功后便可继续下面的工作.使用命令Cylindricalplot3D 时,一定要把z 表示成r ,θ的函数. 例如,在直角坐标系中方 程22y x z +=是一旋转抛物面, 在柱坐标系中它的方程为2r z =. 因此,输入 CylindricalPlot3D[r^2,{r,0,2},{t,0,2Pi}] 则在柱坐标系中作出了该旋转抛物面的图形.3. 球面坐标系中作三维图形命令SphericalPlot3D使用命令SphericalPlot3D, 首先要调出作图软件包. 输入 <<Graphics`ParametricPlot3D` 执行成功后便可继续下面的工作.命令SphericalPlot3D 的基本格式为SphericalPlot3D[r[],θϕ, {}],,{},,,2121θθθϕϕϕ其中r[],θϕ是曲面的球面坐标方程, 使用时一定要把球面坐标中的r 表示成ϕ、θ的函数. 例如,在球面坐标系中作出球面,22222=++z y x 输入Sphericalplot3D[2,{u,0,pi},|v,0,2,pi|,plotpoints->40]则在球面坐标系中作出了该球面的图形. 4. 向量的内积用“.”表示两个向量的内积. 例如,输入 vecl={al,bl,cl} vec2={a2,b2,c2} 则定义了两个三维向量, 再输入 vec1. vec2 则得到它们的内积a1a2+b1b2+c1c2实验举例计算重积分例2.1 (教材 例2.1) 计算,2dxdy xyD⎰⎰ 其中D 为由,,2y x y x ==+ 2=y 所围成的有界区域.先作出区域D 的草图, 易直接确定积分限,且应先对x 积分, 因此, 输入 Integrate[x*y^2,{y,1,2},{x,2-y,Sqrt[y]}] 则输出所求二重积分的计算结果.120193例2.2 (教材 例2.2) 计算,)(22dxdy e Dy x⎰⎰+- 其中D 为.122≤+y x如果用直角坐标计算, 输入Clear[f,r];f[x,y]=Exp [-(x^2+y^2)];Integrate[f[x,y],{x,-1,1},{y,-Sqrt[1-x^2],Sqrt[1-x^2]}]则输出为dx x 1Erf e 211x 2⎥⎦⎤⎢⎣⎡-π⎰--其中Erf 是误差函数. 显然积分遇到了困难.如果改用极坐标来计算, 也可用手工确定积分限. 输入Integrate[(f[x,y]/.{x->r*Cos[t],y->r*Sin[t]})*r,{t,0,2 Pi},{r,0,1}] 则输出所求二重积分的计算结果eπ-π 如果输入NIntegrate[(f[x,y]/.{x->r*Cos[t],y->r*Sin[t]})*r,{t,0,2 Pi},{r,0,1}] 则输出积分的近似值1.98587例 2.3 (教材 例 2.3) 计算dxdydz z y x)(22++⎰⎰⎰Ω, 其中Ω由曲面222y x z --=与22y x z +=围成.先作出区域Ω的图形. 输入g1=ParametricPlot3D[{Sqrt[2]*Sin[fi]*Cos[th],Sqrt[2]*Sin[fi]*Sin[th], Sqrt[2]*Cos[fi]},{fi,0,Pi/4},{th,0,2Pi}] g2=ParametricPlot3D[{z*Cos[t],z*Sin[t],z},{z,0,1},{t,0,2Pi}] Show[g1,g2,ViewPoint->{1.3,-2.4,1.0}]则分别输出三个图形(图2.1(a), (b), (c)).考察上述图形, 可用手工确定积分限. 如果用直角坐标计算, 输入 g[x_,y_,z_]=x^2+y^2+z;Integrate[g[x,y,z],{x,-1,1},{y,-Sqrt[1-x^2], Sqrt[1-x^2]},{z,Sqrt[x^2+y^2],Sqrt[2-x^2-y^2]}] 执行后计算时间很长, 且未得到明确结果.现在改用柱面坐标和球面坐标来计算. 如果用柱坐标计算,输入Integrate[(g[x,y,z]/.{x->r*Cos[s],y->r*Sin[s]})*r, {r,0,1},{s,0,2Pi},{z,r,Sqrt[2-r^2]}]则输出π⎪⎪⎭⎫⎝⎛+-15281252 如果用球面坐标计算,输入Integrate[(g[x,y,z]/.{x->r*Sin[fi]*Cos[t],y->r*Sin[fi]*Sin[t],z->r*Cos[fi]})*r^2*Sin[fi],{s,0,2Pi},{fi,0,Pi/4},{r,0,Sqrt[2]}]则输出π⎪⎪⎭⎫ ⎝⎛+-321662551这与柱面坐标的结果相同.重积分的应用例2.4 求由曲面()y x y x f --=1,与()222,y x y x g --=所围成的空间区域Ω的体积.输入Clear[f,g];f[x_,y_]=1-x -y;g[x_,y_]=2-x^2-y^2;Plot3D[f[x,y],{x,-1,2},{y,-1,2}] Plot3D[g[x,y],{x,-1,2},{y,-1,2}] Show[%,%%]一共输出三个图形,首先观察到Ω的形状. 为了确定积分限, 要把两曲面的交线投影到Oxy 平面上输入 jx=Solve[f[x,y]==g[x,y],y] 得到输出 ⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧⎪⎭⎫ ⎝⎛-++→⎭⎬⎫⎩⎨⎧⎪⎭⎫ ⎝⎛-+-→22445121,445121x x y x x y为了取出这两条曲线方程, 输入 y1=jx[[1,1,2]] y2=jx[[2,1,2]] 输出为⎪⎭⎫ ⎝⎛-+-2445121x x⎪⎭⎫ ⎝⎛-++2445121x x再输入tu1=Plot[y1,{x,-2,3},PlotStyle->{Dashing[{0.02}]},DisplayFunction->Identity];tu2=Plot[y2,{x,-2,3},DisplayFunction->Identity]; Show[tu1,tu2,AspectRatio->1, DisplayFunction-> $DisplayFunction]输出为图2.2, 由此可见,y 是下半圆(虚线),y 是上半圆,因此投影区域是一个圆.设21y y =的解为1x 与2x ,则21,x x 为x 的积分限. 输入 xvals=Solve[y1==y2,x]输出为 ()()⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+→⎭⎬⎫⎩⎨⎧-→6121,6121x x 为了取出21,x x , 输入x1=xvals[[1,1,2]]x2=xvals[[2,1,2]]输出为()6121- ()6121+。
Mathematica软件3空间解析几何
MATHEMATICA 实习三空间解析几何实习目的1. 掌握用Mathematica 绘制空间曲面和曲线的方法。
2. 通过作图和观察,深入理解多元函数的概念,提高空间想象能力。
3. 深入理解二次曲面方程及其图形。
实习作业1. 画出函数)33,33(3sin 2cos ≤≤-≤≤--=y x y x z 的图形,采用选项PlotPoints->40.输入:Plot3D[-Cos[2x]*Sin[3y],{x,-3,3},{y,-3,3},PlotPoints →40] 输出:2. 画出函数ππππ≤≤-≤≤-+=+-y x y x e z y x,在)sin (cos 228/)(22上的图形,采用选项PlotPoints->60.输入:Plot3D[Exp[-(x^2+y^2)/8]*(Cos[x]^2+Sin[y]^2),{x,0,Pi},{y,0,Pi},PlotPoints →60] 输出:3. 二元函数22y x xyz +=在点(0,0)处不连续,作出该函数的图形,并且观察曲面在(0,0)附近的变化情况。
输入:Plot3D[x*y/(x^2+y^2),{x,-3,-1/100000},{y,-3,3}] 输出:4. 作出椭球面1194222=++z y x 的图形。
输入:ParametricPlot3D[{2Sin[u]*Cos[v],Sin[u]Sin[v],Cos[u]},{u,-3,3},{v,-3,3}] 输出:5. 一个环面的参数方程如下,作出它的图形。
)20,20(sin ,sin )cos 3(,cos )cos 3(ππ≤≤≤≤=+=+=v u u z v u y v u x 输入:ParametricPlot3D[{(3+Cos[u])*Cos[v],(3+Cos[u])*Sin[v],Sin [u]},{u,0,2Pi},{v,0,2Pi}] 输出:6. 一个称作正螺面的曲面的参数方程如下,作出它的图形。
mathmatic使用说明
Mathematica教程M athematica是美国Wolfram研究公司生产的一种数学分析型的软件,以符号计算见长,也具有高精度的数值计算功能和强大的图形功能。
假设在Windows环境下已安装好Mathematica4.0,启动Windows后,在“开始”菜单的“程序”中单击,就启动了Mathematica4.0,在屏幕上显示如图的Notebook窗口,系统暂时取名Untitled-1,直到用户保存时重新命名为止输入1+1,然后按下Shif+Enter键,这时系统开始计算并输出计算结果,并给输入和输出附上次序标识In[1]和Out[1],注意In[1]是计算后才出现的;再输入第二个表达式,要求系统将一个二项式展开,按Shift+Enter输出计算结果后,系统分别将其标识为In[2]和Out[2].如图在Mathematica的Notebook界面下,可以用这种交互方式完成各种运算,如函数作图,求极限、解方程等,也可以用它编写像C那样的结构化程序。
在Mathematica系统中定义了许多功能强大的函数,我们称之为内建函数(built-in function), 直接调用这些函数可以取到事半功倍的效果。
这些函数分为两类,一类是数学意义上的函数,如:绝对值函数Abs[x],正弦函数Sin[x],余弦函数Cos[x],以e为底的对数函数Log[x],以a为底的对数函数Log[a,x]等;第二类是命令意义上的函数,如作函数图形的函数Plot[f[x],{x,xmin,xmax}],解方程函数Solve[eqn,x],求导函数D[f[x],x]等。
必须注意的是:如果输入了不合语法规则的表达式,系统会显示出错信息,并且不给出计算结果,例如:要画正弦函数在区间[-10,10]上的图形,输入plot[Sin[x],{x,-10,10}],则系统提示“可能有拼写错误,新符号‘plot’ 很像已经存在的符号‘Plot’”,实际上,系统作图命令“Plot”第一个字母必须大写,一般地,系统内建函数首写字母都要大写。
Mathematica简介及使用方法
欢迎访问华中数学建模网 Mathematica函数大全--运算符及特殊符号一、运算符及特殊符号Line1; 执行Line,不显示结果Line1,line2 顺次执行Line1,2,并显示结果?name 关于系统变量name的信息??name 关于系统变量name的全部信息!command 执行Dos命令n! N的阶乘!!filename 显示文件内容<<filename 读入文件并执行Expr>> filename 打开文件写Expr>>>filename 打开文件从文件末写() 结合率[] 函数{} 一个表<*Math Fun*> 在c语言中使用math的函数(*Note*) 程序的注释#n 第n个参数## 所有参数rule& 把rule作用于后面的式子% 前一次的输出%% 倒数第二次的输出%n 第n个输出var::note 变量var的注释"Astring " 字符串Context ` 上下文a+b 加a-b 减a*b或a b 乘a/b 除a^b 乘方base^^num 以base为进位的数lhs&&rhs 且lhs||rhs 或!lha 非++,-- 自加1,自减1+=,-=,*=,/= 同C语言>,<,>=,<=,==,!= 逻辑判断(同c)lhs=rhs 立即赋值lhs:=rhs 建立动态赋值lhs:>rhs 建立替换规则lhs->rhs 建立替换规则expr//funname 相当于filename[expr]expr/.rule 将规则rule应用于exprexpr//.rule 将规则rule不断应用于expr知道不变为止param_ 名为param的一个任意表达式(形式变量)param__ 名为param的任意多个任意表达式(形式变量)二、系统常数Pi 3.1415....的无限精度数值E 2.17828...的无限精度数值Catalan 0.915966..卡塔兰常数EulerGamma 0.5772....高斯常数GoldenRatio 1.61803...黄金分割数Degree Pi/180角度弧度换算I 复数单位Infinity 无穷大-Infinity 负无穷大ComplexInfinity 复无穷大Indeterminate 不定式三、代数计算Expand[expr] 展开表达式Factor[expr] 展开表达式Simplify[expr] 化简表达式FullSimplify[expr] 将特殊函数等也进行化简PowerExpand[expr] 展开所有的幂次形式ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开FunctionExpand[expr] 化简expr中的特殊函数Collect[expr, x] 合并同次项Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项Together[expr] 通分Apart[expr] 部分分式展开Apart[expr, var] 对var的部分分式展开Cancel[expr] 约分ExpandAll[expr] 展开表达式ExpandAll[expr, patt] 展开表达式FactorTerms[poly] 提出共有的数字因子FactorTerms[poly, x] 提出与x无关的数字因子FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子Coefficient[expr, form] 多项式expr中form的系数Coefficient[expr, form, n] 多项式expr中form^n的系数Exponent[expr, form] 表达式expr中form的最高指数Numerator[expr] 表达式expr的分子Denominator[expr] 表达式expr的分母ExpandNumerator[expr] 展开expr的分子部分ExpandDenominator[expr] 展开expr的分母部分TrigExpand[expr] 展开表达式中的三角函数TrigFactor[expr] 给出表达式中的三角函数因子TrigFactorList[expr] 给出表达式中的三角函数因子的表TrigReduce[expr] 对表达式中的三角函数化简TrigToExp[expr] 三角到指数的转化ExpToTrig[expr] 指数到三角的转化RootReduce[expr]ToRadicals[expr]Mathematica入门教程Mathematica的基本语法特征如果你是第一次使用Mathematica,那么以下几点请你一定牢牢记住:Mathematica中大写小写是有区别的,如Name、name、NAME等是不同的变量名或函数名。
用mathematica解常微分方程
用mathematica解常微分方程用Mathematica解常微分方程常微分方程(Ordinary Differential Equation,ODE)是数学中的一个重要分支,它描述了未知函数的导数与自变量之间的关系。
在物理学、工程学、生物学等领域中,常微分方程是描述自然现象和过程的重要工具。
为了解决常微分方程,我们可以利用数值方法或符号计算工具。
其中,Mathematica是一种非常强大的符号计算软件,可以帮助我们解决各种数学问题,包括求解常微分方程。
Mathematica提供了多种函数和方法来求解常微分方程,下面将介绍其中的一些常用函数和使用方法。
1. DSolve函数DSolve函数是Mathematica中用于求解常微分方程的主要函数之一。
它可以解析地求解一阶和高阶常微分方程。
例如,我们可以使用DSolve函数求解一阶线性常微分方程dy/dx + p(x)y = q(x),其中p(x)和q(x)是已知函数。
下面是一个示例:```mathematicaDSolve[y'[x] + x*y[x] == x^2, y[x], x]```这个命令将求解方程y'[x] + x*y[x] = x^2,并给出其通解。
2. NDSolve函数NDSolve函数是Mathematica中用于数值求解常微分方程的函数。
对于不能通过解析方法求解的常微分方程,我们可以使用NDSolve 函数进行数值求解。
例如,我们可以使用NDSolve函数求解二阶常微分方程y''[x] + p(x)*y'[x] + q(x)*y[x] = r(x),其中p(x)、q(x)和r(x)是已知函数。
下面是一个示例:```mathematicaNDSolve[{y''[x] + x*y'[x] + y[x] == Sin[x], y[0] == 0, y'[0] == 1}, y[x], {x, 0, 10}]```这个命令将求解方程y''[x] + x*y'[x] + y[x] = Sin[x],并给出其在x=0到x=10之间的数值解。
使用mathematica 离散传函
使用mathematica 离散传函
使用mathematica离散传函需要掌握离散信号处理的基本知识,例如离散时间信号的表示方法、离散时间系统的分类和性质、离散时间系统的输入输出关系等。
同时,还需要了解mathematica软件的使用方法,包括如何定义离散时间信号、如何定义离散时间系统、如何进行信号和系统的运算等。
具体地说,使用mathematica离散传函的步骤包括以下几个方面:
1. 定义离散时间信号:使用mathematica中的DiscretePlot函数可以绘制给定的离散时间信号。
同时,也可以使用Table函数定义一个离散时间信号的序列,并使用ListPlot函数绘制信号的图像。
2. 定义离散时间系统:使用mathematica中的TransferFunctionModel函数可以定义一个离散时间系统的传递函数,同时也可以使用StateSpaceModel函数定义一个离散时间系统的状
态空间模型。
3. 进行信号和系统的运算:使用mathematica中的Convolve函数可以进行离散时间信号的卷积运算,使用OutputResponse函数可
以计算离散时间系统的输出响应。
此外,还可以使用InpuResponse
函数计算离散时间系统的输入响应,或使用NDSolve函数求解离散时间系统的状态变量。
4. 绘制结果图像:使用mathematica中的Plot函数可以绘制离散时间信号、离散时间系统的单位脉冲响应、单位阶跃响应等结果图像,以便于分析和验证结果。
总之,使用mathematica离散传函需要掌握离散信号处理和mathematica软件的基本知识,以便于进行信号和系统的建模、分析和仿真。
Mathematica函数及使用方法
Mathematica函数及使用方法(来源:北峰数模)--------------------------------------------------------------------- 注:为了对Mathematica有一定了解的同学系统掌握Mathematica的强大功能,我们把它的一些资料性的东西整理了一下,希望能对大家有所帮助。
---------------------------------------------------------------------一、运算符及特殊符号Line1; 执行Line,不显示结果Line1,line2 顺次执行Line1,2,并显示结果name 关于系统变量name的信息name 关于系统变量name的全部信息!command 执行Dos命令n! N的阶乘!!filename 显示文件内容< Expr>> filename 打开文件写Expr>>>filename 打开文件从文件末写() 结合率[] 函数{} 一个表<*Math Fun*> 在c语言中使用math的函数(*Note*) 程序的注释#n 第n个参数## 所有参数rule& 把rule作用于后面的式子% 前一次的输出%% 倒数第二次的输出%n 第n个输出var::note 变量var的注释"Astring " 字符串Context ` 上下文a+b 加a-b 减a*b或a b 乘a/b 除a^b 乘方base^^num 以base为进位的数lhs&&rhs 且lhs||rhs 或!lha 非++,-- 自加1,自减1+=,-=,*=,/= 同C语言>,<,>=,<=,==,!= 逻辑判断(同c)lhs=rhs 立即赋值lhs:=rhs 建立动态赋值lhs:>rhs 建立替换规则lhs->rhs 建立替换规则exprule 将规则rule应用于exprexpr..的无限精度数值E ...的无限精度数值Catalan ..卡塔兰常数EulerGamma ....高斯常数GoldenRatio ...黄金分割数Degree Pi/180角度弧度换算I 复数单位Infinity 无穷大-Infinity 负无穷大ComplexInfinity 复无穷大Indeterminate 不定式—————————————————————————————————————三、代数计算Expand[expr] 展开表达式Factor[expr] 展开表达式Simplify[expr] 化简表达式FullSimplify[expr] 将特殊函数等也进行化简PowerExpand[expr] 展开所有的幂次形式ComplexExpand[expr,{x1,x2...}] 按复数实部虚部展开FunctionExpand[expr] 化简expr中的特殊函数Collect[expr, x] 合并同次项Collect[expr, {x1,x2,...}] 合并x1,x2,...的同次项Together[expr] 通分Apart[expr] 部分分式展开Apart[expr, var] 对var的部分分式展开Cancel[expr] 约分ExpandAll[expr] 展开表达式ExpandAll[expr, patt] 展开表达式FactorTerms[poly] 提出共有的数字因子FactorTerms[poly, x] 提出与x无关的数字因子FactorTerms[poly, {x1,x2...}] 提出与xi无关的数字因子Coefficient[expr, form] 多项式expr中form的系数Coefficient[expr, form, n] 多项式expr中form^n的系数Exponent[expr, form] 表达式expr中form的最高指数Numerator[expr] 表达式expr的分子Denominator[expr] 表达式expr的分母ExpandNumerator[expr] 展开expr的分子部分ExpandDenominator[expr] 展开expr的分母部分TrigExpand[expr] 展开表达式中的三角函数TrigFactor[expr] 给出表达式中的三角函数因子TrigFactorList[expr] 给出表达式中的三角函数因子的表TrigReduce[expr] 对表达式中的三角函数化简TrigToExp[expr] 三角到指数的转化ExpToTrig[expr] 指数到三角的转化RootReduce[expr]ToRadicals[expr]—————————————————————————————————————四、解方程Solve[eqns, vars] 从方程组eqns中解出varsSolve[eqns, vars, elims] 从方程组eqns中削去变量elims,解出varsDSolve[eqn, y, x] 解微分方程,其中y是x的函数DSolve[{eqn1,eqn2,...},{y1,y2...},x]解微分方程组,其中yi是x的函数DSolve[eqn, y, {x1,x2...}] 解偏微分方程Eliminate[eqns, vars] 把方程组eqns中变量vars约去SolveAlways[eqns, vars] 给出等式成立的所有参数满足的条件Reduce[eqns, vars] 化简并给出所有可能解的条件LogicalExpand[expr] 用&&和||将逻辑表达式展开InverseFunction[f] 求函数f的逆函数Root[f, k] 求多项式函数的第k个根Roots[lhs==rhs, var] 得到多项式方程的所有根—————————————————————————————————————五、微积分函数D[f, x] 求f[x]的微分D[f, {x, n}] 求f[x]的n阶微分D[f,x1,x2..] 求f[x]对x1,x2...偏微分Dt[f, x] 求f[x]的全微分df/dxDt[f] 求f[x]的全微分dfDt[f, {x, n}] n阶全微分df^n/dx^nDt[f,x1,x2..] 对x1,x2..的偏微分Integrate[f, x] f[x]对x在的不定积分Integrate[f, {x, xmin, xmax}] f[x]对x在区间(xmin,xmax)的定积分Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重积分Limit[expr, x->x0] x趋近于x0时expr的极限Residue[expr, {x,x0}] expr在x0处的留数Series[f, {x, x0, n}] 给出f[x]在x0处的幂级数展开Series[f, {x, x0,nx}, {y, y0, ny}]先对y幂级数展开,再对xNormal[expr] 化简并给出最常见的表达式SeriesCoefficient[series, n] 给出级数中第n次项的系数SeriesCoefficient[series, {n1,n2...}]'或Derivative[n1,n2...][f] 一阶导数InverseSeries[s, x] 给出逆函数的级数ComposeSeries[serie1,serie2...] 给出两个基数的组合SeriesData[x,x0,{a0,a1,..},nmin,nmax,den]表示一个在x0处x的幂级数,其中ai为系数O[x]^n n阶小量x^nO[x, x0]^n n阶小量(x-x0)^n—————————————————————————————————————八、数值函数N[expr] 表达式的机器精度近似值N[expr, n] 表达式的n位近似值,n为任意正整数NSolve[lhs==rhs, var] 求方程数值解NSolve[eqn, var, n] 求方程数值解,结果精度到n位NDSolve[eqns, y, {x, xmin, xmax}]微分方程数值解NDSolve[eqns, {y1,y2,...}, {x, xmin, xmax}]微分方程组数值解FindRoot[lhs==rhs, {x,x0}] 以x0为初值,寻找方程数值解FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]NSum[f, {i,imin,imax,di}] 数值求和,di为步长NSum[f, {i,imin,imax,di}, {j,..},..] 多维函数求和NProduct[f, {i, imin, imax, di}]函数求积NIntegrate[f, {x, xmin, xmax}] 函数数值积分优化函数:FindMinimum[f, {x,x0}] 以x0为初值,寻找函数最小值FindMinimum[f, {x, xstart, xmin, xmax}]ConstrainedMin[f,{inequ},{x,y,..}]inequ为线性不等式组,f为x,y..之线性函数,得到最小值及此时的x,y..取值ConstrainedMax[f, {inequ}, {x, y,..}]同上LinearProgramming[c,m,b] 解线性组合在>=b&&x>=0约束下的最小值,x,b,c为向量,m为矩阵LatticeReduce[{v1,v2...}] 向量组vi的极小无关组数据处理:Fit[data,funs,vars]用指定函数组对数据进行最小二乘拟和data可以为{{x1,y1,..f1},{x2,y2,..f2}..}多维的情况emp: Fit[{,12,,}, {1, x, x^2,Sin[x]}, x]Interpolation[data]对数据进行差值,data同上,另外还可以为{{x1,{f1,df11,df12}},{x2,{f2,.}..}指定各阶导数InterpolationOrder默认为3次,可修改ListInterpolation[array]对离散数据插值,array可为n维ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}] FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..]以对应expr[xi,yi]的为数据进行插值Fourier[list] 对复数数据进行付氏变换InverseFourier[list] 对复数数据进行付氏逆变换Min[{x1,x2...},{y1,y2,...}]得到每个表中的最小值Max[{x1,x2...},{y1,y2,...}]得到每个表中的最大值Select[list, crit] 将表中使得crit为True的元素选择出来Count[list, pattern] 将表中匹配模式pattern的元素的个数Sort[list] 将表中元素按升序排列Sort[list,p] 将表中元素按p[e1,e2]为True的顺序比较list的任两个元素e1,e2,实际上Sort[list]中默认p=Greater集合论:Union[list1,list2..] 表listi的并集并排序Intersection[list1,list2..] 表listi的交集并排序Complement[listall,list1,list2...]从全集listall中对listi的差集—————————————————————————————————————九、虚数函数Re[expr] 复数表达式的实部Im[expr] 复数表达式的虚部Abs[expr] 复数表达式的模Arg[expr] 复数表达式的辐角Conjugate[expr] 复数表达式的共轭—————————————————————————————————————十、数的头及模式及其他操作Integer _Integer 整数Real _Real 实数Complex _Complex 复数Rational_Rational 有理数(*注:模式用在函数参数传递中,如MyFun[Para1_Integer,Para2_Real]规定传入参数的类型,另外也可用来判断If[Head[a]==Real,...]*) IntegerDigits[n,b,len] 数字n以b近制的前len个码元RealDigits[x,b,len] 类上FromDigits[list] IntegerDigits的反函数Rationalize[x,dx] 把实数x有理化成有理数,误差小于dxChop[expr, delta] 将expr中小于delta的部分去掉,dx默认为10^-10 Accuracy[x] 给出x小数部分位数,对于Pi,E等为无限大Precision[x] 给出x有效数字位数,对于Pi,E等为无限大SetAccuracy[expr, n] 设置expr显示时的小数部分位数SetPrecision[expr, n] 设置expr显示时的有效数字位数—————————————————————————————————————十一、区间函数Interval[{min, max}] 区间[min, max](* Solve[3 x+2==Interval[{-2,5}],x]*) IntervalMemberQ[interval, x] x在区间内吗IntervalMemberQ[interval1,interval2] 区间2在区间1内吗IntervalUnion[intv1,intv2...] 区间的并IntervalIntersection[intv1,intv2...] 区间的交—————————————————————————————————————十二、矩阵操作或Dot[a, b, c] 矩阵、向量、张量的点积Inverse[m] 矩阵的逆Transpose[list] 矩阵的转置Transpose[list,{n1,n2..}]将矩阵list 第k行与第nk列交换Det[m] 矩阵的行列式Eigenvalues[m] 特征值Eigenvectors[m] 特征向量Eigensystem[m] 特征系统,返回{eigvalues,eigvectors}LinearSolve[m, b] 解线性方程组==bNullSpace[m] 矩阵m的零空间,即[m]==零向量RowReduce[m] m化简为阶梯矩阵Minors[m, k] m的所有k*k阶子矩阵的行列式的值(伴随阵,好像是) MatrixPower[mat, n] 阵mat自乘n次Outer[f,list1,list2..] listi中各个元之间相互组合,并作为f的参数的到的矩阵Outer[Times,list1,list2]给出矩阵的外积SingularValues[m] m的奇异值,结果为{u,w,v},m=Conjugate[Transpose[u]].DiagonalMatrix[w].vPseudoInverse[m] m的广义逆QRDecomposition[m] QR分解SchurDecomposition[m] Schur分解LUDecomposition[m] LU分解—————————————————————————————————————十三、表函数(*“表”,我认为是Mathematica中最灵活的一种数据类型*)(*实际上表就是表达式,表达式也就是表,所以下面list==expr *)(*一个表中元素的位置可以用于一个表来表示*)表的生成{e1,e2,...} 一个表,元素可以为任意表达式,无穷嵌套Table[expr,{imax}] 生成一个表,共imax个元素Table[expr,{i, imax}] 生成一个表,共imax个元素expr[i] Table[expr,{i,imin,imax},{j,jmin,jmax},..] 多维表Range[imax] 简单数表{1,2,..,imax}Range[imin, imax, di] 以di为步长的数表Array[f, n] 一维表,元素为f[i] (i从1到n)Array[f,{n1,n2..}] 多维表,元素为f[i,j..] (各自从1到ni) IdentityMatrix[n] n阶单位阵DiagonalMatrix[list] 对角阵元素操作Part[expr, i]或expr[[i]]第i个元expr[[-i]] 倒数第i个元expr[[i,j,..]] 多维表的元expr[[{i1,i2,..}] 返回由第i(n)的元素组成的子表First[expr] 第一个元Last[expr] 最后一个元Head[expr] 函数头,等于expr[[0]]Extract[expr, list] 取出由表list制定位置上expr的元素值Take[list, n] 取出表list前n个元组成的表Take[list,{m,n}] 取出表list从m到n的元素组成的表Drop[list, n] 去掉表list前n个元剩下的表,其他参数同上Rest[expr] 去掉表list第一个元剩下的表Select[list, crit] 把crit作用到每一个list的元上,为True的所有元组成的表表的属性Length[expr] expr第一曾元素的个数Dimensions[expr] 表的维数返回{n1,n2..},expr为一个n1*n2...的阵TensorRank[expr] 秩Depth[expr] expr最大深度Level[expr,n] 给出expr中第n层子表达式的列表Count[list, pattern] 满足模式的list中元的个数MemberQ[list, form] list中是否有匹配form的元FreeQ[expr, form] MemberQ的反函数Position[expr, pattern] 表中匹配模式pattern的元素的位置列表Cases[{e1,e2...},pattern]匹配模式pattern的所有元素ei的表表的操作Append[expr, elem] 返回在表expr的最后追加elem元后的表Prepend[expr, elem] 返回在表expr的最前添加elem元后的表Insert[list, elem, n] 在第n元前插入elemInsert[expr,elem,{i,j,..}]在元素expr[[{i,j,..}]]前插入elemDelete[expr, {i, j,..}] 删除元素expr[[{i,j,..}]]后剩下的表DeleteCases[expr,pattern]删除匹配pattern的所有元后剩下的表ReplacePart[expr,new,n] 将expr的第n元替换为newSort[list] 返回list按顺序排列的表Reverse[expr] 把表expr倒过来RotateLeft[expr, n] 把表expr循环左移n次RotateRight[expr, n] 把表expr循环右移n次Partition[list, n] 把list按每n各元为一个子表分割后再组成的大表Flatten[list] 抹平所有子表后得到的一维大表Flatten[list,n] 抹平到第n层Split[list] 把相同的元组成一个子表,再合成的大表FlattenAt[list, n] 把list[[n]]处的子表抹平Permutations[list] 由list的元素组成的所有全排列的列表Order[expr1,expr2] 如果expr1在expr2之前返回1,如果expr1在expr2之后返回-1,如果expr1与expr2全等返回0Signature[list] 把list通过两两交换得到标准顺序所需的交换次数(排列数)以上函数均为仅返回所需表而不改变原表AppendTo[list,elem] 相当于list=Append[list,elem];PrependTo[list,elem] 相当于list=Prepend[list,elem];--—————————————————————————————————————十四、绘图函数二维作图Plot[f,{x,xmin,xmax}] 一维函数f[x]在区间[xmin,xmax]上的函数曲线Plot[{f1,f2..},{x,xmin,xmax}] 在一张图上画几条曲线ListPlot[{y1,y2,..}] 绘出由离散点对(n,yn)组成的图ListPlot[{{x1,y1},{x2,y2},..}] 绘出由离散点对(xn,yn)组成的图ParametricPlot[{fx,fy},{t,tmin,tmax}] 由参数方程在参数变化范围内的曲线ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}]在一张图上画多条参数曲线选项:PlotRange->{0,1} 作图显示的值域范围AspectRatio->1/GoldenRatio生成图形的纵横比PlotLabel ->label 标题文字Axes ->{False,True} 分别制定是否画x,y轴AxesLabel->{xlabel,ylabel}x,y轴上的说明文字Ticks->None,Automatic,fun用什么方式画轴的刻度AxesOrigin ->{x,y} 坐标轴原点位置AxesStyle->{{xstyle}, {ystyle}}设置轴线的线性颜色等属性Frame ->True,False 是否画边框FrameLabel ->{xmlabel,ymlabel,xplabel,yplabel}边框四边上的文字FrameTicks同Ticks 边框上是否画刻度GridLines 同Ticks 图上是否画栅格线FrameStyle ->{{xmstyle},{ymstyle}设置边框线的线性颜色等属性ListPlot[data,PlotJoined->True] 把离散点按顺序连线PlotSytle->{{style1},{style2},..}曲线的线性颜色等属性PlotPoints->15 曲线取样点,越大越细致三维作图Plot3D[f,{x,xmin,xmax}, {y,ymin,ymax}]二维函数f[x,y]的空间曲面Plot3D[{f,s}, {x,xmin,xmax}, {y,ymin,ymax}]同上,曲面的染色由s[x,y]值决定ListPlot3D[array] 二维数据阵array的立体高度图ListPlot3D[array,shades]同上,曲面的染色由shades[数据]值决定ParametricPlot3D[{fx,fy,fz},{t,tmin,tmax}]二元数方程在参数变化范围内的曲线ParametricPlot3D[{{fx,fy,fz},{gx,gy,gz},...},{t,tmin,tmax}]多条空间参数曲线选项:ViewPoint ->{x,y,z} 三维视点,默认为{,,2}Boxed -> True,False 是否画三维长方体边框BoxRatios->{sx,sy,sz} 三轴比例BoxStyle 三维长方体边框线性颜色等属性Lighting ->True 是否染色LightSources->{s1,s2..} si为某一个光源si={{dx,dy,dz},color} color为灯色,向dx,dy,dz方向照射AmbientLight->颜色函数慢散射光的光源Mesh->True,False 是否画曲面上与x,y轴平行的截面的截线MeshStyle 截线线性颜色等属性MeshRange->{{xmin,xmax}, {ymin,ymax}}网格范围ClipFill->Automatic,None,color,{bottom,top}指定图形顶部、底部超界后所画的颜色Shading ->False,True 是否染色HiddenSurface->True,False 略去被遮住不显示部分的信息等高线ContourPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的等高线图ListContourPlot[array] 根据二维数组array数值画等高线选项:Contours->n 画n条等高线Contours->{z1,z2,..} 在zi处画等高线ContourShading -> False 是否用深浅染色ContourLines -> True 是否画等高线ContourStyle -> {{style1},{style2},..}等高线线性颜色等属性FrameTicks 同上密度图DensityPlot[f,{x,xmin,xmax},{y,ymin,ymax}]二维函数f[x,y]在指定区间上的密度图ListDensityPlot[array] 同上图形显示Show[graphics,options] 显示一组图形对象,options为选项设置Show[g1,g2...] 在一个图上叠加显示一组图形对象GraphicsArray[{g1,g2,...}]在一个图上分块显示一组图形对象SelectionAnimate[notebook,t]把选中的notebook中的图画循环放映选项:(此处选项适用于全部图形函数)Background->颜色函数指定绘图的背景颜色RotateLabel -> True 竖着写文字TextStyle 此后输出文字的字体,颜色大小等ColorFunction->Hue等把其作用于某点的函数值上决定某点的颜色RenderAll->False 是否对遮挡部分也染色MaxBend 曲线、曲面最大弯曲度绘图函数(续)图元函数Graphics[prim, options]prim为下面各种函数组成的表,表示一个二维图形对象Graphics3D[prim, options]prim为下面各种函数组成的表,表示一个三维图形对象SurfaceGraphics[array, shades]表示一个由array和shade决定的曲面对象ContourGraphics[array]表示一个由array决定的等高线图对象DensityGraphics[array]表示一个由array决定的密度图对象以上定义图形对象,可以进行对变量赋值,合并显示等操作,也可以存盘Point[p] p={x,y}或{x,y,z},在指定位置画点Line[{p1,p2,..}]经由pi点连线Rectangle[{xmin, ymin}, {xmax, ymax}] 画矩形Cuboid[{xmin,ymin,zmin},{xmax,ymax,zmax}]由对角线指定的长方体Polygon[{p1,p2,..}] 封闭多边形Circle[{x,y},r] 画圆Circle[{x,y},{rx,ry}] 画椭圆,rx,ry为半长短轴Circle[{x,y},r,{a1,a2}] 从角度a1~a2的圆弧Disk[{x, y}, r] 填充的园、椭圆、圆弧等参数同上Raster[array,ColorFunction->f] 颜色栅格Text[expr,coords] 在坐标coords上输出表达式PostScript["string"] 直接用PostScript图元语言写Scaled[{x,y,..}] 返回点的坐标,且均大于0小于1颜色函数(指定其后绘图的颜色)GrayLevel[level] 灰度level为0~1间的实数RGBColor[red, green, blue] RGB颜色,均为0~1间的实数Hue[h, s, b] 亮度,饱和度等,均为0~1间的实数CMYKColor[cyan, magenta, yellow, black] CMYK颜色其他函数(指定其后绘图的方式)Thickness[r] 设置线宽为rPointSize[d] 设置绘点的大小Dashing[{r1,r2,..}] 虚线一个单元的间隔长度ImageSize->{x, y} 显示图形大小(像素为单位)ImageResolution->r 图形解析度r个dpiImageMargins->{{left,right},{bottom,top}}四边的空白ImageRotated->False 是否旋转90度显示—————————————————————————————————————十五、流程控制分支If[condition, t, f] 如果condition为True,执行t段,否则f段If[condition, t, f, u] 同上,即非True又非False,则执行u段Which[test1,block1,test2,block2..] 执行第一为True的testi对应的blocki Switch[expr,form1,block1,form2,block2..]执行第一个expr所匹配的formi所对应的blocki段循环Do[expr,{imax}] 重复执行expr imax次Do[expr,{i,imin,imax}, {j,jmin,jmax},...]多重循环While[test, body] 循环执行body直到test为FalseFor[start,test,incr,body]类似于C语言中的for,注意","与";"的用法相反examp: For[i=1;t =x,i^2<10,i++,t =t+i;Print[t]]异常控制Throw[value] 停止计算,把value返回给最近一个Catch处理Throw[value, tag] 同上,Catch[expr] 计算expr,遇到Throw返回的值则停止Catch[expr, form] 当Throw[value, tag]中Tag匹配form时停止其他控制Return[expr] 从函数返回,返回值为exprReturn[ ] 返回值NullBreak[ ] 结束最近的一重循环Continue[ ] 停止本次循环,进行下一次循环Goto[tag] 无条件转向Label[Tag]处Label[tag] 设置一个断点Check[expr,failexpr] 计算expr,如果有出错信息产生,则返回failexpr的值Check[expr,failexpr,s1::t1,s2::t2,...]当特定信息产生时则返回failexpr CheckAbort[expr,failexpr]当产生abort信息时放回failexprInterrupt[ ] 中断运行Abort[ ] 中断运行TimeConstrained[expr,t] 计算expr,当耗时超过t秒时终止MemoryConstrained[expr,b]计算expr,当耗用内存超过b字节时终止运算交互式控制Print[expr1,expr2,...] 顺次输出expri的值examp: Print[ "X=" , X.},body]多自变量纯函数#,#n 纯函数的第一、第n个自变量## 纯函数的所有自变量的序列examp: ^& [2,3] 返回第一个参数的第二个参数次方映射Map[f,expr]或f/@expr 将f分别作用到expr第一层的每一个元上得到的列表Map[f,expr,level] 将f分别作用到expr第level层的每一个元上Apply[f,expr]或f@@expr 将expr的“头”换为fApply[f,expr,level] 将expr第level层的“头”换为fMapAll[f,expr]或f.}] 把f作用到expr[[{i,j,...}]]元上MapIndexed[f,expr] 类似MapAll,但都附加其映射元素的位置列表Scan[f, expr] 按顺序分别将f作用于expr的每一个元Scan[f,expr,levelspec] 同上,仅作用第level层的元素复合映射Nest[f,expr,n] 返回n重复合函数f[f[...f[expr]...]]NestList[f,expr,n] 返回0重到n重复合函数的列表{expr,f[expr],f[f[expr]]..} FixedPoint[f, expr] 将f复合作用于expr直到结果不再改变,即找到其不定点FixedPoint[f, expr, n] 最多复合n次,如果不收敛则停止FixedPointList[f, expr] 返回各次复合的结果列表FoldList[f,x,{a,b,..}] 返回{x,f[x,a],f[f[x,a],b],..}Fold[f, x, list] 返回FoldList[f,x,{a,b,..}]的最后一个元ComposeList[{f1,f2,..},x]返回{x,f1[x],f2[f1[x]],..}的复合函数列表Distribute[f[x1,x2,..]] f对加法的分配率Distribute[expr, g] 对g的分配率Identity[expr] expr的全等变换Composition[f1,f2,..] 组成复合纯函数f1[f2[..fn[ ]..]Operate[p,f[x,y]] 返回p[f][x, y]Through[p[f1,f2][x]] 返回p[f1[x],f2[x]]Compile[{x1,x2,..},expr]编译一个函数,编译后运行速度可以大大加快Compile[{{x1,t1},{x2,t2}..},expr] 同上,可以制定函数参数类型—————————————————————————————————————十七、替换规则lhs->rhs 建立了一个规则,把lhs换为rhs,并求rhs的值lhs:>rhs 同上,只是不立即求rhs的值,知道使用该规则时才求值Replace[expr,rules] 把一组规则应用到expr上,只作用一次expr /. rules 同上expr .}]综合各个规则,产生一组优化的规则组><Mathematica的常见问题><===================================1).Mathematica 可以定义变量为实数么1. 在Simplify/FullSimplify可以使用\[Element],如Simplify[Re[a+b*I],a\[Element]Reals]2. 可以使用ComplexExpand[]来展开表达式,默认:符号均为实数:Unprotect[Abs];Abs[x_] := Sqrt[Re[x]^2 + Im[x]^2];ComplexExpand[Abs[a + b*I], a]3. 使用/:,对符号关联相应的转换规则x /: Im[x] = 0;x /: Re[x] = x;y /: Im[y] = 0;y /: Re[y] = y;Re[x+y*I]===================================2).Mathematica中如何中断运算Alt+. 直接终止当前执行的运算Alt+, 询问是否终止或者继续如果不能终止,用菜单Kernel\Quit Kernal\Local来退出当前运算===================================3).请高手推荐Mathematica参考书我迄今为止看到的最好的一本就是Mathematica自己带的帮助里面的The Mathematica Book,内容全面,循序渐近,非常容易学习使用。
mathematica解微分方程
mathematica解微分方程微分方程也叫微分方程,是对函数进行变化时期望保持规则性的最基本的数学工具。
它可以定义函数及其变化,并解决涉及变化过程的未知函数。
由于它可以描述复杂的现象,因此它在几乎所有科学领域中都重要性为重要。
在数学、物理、天文学、化学、生物学和工程领域中,微分方程经常用来描述系统的变化。
Mathematica是一个精密的、可扩展的数学软件,它可以解决许多复杂的数学问题,其中包括微分方程。
Mathematica可以在各种复杂的领域中开展研究,包括概率、线性代数、优化等。
Mathematica有一个专门的微分方程功能,它可以轻松解决和分析微分方程。
当解决微分方程时,Mathematica提供了一系列工具,其中包括微分、积分、估计、全局性质和特殊函数。
这些工具可以帮助研究人员轻松解决复杂的微分方程,比如拉普拉斯方程、常微分方程、模拟微分方程等。
Mathematica的另一个优势是,它具有可视化功能,可以通过绘图和图像,直观地展示出微分方程的解。
Mathematica可以创建多种函数图像,包括标量函数、曲面等,从而帮助研究人员更好地理解数学结果。
此外,Mathematica还提供了直观的分析工具,它可以帮助研究人员针对任何特定方程构建分析模型。
这些分析模型中可以定义不同的变量,从而帮助研究人员看清微分方程的变化状态。
总的来说,Mathematica可以帮助研究人员解决微分方程相关的问题,包括类型检测、函数估计、可视化和构建分析模型等。
它的易用性和可视化功能可以大大简化研究人员处理复杂的微分方程和系统的工作。
因此,Mathematica是微分方程分析,建模和解决结构的强大工具。
(完整版)Mathematica求解方程(组)、级数
(完整版)Mathematica求解方程(组)、级数方程(组)与级数的Mathematica 求解[学习目标]1. 能用Mathematica 求各种方程(组)的数值解和近似解;2. 能对常见函数进行幂级数的展开。
一、求解简单方程(组)数学里的方程是带有变量的等式。
一般地说,一个或一组方程总是对于方程中出现的变量的可能取值范围增加了一些限制。
所谓求解方程就是设法把方程对于变量取值的限制弄清楚,最好的结果是用不含变量的表达式把变量的值表示出来。
在这个系统里,方程也用含有变量的等式表示,要注意的是在这里等号用连续的两个等号(==)表示。
方程的两端可以是任何数学表达式。
用户可以自己操作Mathematica 系统去求解方程,例如使用移项一类的等价变换规则对方程加以变形、对方程的两端进行整理、把函数作用于方程的两端等等。
系统也提供了一些用于求解方程的函数。
1、求方程的代数解最基本的方程求解函数是Solve ,它可以用于求解方程(主要是多项式方程)或方程组。
Solve 有两个参数,第一个参数是一个方程,或者是由若干个方程组的表(表示一个方程组);第二个参数是要求解的变量或变量表。
例如,下面的式子对于变量X 求解方程016x x x 234=+--:In[1]:=Solve[x^4-x^3-6x^2+1==0,x]输入了这个表达式,系统立刻就能计算出方程的四个根,求出的解都是精确解(代数根)。
对于一般的多项式,这样得出的解常常是用根式描述的复数。
方程的解被表示成一个表,表中是几个子表,每一个子表的形式都是{x->...},箭头后面是方程的一个解。
Solve 也可以求解多变量的方程或者方程组:In[2]:=Solve[{x-2y==0,x^2-y==1},{x,y}]这个表达式求解方程组: x y x y -=-=2012.有时求解方程会得到非常复杂的解。
例如将上面的第一个方程稍加变形,所得到的解的表达式就会变得很长:In[3]:=Solve[x^4-x^3-6x^2=2==0,x]这个表达式求出的解的表达式非常长,以至一个计算机屏幕显示不下。
用Mathematica解计算方法中的问题
9 1*第 9 章 在 Mathematica 中做题学习任何课程,做题都是检验和巩固学习效果的重要步骤之一。
怎样做计算方法的题 目?计算题型是计算方法的主要题型。
传统的做题方法是用手算一些简单的题目。
例如, 用简单迭代法解一个三元方程组。
掌握了解题的方法和步骤后,做算术运算就是解题的主 要工作,难免与繁琐和枯燥同行。
如果用 C 语言等高级语言编程解题,即可减少繁琐,又 可提高计算机技术应用能力。
但用高级语言编程也有相应的工作量。
建议用某符号计算系统做计算方法的题目,它是一种雅俗共赏的做数学题的环境。
在 符号计算系统中做题,既可免除繁琐的算术运算,又可在宽松环境中编程解题。
使学生将 精力主要放在理解方法和演示方法的过程中。
9.1 符号计算系统 Mathematica 基本操作符号计算系统是一种集成化的数学软件系统,内容包括:数值计算、符号计算、图形 生成和程序设计四个方面。
符号计算系统含有种类丰富的功能强大的内部函数,用户也可 以自由地定义自已的函数并扩充到系统函数中。
目前,较流行的符号计算系统有(按字母顺序排列): Macsyma 、Maple 、Mathematica 、 Reduce 和 Derive 。
Mathematica 是优秀的符号计算系统之一。
本章简要给出 Mathematica 系统的交互式的 操作步骤,列出有关数值计算方法的函数,供使用参考。
要进一步掌握和了解 Mathematica 功能,请查阅 Mathematica 系统的在线帮助和参考有关的书籍。
符号计算系统有两种运行方式,一种是交互式,用户键入一个函数,系统执行相应的计算,例如,计算定积分 x x dx 2 1 111 ( sin ) - - ò的函数命令是NIntegrate [x^2(11 - Sin[x]),{x,-1,1}]另一种是写一段程序,系统连续执行一个计算序列,程序使用的是符号计算系统自己 的语言,对于已掌握一门高级语言的用户来说,语句的形式大同小异,也容易掌握。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于Mathematica函数StateSpaceModel的系统分析方法与程序设计李玲曦(陕西理工学院物理与电信工程学院电子信息科学与技术专业1103班,陕西汉中723000)指导老师:龙姝明[摘要]研究调用Mathematica内部函数StateSpaceModel求解高阶连续时不变系统响应思路与方法步骤。
手工和调用Mathematica内部函数NDSolve求解高阶连续LTI系统初值问题都十分困难。
我们试图调用Mathematica 内部函数StateSpaceModel及其相关函数,采用建模方法来求连续LTI系统初值问题的解析解或者数值解。
研究发现,无论系统阶数高低,用这一方法总可以求出数值解,但是仅当系统阶数n较低时(n<4),才能用这一方法求出系统的解析解。
我们编写了采用StateSpaceModel函数思想的高阶连续LTI系统数值解求解实用程序,可以快速求得一般高阶连续LTI系统初值问题的数值解,如果系统阶数较低,也可以求得系统的解析解。
[关键词] Mathematica;StateSpaceModel;程序设计Systems analysis and programming Mathematica functionsbased StateSpaceModelLi Lingxi(Grade11,Class3,Major Electronic Information Science and Technology School of Physics and Telecommunication Engineering, Shannxi University of Technology,Hanzhong,723000,Shannxi)Tutor :Long ShumingAbstract Research Mathematica call an internal function StateSpaceModel Solving the Higher Order Thinking continuous time-invariant system response and method steps. Manual and call the internal function DSolve Mathematica Solving Initial Value Problems of Higher Order continuous LTI systems are very difficult. We triedto call the internal function StateSpaceModel Mathematica and related functions, using modeling methods to continuous LTI systems analytical solutions or numerical solution of initial value problem. The study found that regardless of the level of order of the system, the total can be obtained by this method numerical solution, but only when the system is low order n (n <4), to the system of analytical solution obtained by this method. We prepared a high value uses StateSpaceModel continuous LTI system function thought to Resolving utility, general numerical solution of initial value problem of higher-order continuous LTI system can be quickly obtained, if the lower order of the system, the system can also be obtained analytical solution.Keywords Mathematica, State Space Model, program design目录1 手工求解连续LTI系统响应的方法和存在的困难 (1)2 用Mathematica软件内部函数求连续LTI系统响应的方法 (4)3 Matlab的Simulink求解连续系统 (5)3.1适用范围 (5)3.2连续时间系统建模与仿真分析 (6)3.2.1结构图数学模型 (6)3.2.2微分方程数学模型 (8)3.3解的特点 (10)4 Mathematica的StateSpaceModel方法求解连续LTI 系统 (10)4.1 创建StateSpaceModel的几种方法 (10)4.2 方法步骤 (10)5 连续LTI系统初值问题的状态空间模型描述 (11)6 连续LTI系统StateSpaceModel解法的程序设计 (12)6.1 建立描述系统的微分方程及初值条件 (12)6.2 创建状态空间函数模型求零输入响应 (12)6.3 创建状态空间函数模型求零状态响应 (12)7 StateSpaceModel求解LTI系统的实际应用 (13)结语 (16)附录A (18)附录B (18)附录C (18)附录D (18)求解系统是科学研究和生产实践当中要解决的很现实的问题,很多的系统设计最后都简化为用一个微分方程来描述。
如果我们求出的系统的解不符合用户要求,则必须通过修改系统的结构和修改系统里面元件的参数,重新搭建系统直到设计出来的系统符合用户的需求,而且性价比最好。
在这个过程中,我们总是要不断地求解微分方程。
但是高阶系统求解,无论是数值解还是解析解手工解都很困难。
特别是解析解,高阶系统的解析解手工、编程序都解不出来,但是高阶系统的数值解总是可以求出。
用手工计算高阶系统的数值解不可能实现,因为采样点一般都是成千上万的数据。
求解系统,科学研究和工程应用当中比较多的要用到数值解。
数值解的求解必须编程来计算,因为系统的数据量很大,尽管解法简单,手工解还是太过费时费力。
因为我们更多的看中的是系统的数值解,所以数值解我们必须编程来做[1],比如可以用NDSolve ,Matlab 及Simulink 里面建模的方法。
如今,Mathematica 的高版本里面有传递函数、状态空间函数的一些方法,用他们来求解高阶系统的数值解非常容易和简洁[2]。
所以,我们选了这个课题来研究,探索使用StateSpaceModel 求解连续LTI 系统的响应的方法以及程序设计。
1 手工求解连续LTI 系统响应的方法和存在的困难手工求LTI 连续系统响应(解),有时域解法、变换域解法。
我们仅讨论连续系统,用手工求解系统响应,就是求微分方程初值问题的解。
求解可以在时域进行,也可以在S 域进行。
对于高阶系统,手工求解的难点在于,求一元高次代数方程的根和求多元一次代数方程组的解十分困难[3]。
所以手工只能解低阶系统。
下面我们讨论n 阶连续LTI 时域求解的方法步骤,并展示手工求解的困难所在[4]。
在科学研究和各类电子产品研发调试过程中,我们总要反复求解n 阶LTI 连续系统初值问题1-n ,1,0,)0(),(,)()()(0)(0)(,⋯==<==-==∑∑l y n m t f b t ya l l mk k k nk k k β (1-1)求解这一问题的步骤是:(1)求系统的零输入y zi (t ),它由方程1-n ,1,0,)0(),(,0)()(0)(,⋯==<==-=∑l y n m t ya l l nk k k β (1-2)决定。
要解这一问题,需要先求一元n 次代数方程 00=∑=nk kk a λ (1-3) 的n 个根,设其由n 个单根l 1, l 2,,…l n ,则得到t n tt zi n e e c e c t λλλc )(y 2121+⋯++= (1-4) 为了确定其中的n 个叠加常数,需要将(1-2)中的初值条件代入(1-4),得到下面的n 元一次代数方程组111221112222221112211021c ----=+⋯++⋯=+⋯++=+⋯++=+⋯++n n nn n n n n n n n c c c c c c c c c c c βλλλβλλλβλλλβ (1-5)如果n <3,(1-3)和(1-5)手工很容易求解,因而求y z i (t )非常容易。
如果n >2,手工求解(1-3)和(1-5)比较困难或者是很费时间。
那么,必须考虑在Mathematica ,Matlab 或Maple 环境中编程或调用相关的内部函数来求解才是明智之举。
(2)求问题(1-1)的单位冲激响应h (t ) 求h (t )分两步:求h (t )的第一步,先求下面方程决定的h 1(t )2,0,0)0(,1)0(,0)()(1)1(1n)(1-⋯====++-=∑n l h h t h a l n k k k (1-6)问题(1-6)求解过程与(1-2)过程完全相同,但定解条件不同。
分析给出)()()(21211t e e e t h t n t t n εαααλλλ⋯++= (1-7)上式中的()t ε是单位阶跃信号函数,即自变量大于等于0处,函数值等于1否则函数值为0。
(1-7)中的迭加系数满足n 元一次代数方程组10011221112222211221121=+⋯++=+⋯++⋯=+⋯++=+⋯++------n nn n n n n n n n n n n λαλαλαλαλαλαλαλαλαααα (1-8)求h (t )的第二步:解出h 1(t )后,由(1-1)方程右端的组合系数分别乘h 1(t )的各阶导函数叠加构造h (t ),即)()()(10t h b t h k mk k ∑== (1-9)(3)由h (t )和输入信号f (t )求系统的零状态响应 问题(1-1)的零状态响应为τττd t f h t f t h t y t y b t f t h t k mk k zs )()()(*)()(),()(*)()(y 111)(10-====⎰∑∞+∞-= (1-10)(4)求系统的完全响应)()()(t y t y t y zs zi += (1-11)例1 求2阶LTI 连续系统初值问题)(e *2t (t)cos(4t)f(t)1)(0y'5,)y(02f(t),(t)3f'5y(t)(t)2y'(t)y"t-__t εε+===+=++解:(1)y z i (t )由方程y ''(t )+2y '(t )+5y (t )=0, y (0_)=5, y ' (0_)=1给出tzi tzi it it e t t t y c c c c c e t c t c t y t c t c t e e i t e e e e e ii ---+====-=+=∴+=-++=+--=+==++))2sin(3)2cos(5()(3,512,5))2sin()2cos(()()2sin()2cos()2sin()()2cos()(e 21,21-05221121212121212221212于是有解得初值条件给出又又的解为特征方程 λλλλ(2)单位冲激响应h 1(t)由方程)())2sin(5.0)2cos(3())()2sin()()2cos(2(5.1)()2sin()('3)(2)()()2sin(5.0)(5.001-2,0)())2sin()2(cos )()()(1)0(',0)0(,0)(5)('2)("11121121211111111t e t t t e t t e t t e t t h t h t h t e t t h t e t t t h t y t h h h t h t h t h t t t t t t zi εεεεεαααααεαα------++-=-+=+======+====++于是有,解得初值条件给出又(因而有对应的特征方程相同,对应的特征方程与特别,(3)求零状态响应y zs (t))(*2*)()2sin(5.0)()4cos(*)()2sin(5.0)(*2*)()2cos(3)()4cos(*)()2cos(3))(*2)()4(cos(*))()2sin(5.0)()2cos(3()(*)()()())2sin(5.0)2cos(3()(),(*2)()4cos()(t e t t e t t t t e t t e t t e t t t t e t t e t t t t e t t e t t f t h t y t e t t t h t e t t t t f t t t tttt t t zs t t εεεεεεεεεεεεεεε-------------+=+-==-=+=上面的时域卷积,手工计算过于复杂,可采样Laplace 变换,各自的像乘积后取逆变换计算y zs (t),即)())4sin(8.0)4cos(4.0))2sin(05.0)2cos(9.15.05.1(()(1648.0164.04)1(205.04)1(19.1)1(15.0115.1)(4)1(23))1(216()()()(4)1(23)(),()2sin(5.0)()2cos(3)()1(216)(),(*2)()4cos()(zs 22222zs 222222t t t e t t t t Y s s s s s s s s t Y s s s s s s H s F s Y s s s H t e t t e t t h s s s s F t e t t t t f t zs t t t εεεεε++---=++++++-+++-+-+=++++++==+++=-=+++=+=----用查表法取逆变换得得用部分分式法简化上式(4)求系统的全响应)())4sin(8.0)4cos(4.0))2sin(05.0)2cos(9.15.05.1(()())2sin(3)2cos(5()(t t t e t t t t y e t t t y tzs tzi ε++---=+=--),4sin(8.0)4cos(4.0))2sin(95.2)2cos(1.35.05.1()()())4sin(8.0)4cos(4.0()())2sin(05.0)2cos(9.15.05.1())2sin(3)2cos(5()()()(≥++++-=++---++=+=---t t t e t t t t y t t t t e t t t e t t t y t y t y t t t zs zi 或者εε这个例子显示,即便是二阶LTI 连续系统初值问题求解析解,手工计算也是很难度的。