Maple提高教程B3- Maple中的偏微分方程求解
数学软件Maple使用教程
数学软件Maple使⽤教程数学实验数学软件Maple使⽤教程序⾔⼀.什么是数学实验?我们都熟悉物理实验和化学实验,就是利⽤仪器设备,通过实验来了解物理现象、化学物质等的特性。
同样,数学实验也是要通过实验来了解数学问题的特性并解决对应的数学问题。
过去,因为实验设备和实验⼿段的问题,⽆法解决数学上的实验问题,所以,⼀直没有听说过数学实验这个词。
随着计算机的飞速发展,计算速度越来越快,软件功能也越来越强,许多数学问题都可以由计算机代替完成,也为我们⽤实验解决数学问题提供了可能。
数学实验就是以计算机为仪器,以软件为载体,通过实验解决实际中的数学问题。
⼆.常⽤的数学软件⽬前较流⾏的数学软件主要有四种:1.MathACD其优点是许多数学符号键盘化,通过键盘可以直接输⼊数学符号,在教学⽅⾯使⽤起来⾮常⽅便。
缺点是⽬前仅能作数值运算,符号运算功能较弱,输出界⾯不好。
2.Matlab优点是⼤型矩阵运算功能⾮常强,构造个⼈适⽤函数⽅便很⽅便,因此,⾮常适合⼤型⼯程技术中使⽤。
缺点是输出界⾯稍差,符号运算功能也显得弱⼀些。
不过,在这个公司购买了Maple公司的内核以后,符号运算功能已经得到了⼤⼤的加强。
再⼀个缺点就是这个软件太⼤,按现在流⾏的版本5.2,⾃⾝有400多兆,占硬盘空间近1个G,⼀般稍早些的计算机都安装部下。
我们这次没⽤它主要就是这个原因。
3.Mathematica其优点是结构严谨,输出界⾯好,计算功能强,是专业科学技术⼈员所喜爱的数学软件。
缺点是软件本⾝较⼤,⽬前流⾏的3.0版本有200兆;另⼀个缺点就是命令太长,每⼀个命令都要输⼊英⽂全名,因此,需要英语⽔平较⾼。
4.Maple优点是输出界⾯很好,与我们平常书写⼏乎⼀致;还有⼀个最⼤的优点就是它的符号运算功能特别强,这对于既要作数值运算,⼜要作符号运算时就显得⾮常⽅便了。
除此之外,其软件只有30兆,安装也很⽅便(直接拷贝就可以⽤)。
所以,我们把它放到学校⽹上直接调⽤。
微分方程的maple求解
微分⽅程的maple求解1、常⽤函数1)求解常微分⽅程的命令dsolve.dsolve(常微分⽅程)dsolve(常微分⽅程,待解函数,选项)dsolve({常微分⽅程,初值},待解函数,选项)dsolve({常微分⽅程组,初值},{待解函数},选项)其中选项设置解得求解⽅法和解的表⽰⽅式。
求解⽅法有type=formal_series(形式幂级数解)、type=formal_solution(形式解)、type=numeric(数值解)、type=series(级数解)、method=fourier(通过Fourier变换求解)、method=laplace(通过Laplace变换求解)等。
解的表⽰⽅式有explicit(显式)、implicit(隐式)、parametric(参数式)。
当⽅程⽐较复杂时,要想得到显式解通常⼗分困难,结果也会相当复杂。
这时,⽅程的隐式解更为有⽤,⼀般也要简单得多。
dsolve为标准库函数。
2)求解⼀阶线性常微分⽅程的命令linearsol.在Maple中求解⼀阶线性⽅程既可以⽤dsolve函数求解,也可以⽤Detools函数包中的linearsol函数求解。
linearsol是专门求解线性微分⽅程的命令,使⽤格式为: linearsol(线性⽅程,待解函数)linearsol的返回值为集合形式的解。
3)偏微分⽅程求解命令pdsolve.pdsolve(偏微分⽅程,待解变量,选项)pdsolve(偏微分⽅程,初值或边界条件,选项)pdsolve为标准库函数,可直接使⽤。
如果求解成功,将得到⼏种可能结果:⽅程的通解;拟通解(包含有任意函数,但不⾜以构造通解);⼀些常微分⽅程的集合;2、⽅法1)⼀阶常微分⽅程的解法a 分离变量法 I 直接分离变量法。
如()()dyf xg y dx=,⽅程右端是两个分别只含x 或y 的函数因式乘积,其通解为()()dyf x dx Cg y =+?。
用Maple学习微积分2
用Maple学习微积分理解导数函数f(x)在x处的导数☐“工具”→“Math Apps”→“Calculus”→“Derivative Definition”计算导数命令行☐单变元函数一阶导diff(f(x), x)☐单变元函数n阶导diff(f(x), x$n)☐右键→“Differentiate”→“With Respect To”→选择变量不支持高阶导计算导数命令行☐多变元函数f对x1,x2,x3依次求偏导diff(f, x1,x2,x3) ☐右键→“Differentiate”→“With Respect To”→选择变量☐连续对某个变元求偏导diff(f, x1,x2$2,x3)导数做图利用Student[Calculus1]软件包的DerivativePlot☐DerivativePlot(f,x=a..b)在区间[a,b]做出f及其导数的图像☐DerivativePlot(f,x=a..b,order=1..n)做出f及其直至n阶导数的图像注意:首先用with命令调用软件包导数做图利用plot函数☐设F=[f1,f2,f3]为函数序列,则plot(F,x=a..b)做出函数f1,f2和f3在区间[a,b]上的一幅图像☐:= :赋值语句☐for:循环语句☐op(S):返回集合或序列S中的所有元素☐“:”VS“;”用Maple 学习微积分:for 循环和if 语句for 循环☐变量i 以间隔c 从a 变至b ☐对于每个i ,执行“命令行”for i from a to b by cdo命令行end do:if 语句if 表达式then命令行1else命令行2end if:☐如果表达式成立则执行“命令行1”,否则执行“命令行2”利用for 循环和if 语句计算100内可以被3整除的奇数之和(mod 求模运算)泰勒展开利用泰勒级数f n近似函数f(x)☐“工具”→“Math Apps”→“Calculus”→“Taylor's Theorem”计算泰勒展开☐taylor(f,x=a,n)计算f在点a处的n阶泰勒展开☐convert(t,polynom)将泰勒展开转化为泰勒多项式convert命令可以实现各种数据格式的可行转换用Maple学习微积分:牛顿迭代法牛顿迭代法☐NewtonsMethodTutor()调用牛顿迭代法演示小程序☐NewtonsMethod(f,x=a,output=sequence)调用牛顿迭代法以初始点a计算方程f=0的一个解用Maple学习微积分小结☐导数的理解、计算与做图☐for循环与if语句☐泰勒展开☐牛顿迭代法自己试一试:1000000以内的素数有多少?并计算这些素数的和。
Maple常用计算命令
常用计算命令《Maple 指令》7.0版本第1章章数1.1 复数Re,Im - 返回复数型表达式的实部/虚部abs - 绝对值函数argument - 复数的幅角函数conjugate - 返回共轭复数csgn - 实数和复数表达式的符号函数signum - 实数和复数表达式的sign 函数51.2 MAPLE 常数已知的变量名称指数常数(以自然对数为底)I - x^2 = -1 的根infinity 无穷大1.3 整数函数! - 阶乘函数irem, iquo - 整数的余数/商isprime - 素数测试isqrfree - 无整数平方的因数分解max, min - 数的最大值/最小值mod, modp, mods - 计算对 m 的整数模rand - 随机数生成器randomize - 重置随机数生成器1.4 素数Randpoly, Randprime - 有限域的随机多项式/首一素数多项式ithprime - 确定第 i 个素数nextprime, prevprime - 确定下一个最大/最小素数1.5 数的进制转换convert/base - 基数之间的转换convert/binary - 转换为二进制形式convert/decimal - 转换为 10 进制convert/double - 将双精度浮点数由一种形式转换为另一种形式convert/float - 转换为浮点数convert/hex - 转换为十六进制形式convert/metric - 转换为公制单位convert/octal - 转换为八进制形式1.6 数的类型检查type - 数的类型检查函数第2章初等数学2.1 初等函数product - 确定乘积求和不确定乘积exp - 指数函数sum - 确定求和不确定求和sqrt - 计算平方根算术运算符+, -, *, /, ^add, mul - 值序列的加法/乘法2.2 三角函数arcsin, arcsinh, . - 反三角函数/反双曲函数sin, sinh, . - 三角函数/双曲函数2.3 LOGARITHMS 函数dilog - Dilogarithm 函数ln, log, log10 - 自然对数/一般对数,常用对数2.4 类型转换convert/`+`,convert/`*` - 转换为求和/乘积convert/hypergeom - 将求和转换为超越函数convert/degrees - 将弧度转换为度convert/expsincos - 将trig 函数转换为exp, sin, cosconvert/Ei - 转换为指数积分convert/exp - 将trig 函数转换为指数函数convert/ln - 将arctrig 转换为对数函数polar - 转换为极坐标形式convert/radians - 将度转换为弧度convert/sincos - 将trig 函数转换为sin, cos, sinh, cosh convert/tan - 将trig 函数转换为tanconvert/trig - 将指数函数转换为三角函数和双曲函数第3章求值3.1 假设功能3.2 求值Eval - 对一个表达式求值eval - 求值evala - 在代数数(或者函数)域求值evalb - 按照一个布尔表达式求值evalc - 在复数域上符号求值evalf - 使用浮点算法求值evalhf - 用硬件浮点数算法对表达式求值evalm - 对矩阵表达式求值evaln - 求值到一个名称evalr, shake - 用区间算法求表达式的值和计算范围evalrC - 用复数区间算法对表达式求值value - 求值的惰性函数第4章求根,解方程4.1 数值解fsolve - 利用浮点数算法求解solve/floats - 包含浮点数的表达式4.2 最优化extrema - 寻找一个表达式的相对极值minimize, maximize - 计算最小值/最大值maxnorm - 一个多项式无穷大范数4.3 求根allvalues -计算含有RootOfs的表达式的所有可能值isqrt, iroot - 整数的平方根/第n 次根realroot - 一个多项式的实数根的隔离区间root - 一个代数表达式的第n 阶根RootOf - 方程根的表示surd - 非主根函数roots - 一个多项式对一个变量的精确根turm, sturmseq - 多项式在区间上的实数根数和实根序列4.4 解方程eliminate - 消去一个方程组中的某些变量isolve - 求解方程的整数解solvefor - 求解一个方程组的一个或者多个变量isolate - 隔离一个方程左边的一个子表达式singular - 寻找一个表达式的极点solve/identity - 求解包含属性的表达式solve/ineqs - 求解不等式solve/linear - 求解线性方程组solve/radical - 求解含有未知量根式的方程solve/scalar - 标量情况(单变量和方程)solve/series - 求解含有一般级数的方程solve/system - 解方程组或不等式组第5章操作表达式5.1 处理表达式Norm - 代数数 (或者函数) 的标准型Power - 惰性幂函数Powmod -带余数的惰性幂函数Primfield - 代数域的原始元素Trace - 求一个代数数或者函数的迹charfcn - 表达式和集合的特征函数Indets - 找一个表达式的变元invfunc - 函数表的逆powmod - 带余数的幂函数Risidue - 计算一个表达式的代数余combine - 表达式合并(对tan,cot不好用)expand - 表达式展开Expand - 展开表达式的惰性形式expandoff/expandon - 抑制/不抑制函数展开5.2 因式分解Afactor - 绝对因式分解的惰性形式Afactors - 绝对因式分解分解项列表的惰性形式Berlekamp - 因式分解的Berlekamp 显式度factor - 多元的多项式的因式分解factors - 多元多项式的因式分解列表Factor - 函数factor 的惰性形式Factors - 函数factors 的惰性形式polytools[splits] - 多项式的完全因式分解第6章化简6.1 表达式化简118simplify - 给一个表达式实施化简规则simplify/@ - 利用运算符化简表达式simplify/Ei - 利用指数积分化简表达式simplify/GAMMA - 利用GAMMA 函数进行化简simplify/RootOf - 用RootOf 函数化简表达式simplify/wronskian - 化简含wronskian 标识符的表达式simplify/hypergeom - 化简超越函数表达式simplify/ln - 化简含有对数的表达式simplify/piecewise - 化简分段函数表达式simplify/polar - 化简含有极坐标形式的复数型表达式simplify/power - 化简含幂次的表达式simplify/radical - 化简含有根式的表达式simplify/rtable - 化简rtable 表达式simplify/siderels - 使用关系式进行化简simplify/sqrt - 根式化简simplify/trig - 化简trig 函数表达式simplify/zero - 化简含嵌入型实数和虚数的复数表达式6.2 其它化简操作Normal - normal 函数的惰性形式convert - 将一个表达式转换成不同形式radnormal - 标准化一个含有根号数的表达式rationalize - 分母有理化第7章操作多项式7.0 MAPLE 中的多项式简介7.1 提取coeff - 提取一个多项式的系数coeffs - 提取多元的多项式的所有系数coeftayl - 多元表达式的系数lcoeff, tcoeff - 返回多元多项式的首项和末项系数7.2 多项式约数和根gcd, lcm - 多项式的最大公约数/最小公倍数psqrt, proot - 多项式的平方根和第n次根rem,quo - 多项式的余数/商7.3 操纵多项式convert/horner - 将一个多项式转换成Horner形式collect - 象幂次一样合并系数compoly - 确定一个多项式的可能合并的项数convert/polynom - 将级数转换成多项式形式convert/mathorner - 将多项式转换成Horner矩阵形式convert/ratpoly - 将级数转换成有理多项式sort - 将值的列表或者多项式排序sqrfree - 不含平方项的因数分解函数discrim - 多项式的判别式fixdiv - 计算多项式的固定除数norm - 多项式的标准型resultant - 计算两个多项式的终结式bernoulli - Bernoulli 数和多项式bernstein - 用Bernstein多项式近似一个函数content, primpart - 一个多元的多项式的内容和主部degree, ldegree - 一个多项式的最高次方/最低次方divide - 多项式的精确除法euler - Euler 数和多项式icontent - 多项式的整数部分interp - 多项式的插值prem, sprem - 多项式的pseudo 余数和稀疏pseudo 余数randpoly - 随机多项式生成器spline - 计算自然样条函数第8章有理表达式8.0 有理表达式简介8.1 操作有理多项式numer,denom - 返回一个表达式的分子/分母frontend - 将一般的表达式处理成一个有理表达式normal - 标准化一个有理表达式convert/parfrac - 转换为部分分数形式convert/rational - 将浮点数转换为接近的有理数ratrecon - 重建有理函数第9章微积分9.1 取极限Limit, limit - 计算极限limit[dir] - 计算方向极限limit[multi] - 多重方向极限limit[return] - 极限的返回值9.2 连续性测试discont - 寻找一个函数在实数域上的间断点fdiscont - 用数值法寻找函数在实数域上的间断点iscont - 测试在一个区间上的连续性D - 微分算子D, diff - 运算符D 和函数diffdiff, Diff - 微分或者偏微分convert/D - 将含导数表达式转换为D运算符表达式convert/diff - 将D(f)(x)表达式转换为diff(f(x),x)的形式implicitdiff - 由一个方程定义一个函数的微分9.4 积分计算Si, Ci … - 三角和双曲积分Dirac, Heaviside - Dirac 函数/Heaviside阶梯函数Ei - 指数积分Elliptic - 椭圆积分FresnelC, … - Fresnel 正弦,余弦积分和辅助函数int, Int - 定积分和不定积分LegendreP, … - Legendre 函数及其第一和第二类函数Li - 对数积分student[changevar] - 变量代换dawson - Dawson 积分ellipsoid - 椭球体的表面积evalf(int) - 数值积分intat, Intat - 在一个点上积分求值第10章微分方程10.1 微分方程分类odeadvisor - ODE-求解分析器DESol - 表示微分方程解的数据结构pdetest - 测试pdsolve 能找到的偏微分方程(PDEs)解10.2 常微分方程求解dsolve - 求解常微方程 (ODE)dsolve - 用给定的初始条件求解ODE 问题dsolve/inttrans - 用积分变换方法求解常微分方程dsolve/numeric - 常微方程数值解dsolve/piecewise - 带分段系数的常微方程求解dsolve - 寻找ODE 问题的级数解dsolve - 求解ODEs 方程组odetest - 从ODE 求解器中测试结果是显式或者隐式类型10.3 偏微分方程求解pdsolve - 寻找偏微分方程 (PDEs) 的解析解第11章数值计算11.1 MAPLE 中的数值计算环境IEEE 标准和Maple数值计算数据类型特殊值环境变量11.2 算法标准算法复数算法含有0,无穷和未定义数的算法11.3 数据构造器254complex - 复数和复数构造器Float, … - 浮点数及其构造器Fraction - 分数及其的构造器integer - 整数和整数构造器11.4 MATLAB 软件包简介11.5 “”区间类型表达式第12章级数12.1 幂级数的阶数Order - 阶数项函数order - 确定级数的截断阶数12.2 常见级数展开series - 一般的级数展开taylor - Taylor 级数展开mtaylor - 多元Taylor级数展开poisson - Poisson级数展开.26812.3 其它级数eulermac - Euler-Maclaurin求和piecewise - 分段连续函数asympt - 渐进展开第13章特殊函数AiryAi, AiryBi - Airy 波动函数AiryAiZeros, AiryBiZeros - Airy函数的实数零点AngerJ, WeberE - Anger函数和Weber函数BesselI, HankelH1, … - Bessel函数和Hankel函数BesselJZeros, … - Bessel函数实数零点Beta - Beta函数EllipticModulus - 模数函数k(q)GAMMA, lnGAMMA - 完全和不完全Gamma函数GaussAGM - Gauss 算术的几何平均数JacobiAM, ., - Jacobi 振幅函数和椭圆函数JacobiTheta1, JacobiTheta4 - Jacobi theta函数JacobiZeta - Jacobi 的Zeta函数KelvinBer, KelvinBei - Kelvin函数KummerM, - Kummer M函数和U函数LambertW - LambertW函数LerchPhi - 一般的Lerch Phi函数LommelS1, LommelS2 - Lommel函数MeijerG - 一个修正的Meijer G函数Psi - Digamma 和Polygamma函数StruveH, StruveL - Struve函数WeierstrassP - Weierstrass P函数及其导数WhittakerM - Whittaker 函数Zeta - Zeta 函数erf, … - 误差函数,补充的误差函数和虚数误差函数harmonic - 调和函数hypergeom - 广义的超越函数pochhammer - 一般的pochhammer函数polylog - 一般的polylogarithm函数第14章线性代数14.1 ALGEBRA(代数)中矩阵,矢量和数组14.2 LINALG 软件包简介14.3 数据结构矩阵matrices(小写)矢量vectors(矢量)convert/matrix - 将数组,列表,Matrix 转换成matrixconvert/vector - 将列表,数组或Vector 转换成矢量vector linalg[matrix] - 生成矩阵matrix(小写)linalg[vector] - 生成矢量vector(小写)14.4 惰性函数Det - 惰性行列式运算符Eigenvals - 数值型矩阵的特征值和特征向量Hermite, Smith - 矩阵的Hermite 和Smith 标准型14.5 LinearAlgebra函数Matrix 定义矩阵Add 加/减矩阵Adjoint 伴随矩阵BackwardSubstitute 求解 A . X = B,其中 A 为上三角型行阶梯矩阵BandMatrix 带状矩阵Basis 返回向量空间的一组基SumBasis 返回向量空间直和的一组基IntersectionBasis 返回向量空间交的一组基BezoutMatrix 构造两个多项式的 Bezout 矩阵BidiagonalForm 将矩阵约化为双对角型CharacteristicMatrix 构造特征矩阵CharacteristicPolynomial 构造矩阵的特征多项式CompanionMatrix 构造一个首一(或非首一)多项式或矩阵多项式的友矩阵(束)ConditionNumber 计算矩阵关于某范数的条件数ConstantMatrix 构造常数矩阵ConstantVector 构造常数向量Copy 构造矩阵或向量的一份复制CreatePermutation 将一个 NAG 主元向量转换为一个置换向量或矩阵CrossProduct 向量的叉积`&x` 向量的叉积DeleteRow 删除矩阵的行DeleteColumn 删除矩阵的列Determinant 行列式Diagonal 返回从矩阵中得到的向量序列DiagonalMatrix 构造(分块)对角矩阵Dimension 行数和列数DotProduct 点积BilinearForm 向量的双线性形式EigenConditionNumbers 计算数值特征值制约问题的特征值或特征向量的条件数Eigenvalues 计算矩阵的特征值Eigenvectors 计算矩阵的特征向量Equal 比较两个向量或矩阵是否相等ForwardSubstitute 求解 A . X = B,其中 A 为下三角型行阶梯矩阵FrobeniusForm 将一个方阵约化为 Frobenius 型(有理标准型)GaussianElimination 对矩阵作高斯消元ReducedRowEchelonForm 对矩阵作高斯-约当消元GetResultDataType 返回矩阵或向量运算的结果数据类型GetResultShape 返回矩阵或向量运算的结果形状GivensRotationMatrix 构造 Givens 旋转的矩阵GramSchmidt 计算一个正交向量集HankelMatrix 构造一个 Hankel 矩阵HermiteForm 计算一个矩阵的 Hermite 正规型HessenbergForm 将一个方阵约化为上 Hessenberg 型HilbertMatrix 构造广义 Hilbert 矩阵HouseholderMatrix 构造 Householder 反射矩阵IdentityMatrix 构造一个单位矩阵IsDefinite 检验矩阵的正定性,负定性或不定性IsOrthogonal 检验矩阵是否正交IsUnitary 检验矩阵是否为酉矩阵IsSimilar 确定两个矩阵是否相似JordanBlockMatrix 构造约当块矩阵JordanForm 将矩阵约化为约当型KroneckerProduct 构造两个矩阵的 Kronecker 张量积LeastSquares 方程的最小二乘解LinearSolve 求解线性方程组 A . x = bLUDecomposition 计算矩阵的 Cholesky,PLU 或 PLU1R 分解Map 将一个程序映射到一个表达式上,对矩阵和向量在原位置上进行处理MatrixAdd 计算两个矩阵的线性组合VectorAdd 计算两个向量的线性组合MatrixExponential 确定一个矩阵 A 的矩阵指数 exp(A)MatrixFunction 确定方阵 A 的函数 F(A)MatrixInverse 计算方阵的逆或矩阵的 Moore-Penrose 伪逆MatrixMatrixMultiply 计算两个矩阵的乘积MatrixVectorMultiply 计算一个矩阵和一个列向量的乘积VectorMatrixMultiply 计算一个行向量和一个矩阵的乘积MatrixPower 矩阵的幂MinimalPolynomial 构造矩阵的最小多项式Minor 计算矩阵的子式Multiply 矩阵相乘Norm 计算矩阵或向量的p-范数MatrixNorm 计算矩阵的p-范数VectorNorm 计算向量的p-范数Normalize 向量正规化NullSpace 计算矩阵的零度零空间OuterProductMatrix 两个向量的外积Permanent 方阵的不变量Pivot 矩阵元素的主元消去法PopovForm Popov 正规型QRDecomposition QR 分解RandomMatrix 构造随机矩阵RandomVector 构造随机向量Rank 计算矩阵的秩Row 返回矩阵的一个行向量序列Column 返回矩阵的一个列向量序列RowOperation 对矩阵作初等行变换ColumnOperation 对矩阵作出等列变换RowSpace 返回矩阵行空间的一组基ColumnSpace 返回矩阵列空间的一组基ScalarMatrix 构造一个单位矩阵的数量倍数ScalarVector 构造一个单位向量的数量倍数ScalarMultiply 矩阵与数的乘积MatrixScalarMultiply 计算矩阵与数的乘积VectorScalarMultiply 计算向量与数的乘积SchurForm 将方阵约化为 Schur 型SingularValues 计算矩阵的奇异值SmithForm 将矩阵约化为 Smith 正规型StronglyConnectedBlocks 计算方阵的强连通块SubMatrix 构造矩阵的子矩阵SubVector 构造向量的子向量SylvesterMatrix 构造两个多项式的 Sylvester 矩阵ToeplitzMatrix 构造 Toeplitz 矩阵Trace 计算方阵的迹Transpose 转置矩阵HermitianTranspose 共轭转置矩阵TridiagonalForm 将方阵约化为三对角型UnitVector 构造单位向量VandermondeMatrix 构造一个 Vandermonde 矩阵VectorAngle 计算两个向量的夹角ZeroMatrix 构造一个零矩阵ZeroVector 构造一个零向量Zip 将一个具有两个参数的程序作用到一对矩阵或向量上LinearAlgebra[Generic] 子函数包 [Generic] 子函数包提供作用在场,欧几里得域,积分域和环上的线性代数算法。
Maple常用计算命令
Maple常用计算命令Maple 常用计算命令《Maple 指令》7.0版本第1章章数1.1 复数Re,Im - 返回复数型表达式的实部/虚部abs - 绝对值函数argument - 复数的幅角函数conjugate - 返回共轭复数csgn - 实数和复数表达式的符号函数signum - 实数和复数表达式的sign 函数51.2 MAPLE 常数已知的变量名称指数常数(以自然对数为底)I - x^2 = -1 的根infinity 无穷大1.3 整数函数! - 阶乘函数irem, iquo - 整数的余数/商isprime - 素数测试isqrfree - 无整数平方的因数分解max, min - 数的最大值/最小值mod, modp, mods - 计算对 m 的整数模rand - 随机数生成器randomize - 重置随机数生成器1.4 素数Randpoly, Randprime - 有限域的随机多项式/首一素数多项式ithprime - 确定第i个素数nextprime, prevprime - 确定下一个最大/最小素数1.5 数的进制转换convert/base - 基数之间的转换convert/binary - 转换为二进制形式convert/decimal - 转换为 10 进制convert/double - 将双精度浮点数由一种形式转换为另一种形式convert/float - 转换为浮点数convert/hex - 转换为十六进制形式convert/metric - 转换为公制单位convert/octal - 转换为八进制形式1.6 数的类型检查type - 数的类型检查函数第2章初等数学2.1 初等函数product - 确定乘积求和不确定乘积exp - 指数函数sum - 确定求和不确定求和sqrt - 计算平方根算术运算符+, -, *, /, ^add, mul - 值序列的加法/乘法2.2 三角函数arcsin, arcsinh, . - 反三角函数/反双曲函数sin, sinh, . - 三角函数/双曲函数2.3 LOGARITHMS 函数dilog - Dilogarithm函数ln, log, log10 - 自然对数/一般对数,常用对数2.4 类型转换convert/`+`,convert/`*` - 转换为求和/乘积convert/hypergeom - 将求和转换为超越函数convert/degrees - 将弧度转换为度convert/expsincos - 将trig 函数转换为exp, sin, cosconvert/Ei - 转换为指数积分convert/exp - 将trig 函数转换为指数函数convert/ln - 将arctrig转换为对数函数polar - 转换为极坐标形式convert/radians - 将度转换为弧度convert/sincos - 将trig 函数转换为sin, cos, sinh, cosh convert/tan - 将trig 函数转换为tanconvert/trig - 将指数函数转换为三角函数和双曲函数第3章求值3.1 假设功能3.2 求值Eval - 对一个表达式求值eval - 求值evala - 在代数数(或者函数)域求值evalb - 按照一个布尔表达式求值evalc - 在复数域上符号求值evalf - 使用浮点算法求值evalhf - 用硬件浮点数算法对表达式求值evalm - 对矩阵表达式求值evaln - 求值到一个名称evalr, shake - 用区间算法求表达式的值和计算范围evalrC - 用复数区间算法对表达式求值value - 求值的惰性函数第4章求根,解方程4.1 数值解fsolve - 利用浮点数算法求解solve/floats - 包含浮点数的表达式4.2 最优化extrema - 寻找一个表达式的相对极值minimize, maximize - 计算最小值/最大值maxnorm - 一个多项式无穷大范数4.3 求根allvalues -计算含有RootOfs的表达式的所有可能值isqrt, iroot - 整数的平方根/第n 次根realroot - 一个多项式的实数根的隔离区间root - 一个代数表达式的第n 阶根RootOf - 方程根的表示surd - 非主根函数roots - 一个多项式对一个变量的精确根turm, sturmseq - 多项式在区间上的实数根数和实根序列4.4 解方程eliminate - 消去一个方程组中的某些变量isolve - 求解方程的整数解solvefor - 求解一个方程组的一个或者多个变量isolate - 隔离一个方程左边的一个子表达式singular - 寻找一个表达式的极点solve/identity - 求解包含属性的表达式solve/ineqs - 求解不等式solve/linear - 求解线性方程组solve/radical - 求解含有未知量根式的方程solve/scalar - 标量情况(单变量和方程)solve/series - 求解含有一般级数的方程solve/system - 解方程组或不等式组第5章操作表达式5.1 处理表达式Norm - 代数数 (或者函数) 的标准型Power - 惰性幂函数Powmod -带余数的惰性幂函数Primfield - 代数域的原始元素Trace - 求一个代数数或者函数的迹charfcn - 表达式和集合的特征函数Indets - 找一个表达式的变元invfunc - 函数表的逆powmod - 带余数的幂函数Risidue - 计算一个表达式的代数余combine - 表达式合并expand - 表达式展开Expand - 展开表达式的惰性形式expandoff/expandon - 抑制/不抑制函数展开5.2 因式分解Afactor - 绝对因式分解的惰性形式Afactors - 绝对因式分解分解项列表的惰性形式Berlekamp - 因式分解的Berlekamp显式度factor - 多元的多项式的因式分解factors - 多元多项式的因式分解列表Factor - 函数factor 的惰性形式Factors - 函数factors 的惰性形式polytools[splits] - 多项式的完全因式分解第6章化简6.1 表达式化简118simplify - 给一个表达式实施化简规则simplify/@ - 利用运算符化简表达式simplify/Ei - 利用指数积分化简表达式simplify/GAMMA - 利用GAMMA 函数进行化简simplify/RootOf - 用RootOf函数化简表达式simplify/wronskian - 化简含wronskian标识符的表达式simplify/hypergeom - 化简超越函数表达式simplify/ln - 化简含有对数的表达式simplify/piecewise - 化简分段函数表达式simplify/polar - 化简含有极坐标形式的复数型表达式simplify/power - 化简含幂次的表达式simplify/radical - 化简含有根式的表达式simplify/rtable - 化简rtable表达式simplify/siderels - 使用关系式进行化简simplify/sqrt - 根式化简simplify/trig - 化简trig 函数表达式simplify/zero - 化简含嵌入型实数和虚数的复数表达式6.2 其它化简操作Normal - normal 函数的惰性形式convert - 将一个表达式转换成不同形式radnormal - 标准化一个含有根号数的表达式rationalize - 分母有理化第7章操作多项式7.0 MAPLE 中的多项式简介7.1 提取coeff - 提取一个多项式的系数coeffs - 提取多元的多项式的所有系数coeftayl - 多元表达式的系数lcoeff, tcoeff - 返回多元多项式的首项和末项系数7.2 多项式约数和根gcd, lcm - 多项式的最大公约数/最小公倍数psqrt, proot - 多项式的平方根和第n次根rem,quo - 多项式的余数/商7.3 操纵多项式convert/horner - 将一个多项式转换成Horner形式collect - 象幂次一样合并系数compoly - 确定一个多项式的可能合并的项数convert/polynom - 将级数转换成多项式形式convert/mathorner - 将多项式转换成Horner矩阵形式convert/ratpoly - 将级数转换成有理多项式sort - 将值的列表或者多项式排序sqrfree - 不含平方项的因数分解函数7.4 多项式运算discrim - 多项式的判别式fixdiv - 计算多项式的固定除数norm - 多项式的标准型resultant - 计算两个多项式的终结式bernoulli - Bernoulli 数和多项式bernstein - 用Bernstein多项式近似一个函数content, primpart - 一个多元的多项式的内容和主部degree, ldegree - 一个多项式的最高次方/最低次方divide - 多项式的精确除法euler - Euler 数和多项式icontent - 多项式的整数部分interp - 多项式的插值prem, sprem - 多项式的pseudo 余数和稀疏pseudo 余数randpoly - 随机多项式生成器spline - 计算自然样条函数第8章有理表达式8.0 有理表达式简介8.1 操作有理多项式numer,denom - 返回一个表达式的分子/分母frontend - 将一般的表达式处理成一个有理表达式normal - 标准化一个有理表达式convert/parfrac - 转换为部分分数形式convert/rational - 将浮点数转换为接近的有理数ratrecon - 重建有理函数第9章微积分9.1 取极限Limit, limit - 计算极限limit[dir] - 计算方向极限limit[multi] - 多重方向极限limit[return] - 极限的返回值9.2 连续性测试discont - 寻找一个函数在实数域上的间断点fdiscont - 用数值法寻找函数在实数域上的间断点iscont - 测试在一个区间上的连续性9.3 微分计算D - 微分算子D, diff - 运算符D 和函数diffdiff, Diff - 微分或者偏微分convert/D - 将含导数表达式转换为D运算符表达式convert/diff - 将D(f)(x)表达式转换为diff(f(x),x)的形式implicitdiff - 由一个方程定义一个函数的微分9.4 积分计算Si, Ci … - 三角和双曲积分Dirac, Heaviside - Dirac 函数/Heaviside阶梯函数Ei - 指数积分Elliptic - 椭圆积分FresnelC, … - Fresnel 正弦,余弦积分和辅助函数int, Int - 定积分和不定积分LegendreP, … - Legendre 函数及其第一和第二类函数Li - 对数积分student[changevar] - 变量代换dawson - Dawson 积分ellipsoid - 椭球体的表面积evalf(int) - 数值积分intat, Intat - 在一个点上积分求值第10章微分方程10.1 微分方程分类odeadvisor - ODE-求解分析器DESol - 表示微分方程解的数据结构pdetest - 测试pdsolve能找到的偏微分方程(PDEs)解10.2 常微分方程求解dsolve - 求解常微方程 (ODE)dsolve - 用给定的初始条件求解ODE 问题dsolve/inttrans - 用积分变换方法求解常微分方程dsolve/numeric - 常微方程数值解dsolve/piecewise - 带分段系数的常微方程求解dsolve - 寻找ODE 问题的级数解dsolve - 求解ODEs 方程组odetest - 从ODE 求解器中测试结果是显式或者隐式类型10.3 偏微分方程求解pdsolve - 寻找偏微分方程 (PDEs) 的解析解第11章数值计算11.1 MAPLE 中的数值计算环境IEEE 标准和Maple数值计算数据类型特殊值环境变量11.2 算法标准算法复数算法含有0,无穷和未定义数的算法11.3 数据构造器254complex - 复数和复数构造器Float, … - 浮点数及其构造器Fraction - 分数及其的构造器integer - 整数和整数构造器11.4 MATLAB 软件包简介11.5 “”区间类型表达式第12章级数12.1 幂级数的阶数Order - 阶数项函数order - 确定级数的截断阶数12.2 常见级数展开series - 一般的级数展开taylor - Taylor 级数展开mtaylor - 多元Taylor级数展开poisson - Poisson级数展开.26812.3 其它级数eulermac - Euler-Maclaurin求和piecewise - 分段连续函数asympt - 渐进展开第13章特殊函数AiryAi, AiryBi - Airy 波动函数AiryAiZeros, AiryBiZeros - Airy函数的实数零点AngerJ, WeberE - Anger函数和Weber函数Bessel I, HankelH1, … - Bessel函数和Hankel函数BesselJZeros, … - Bessel函数实数零点Beta - Beta函数EllipticModulus - 模数函数k(q)GAMMA, lnGAMMA - 完全和不完全Gamma函数GaussAGM - Gauss 算术的几何平均数JacobiAM, ., - Jacobi 振幅函数和椭圆函数JacobiTheta1, JacobiTheta4 - Jacobi theta函数JacobiZeta - Jacobi 的Zeta函数KelvinBer, KelvinBei - Kelvin函数KummerM, - Kummer M函数和U函数LambertW - LambertW函数LerchPhi - 一般的Lerch Phi函数LommelS1, LommelS2 - Lommel函数MeijerG - 一个修正的Meijer G函数Psi - Digamma 和Polygamma函数StruveH, StruveL - Struve函数WeierstrassP - Weierstrass P函数及其导数WhittakerM - Whittaker 函数Zeta - Zeta 函数erf, … - 误差函数,补充的误差函数和虚数误差函数harmonic - 调和函数hypergeom - 广义的超越函数pochhammer - 一般的pochhammer函数polylog - 一般的polylogarithm函数第14章线性代数14.1 ALGEBRA(代数)中矩阵,矢量和数组14.2 LINALG 软件包简介14.3 数据结构矩阵matrices(小写)矢量vectors(矢量)convert/matrix - 将数组,列表,Matrix 转换成matrix convert/vector - 将列表,数组或Vector 转换成矢量vector linalg[matrix] - 生成矩阵matrix(小写)linalg[vector] - 生成矢量vector(小写)14.4 惰性函数Det - 惰性行列式运算符Eigenvals - 数值型矩阵的特征值和特征向量Hermite, Smith - 矩阵的Hermite和Smith 标准型14.5 LinearAlgebra函数Matrix 定义矩阵Add 加/减矩阵Adjoint伴随矩阵BackwardSubstitute求解 A . X = B,其中 A 为上三角型行阶梯矩阵BandMatrix带状矩阵Basis 返回向量空间的一组基SumBasis返回向量空间直和的一组基IntersectionBasis返回向量空间交的一组基BezoutMatrix构造两个多项式的Bezout矩阵BidiagonalForm将矩阵约化为双对角型CharacteristicMatrix构造特征矩阵CharacteristicPolynomial 构造矩阵的特征多项式CompanionMatrix构造一个首一(或非首一)多项式或矩阵多项式的友矩阵(束)ConditionNumber计算矩阵关于某范数的条件数ConstantMatrix构造常数矩阵ConstantVector构造常数向量Copy 构造矩阵或向量的一份复制CreatePermutation将一个NAG 主元向量转换为一个置换向量或矩阵CrossProduct向量的叉积`&x` 向量的叉积DeleteRow删除矩阵的行DeleteColumn删除矩阵的列Determinant 行列式Diagonal 返回从矩阵中得到的向量序列DiagonalMatrix构造(分块)对角矩阵Dimension 行数和列数DotProduct点积BilinearForm向量的双线性形式EigenConditionNumbers计算数值特征值制约问题的特征值或特征向量的条件数Eigenvalues 计算矩阵的特征值Eigenvectors 计算矩阵的特征向量Equal 比较两个向量或矩阵是否相等ForwardSubstitute求解 A . X = B,其中 A 为下三角型行阶梯矩阵FrobeniusForm将一个方阵约化为Frobenius型(有理标准型)GaussianElimination对矩阵作高斯消元ReducedRowEchelonForm对矩阵作高斯-约当消元GetResultDataType返回矩阵或向量运算的结果数据类型GetResultShape返回矩阵或向量运算的结果形状GivensRotationMatrix构造 Givens 旋转的矩阵GramSchmidt计算一个正交向量集HankelMatrix构造一个Hankel矩阵HermiteForm计算一个矩阵的Hermite正规型HessenbergForm将一个方阵约化为上Hessenberg型HilbertMatrix构造广义 Hilbert 矩阵HouseholderMatrix构造 Householder 反射矩阵IdentityMatrix构造一个单位矩阵IsDefinite检验矩阵的正定性,负定性或不定性IsOrthogonal检验矩阵是否正交IsUnitary检验矩阵是否为酉矩阵IsSimilar确定两个矩阵是否相似JordanBlockMatrix构造约当块矩阵JordanForm将矩阵约化为约当型KroneckerProduct构造两个矩阵的Kronecker张量积LeastSquares方程的最小二乘解LinearSolve求解线性方程组 A . x = bLUDecomposition计算矩阵的Cholesky,PLU 或 PLU1R 分解Map 将一个程序映射到一个表达式上,对矩阵和向量在原位置上进行处理MatrixAdd计算两个矩阵的线性组合VectorAdd计算两个向量的线性组合MatrixExponential确定一个矩阵 A 的矩阵指数exp(A)MatrixFunction确定方阵 A 的函数 F(A)MatrixInverse计算方阵的逆或矩阵的Moore-Penrose 伪逆MatrixMatrixMultiply计算两个矩阵的乘积MatrixVectorMultiply计算一个矩阵和一个列向量的乘积VectorMatrixMultiply计算一个行向量和一个矩阵的乘积MatrixPower矩阵的幂MinimalPolynomial构造矩阵的最小多项式Minor 计算矩阵的子式Multiply 矩阵相乘Norm 计算矩阵或向量的p-范数MatrixNorm计算矩阵的p-范数VectorNorm计算向量的p-范数Normalize 向量正规化NullSpace计算矩阵的零度零空间OuterProductMatrix两个向量的外积Permanent 方阵的不变量Pivot 矩阵元素的主元消去法PopovForm Popov 正规型QRDecomposition QR 分解RandomMatrix构造随机矩阵RandomVector构造随机向量Rank 计算矩阵的秩Row 返回矩阵的一个行向量序列Column 返回矩阵的一个列向量序列RowOperation对矩阵作初等行变换ColumnOperation对矩阵作出等列变换RowSpace返回矩阵行空间的一组基ColumnSpace返回矩阵列空间的一组基ScalarMatrix构造一个单位矩阵的数量倍数ScalarVector构造一个单位向量的数量倍数ScalarMultiply矩阵与数的乘积MatrixScalarMultiply计算矩阵与数的乘积VectorScalarMultiply计算向量与数的乘积SchurForm将方阵约化为Schur型SingularValues计算矩阵的奇异值SmithForm将矩阵约化为 Smith 正规型StronglyConnectedBlocks计算方阵的强连通块SubMatrix构造矩阵的子矩阵SubVector构造向量的子向量SylvesterMatrix构造两个多项式的 Sylvester 矩阵ToeplitzMatrix构造Toeplitz矩阵Trace 计算方阵的迹Transpose 转置矩阵HermitianTranspose共轭转置矩阵TridiagonalForm将方阵约化为三对角型UnitVector构造单位向量VandermondeMatrix构造一个Vandermonde矩阵VectorAngle计算两个向量的夹角ZeroMatrix构造一个零矩阵ZeroVector构造一个零向量Zip 将一个具有两个参数的程序作用到一对矩阵或向量上LinearAlgebra[Generic] 子函数包[Generic] 子函数包提供作用在场,欧几里得域,积分域和环上的线性代数算法。
利用Maple计算数学的常见命令
Maple工作表左侧的20个面板含有1,000多个符号。用户也可以使用Maple面
板输入数据,面板含有用于常规操作的填充模版。
示例:使用微积分面板求表达式4t6+sin(t)的积分。
操作过程:
打开“微积分”面板,然后点击不定积分的模板。一个不定积分模版将出当前工作表中。在占位符处输入被积表达式,完成后,按下回车键计算。
区分大小写
Maple区分大小写,X,x表示不同的变量名。
示例:输入“x+x”。输入“y+Y”。对比一下输出结果。
隐式乘号
Maple能够理解隐式乘号,项之间的空格理解为乘号。
示例:</strong>键入“3x”隐含的意思为“化表达式,在不同的项之间加入了空格。
示例:使用表达式面板用于求解函数的极限。
操作过程:将光标移到要工作的位置,点击极限表达式,在占位符中填入表达式,完成后按回车键计算。
提示:可以将经常要用的面板项移到收藏夹中。操作方式是鼠标右击面板按钮,然后选
择添加到收藏夹面板中。
符号和命令补全
符号和命令补全机制帮助用户完成符号和命令的输入。键入符号名称开始的几个字符,按下“Esc”键,从弹出的下拉菜单中选择需要的符号。
示例:对表达式y=ex绘图,使用符号补全方式创建指数e。
操作过程:
1.利用面板输入ab模板,在a处输入“e”,再按下“[Esc]”键,然后从列表中选择“exponential‘e’”,在b处输入x,按下回车键。
2.使用右键菜单对表达式绘图,选择“Plots—2-D Plot”。
一些命令补全模板提供Maple命令的调用格式,方便我们快速输入正确的语法命令。
利用maple计算数学的常见命令在进行数学论文撰写时会根据具体的问题来对数学问题进行求解计算
Maple基础教程
目录第二章MAPLE基础 (1)2.1与M APLE对话 (1)2.2使用命令和函数包 (18)2.3微积分 (23)2.4线性代数 (28)2.5微分方程 (35)2.6优化 (45)2.7动态系统 (53)2.8基础编程知识 (58)2.9M APLE使用中常犯的错误 (78)第二章Maple基础Maple是目前应用非常广泛的科学计算软件之一,具有非常强大的符号计算和数值计算功能。
Maple 提供智能界面求解复杂数学问题和创建技术文件,用户可在易于使用的智能文件环境中完成科学计算、建模仿真、可视化、程序设计、技术文件生成、报告演示等,从简单的数字计算到高度复杂的系统,满足各个层次用户的需要。
与传统工程软件不同,甚至有别于旧版本的Maple,新版本Maple为工程师提供了大量的专业计算功能,庞大的数学求解器可用于各种工程领域,如微分方程、矩阵、各种变换包括FFT、统计、小波、等等,超过5000个计算命令让用户通常只需要一个函数就可以完成复杂的分析任务。
本章主要介绍Maple的基本功能,包括:数值和符号计算计算、求解方程、微积分计算、向量及矩阵计算、微分方程求解等。
Maple是一个全面的系统,提供多种方式完成同一个任务。
在本章中,我们将通过简单、易于重复的方式求解常见的问题,但它不是唯一的操作方式。
当用户熟悉本章中的各种操作方式后,用户可以通过帮助系统了解如何使用相似的技术完成各种任务。
2.1 与Maple对话2.1.1 Maple环境Maple的用户界面是一个典型的Windows或Mac风格的操作环境。
工作环境界面如图2-1所示。
图2-1:Maple工作界面在图2-1的工作界面中,窗体的主要部分包括:●主文档,即主工作区。
事实上,用户大可以把它想象成包含有各种数学和绘图工具的Microsoft Word。
●面板区。
汇集了数学工具和特殊的数学符号,用户可以将它们直接拖拽到工作区中使用。
面板区中最重要的面板当属Expressions,Matrix,Common Symbols和Greek。
Maple中的微分代数方程求解
Part10:Maple中的微分代数方程求解西希安工程模拟软件(上海)有限公司,200810.0 Maple中的微分方程求解器介绍Maple中微分方程求解器使用领先的算法求解以下问题:常微分方程 (ODEs): dsolve 命令用于求解线性和非线性ODEs, 初始值问题 (IVP), 以及边界值问题 (BVP),可以通过参数项选择求符号解 (解析解) 或数值解。
ODE Analyzer Assistant 微分方程分析器助手提供一个交互式用户界面方便用户求解 ODE 以及显示结果的图形。
了解更多信息,参考帮助系统中的 dsolve, dsolve/numeric, 和 ODE Analyzer.偏微分方程 (PDEs): pdsolve 命令用于求 PDEs 和含边界值问题的 PDEs 的符号解或数值解。
使用Maple的PDE工具可以完成对PDE系统的结构分析和指数降阶处理。
了解更多信息,参考帮助系统中的 pdsolve and pdsolve/numeric.微分-代数方程 (DAEs): dsolve/numeric 命令是符号-数值混合求解器,使用符号预处理和降阶技术,让Maple能够求解高指数的DAE问题。
Maple内置三个求解器用于处理DAEs:1)修正的 Runge-Kutta Fehlberg 方法,2)Rosenbrock 方法,以及 3)修正的拓展后向差分隐式方法。
10.1 Maple中的微分代数方程(DAEs)更多亮点:大部分情况下,通过识别是否存在因变量的纯代数方程,dsolve命令可以判断给定的问题是否是微分代数方程,而不是常微分方程。
如果输入是一个不含有纯代数方程的微分代数方程,使用solve求解时需要用method参数指定对象是一个微分代数方程。
dsolve 有三种数值方法求解DAEs。
默认的 DAE IVP 方法是 modified Runge-Kutta Fehlberg method (rkf45_dae),另两个方法是 rosenbrock_dae 和 Modified Extended Backward-Differentiation Implicit method (mebdfi),可以通过 method 参数项指定。
Maple常用计算命令..
Maple常用计算命令..常用计算命令《Maple 指令》7.0版本第1章章数1.1 复数Re,Im - 返回复数型表达式的实部/虚部abs - 绝对值函数argument - 复数的幅角函数conjugate - 返回共轭复数csgn - 实数和复数表达式的符号函数signum - 实数和复数表达式的sign 函数51.2 MAPLE 常数已知的变量名称指数常数(以自然对数为底)I - x^2 = -1 的根infinity 无穷大1.3 整数函数! - 阶乘函数irem, iquo - 整数的余数/商isprime - 素数测试isqrfree - 无整数平方的因数分解max, min - 数的最大值/最小值mod, modp, mods - 计算对 m 的整数模rand - 随机数生成器randomize - 重置随机数生成器1.4 素数Randpoly, Randprime - 有限域的随机多项式/首一素数多项式ithprime - 确定第 i 个素数nextprime, prevprime - 确定下一个最大/最小素数1.5 数的进制转换convert/base - 基数之间的转换convert/binary - 转换为二进制形式convert/decimal - 转换为 10 进制convert/double - 将双精度浮点数由一种形式转换为另一种形式convert/float - 转换为浮点数convert/hex - 转换为十六进制形式convert/metric - 转换为公制单位convert/octal - 转换为八进制形式1.6 数的类型检查type - 数的类型检查函数第2章初等数学2.1 初等函数product - 确定乘积求和不确定乘积exp - 指数函数sum - 确定求和不确定求和sqrt - 计算平方根算术运算符+, -, *, /, ^add, mul - 值序列的加法/乘法2.2 三角函数arcsin, arcsinh, . - 反三角函数/反双曲函数sin, sinh, . - 三角函数/双曲函数2.3 LOGARITHMS 函数dilog - Dilogarithm 函数ln, log, log10 - 自然对数/一般对数,常用对数2.4 类型转换convert/`+`,convert/`*` - 转换为求和/乘积convert/hypergeom - 将求和转换为超越函数convert/degrees - 将弧度转换为度convert/expsincos - 将trig 函数转换为exp, sin, cosconvert/Ei - 转换为指数积分convert/exp - 将trig 函数转换为指数函数convert/ln - 将arctrig 转换为对数函数polar - 转换为极坐标形式convert/radians - 将度转换为弧度convert/sincos - 将trig 函数转换为sin, cos, sinh, cosh convert/tan - 将trig 函数转换为tanconvert/trig - 将指数函数转换为三角函数和双曲函数第3章求值3.1 假设功能3.2 求值Eval - 对一个表达式求值eval - 求值evala - 在代数数(或者函数)域求值evalb - 按照一个布尔表达式求值evalc - 在复数域上符号求值evalf - 使用浮点算法求值evalhf - 用硬件浮点数算法对表达式求值evalm - 对矩阵表达式求值evaln - 求值到一个名称evalr, shake - 用区间算法求表达式的值和计算范围evalrC - 用复数区间算法对表达式求值value - 求值的惰性函数第4章求根,解方程4.1 数值解fsolve - 利用浮点数算法求解solve/floats - 包含浮点数的表达式4.2 最优化extrema - 寻找一个表达式的相对极值minimize, maximize - 计算最小值/最大值maxnorm - 一个多项式无穷大范数4.3 求根allvalues -计算含有RootOfs的表达式的所有可能值isqrt, iroot - 整数的平方根/第n 次根realroot - 一个多项式的实数根的隔离区间root - 一个代数表达式的第n 阶根RootOf - 方程根的表示surd - 非主根函数roots - 一个多项式对一个变量的精确根turm, sturmseq - 多项式在区间上的实数根数和实根序列4.4 解方程eliminate - 消去一个方程组中的某些变量isolve - 求解方程的整数解solvefor - 求解一个方程组的一个或者多个变量isolate - 隔离一个方程左边的一个子表达式singular - 寻找一个表达式的极点solve/identity - 求解包含属性的表达式solve/ineqs - 求解不等式solve/linear - 求解线性方程组solve/radical - 求解含有未知量根式的方程solve/scalar - 标量情况(单变量和方程)solve/series - 求解含有一般级数的方程solve/system - 解方程组或不等式组第5章操作表达式5.1 处理表达式Norm - 代数数 (或者函数) 的标准型Power - 惰性幂函数Powmod -带余数的惰性幂函数Primfield - 代数域的原始元素Trace - 求一个代数数或者函数的迹charfcn - 表达式和集合的特征函数Indets - 找一个表达式的变元invfunc - 函数表的逆powmod - 带余数的幂函数Risidue - 计算一个表达式的代数余combine - 表达式合并(对tan,cot不好用)expand - 表达式展开Expand - 展开表达式的惰性形式expandoff/expandon - 抑制/不抑制函数展开5.2 因式分解Afactor - 绝对因式分解的惰性形式Afactors - 绝对因式分解分解项列表的惰性形式Berlekamp - 因式分解的Berlekamp 显式度factor - 多元的多项式的因式分解factors - 多元多项式的因式分解列表Factor - 函数factor 的惰性形式Factors - 函数factors 的惰性形式polytools[splits] - 多项式的完全因式分解第6章化简6.1 表达式化简118simplify - 给一个表达式实施化简规则simplify/@ - 利用运算符化简表达式simplify/Ei - 利用指数积分化简表达式simplify/GAMMA - 利用GAMMA 函数进行化简simplify/RootOf - 用RootOf 函数化简表达式simplify/wronskian - 化简含wronskian 标识符的表达式simplify/hypergeom - 化简超越函数表达式simplify/ln - 化简含有对数的表达式simplify/piecewise - 化简分段函数表达式simplify/polar - 化简含有极坐标形式的复数型表达式simplify/power - 化简含幂次的表达式simplify/radical - 化简含有根式的表达式simplify/rtable - 化简rtable 表达式simplify/siderels - 使用关系式进行化简simplify/sqrt - 根式化简simplify/trig - 化简trig 函数表达式simplify/zero - 化简含嵌入型实数和虚数的复数表达式6.2 其它化简操作Normal - normal 函数的惰性形式convert - 将一个表达式转换成不同形式radnormal - 标准化一个含有根号数的表达式rationalize - 分母有理化第7章操作多项式7.0 MAPLE 中的多项式简介7.1 提取coeff - 提取一个多项式的系数coeffs - 提取多元的多项式的所有系数coeftayl - 多元表达式的系数lcoeff, tcoeff - 返回多元多项式的首项和末项系数7.2 多项式约数和根gcd, lcm - 多项式的最大公约数/最小公倍数psqrt, proot - 多项式的平方根和第n次根rem,quo - 多项式的余数/商7.3 操纵多项式convert/horner - 将一个多项式转换成Horner形式collect - 象幂次一样合并系数compoly - 确定一个多项式的可能合并的项数convert/polynom - 将级数转换成多项式形式convert/mathorner - 将多项式转换成Horner矩阵形式convert/ratpoly - 将级数转换成有理多项式sort - 将值的列表或者多项式排序sqrfree - 不含平方项的因数分解函数discrim - 多项式的判别式fixdiv - 计算多项式的固定除数norm - 多项式的标准型resultant - 计算两个多项式的终结式bernoulli - Bernoulli 数和多项式bernstein - 用Bernstein多项式近似一个函数content, primpart - 一个多元的多项式的内容和主部degree, ldegree - 一个多项式的最高次方/最低次方divide - 多项式的精确除法euler - Euler 数和多项式icontent - 多项式的整数部分interp - 多项式的插值prem, sprem - 多项式的pseudo 余数和稀疏pseudo 余数randpoly - 随机多项式生成器spline - 计算自然样条函数第8章有理表达式8.0 有理表达式简介8.1 操作有理多项式numer,denom - 返回一个表达式的分子/分母frontend - 将一般的表达式处理成一个有理表达式normal - 标准化一个有理表达式convert/parfrac - 转换为部分分数形式convert/rational - 将浮点数转换为接近的有理数ratrecon - 重建有理函数第9章微积分9.1 取极限Limit, limit - 计算极限limit[dir] - 计算方向极限limit[multi] - 多重方向极限limit[return] - 极限的返回值9.2 连续性测试discont - 寻找一个函数在实数域上的间断点fdiscont - 用数值法寻找函数在实数域上的间断点iscont - 测试在一个区间上的连续性D - 微分算子D, diff - 运算符D 和函数diffdiff, Diff - 微分或者偏微分convert/D - 将含导数表达式转换为D运算符表达式convert/diff - 将D(f)(x)表达式转换为diff(f(x),x)的形式implicitdiff - 由一个方程定义一个函数的微分9.4 积分计算Si, Ci … - 三角和双曲积分Dirac, Heaviside - Dirac 函数/Heaviside阶梯函数Ei - 指数积分Elliptic - 椭圆积分FresnelC, … - Fresnel 正弦,余弦积分和辅助函数int, Int - 定积分和不定积分Legendr eP, … - Legendre 函数及其第一和第二类函数Li - 对数积分student[changevar] - 变量代换dawson - Dawson 积分ellipsoid - 椭球体的表面积evalf(int) - 数值积分intat, Intat - 在一个点上积分求值第10章微分方程10.1 微分方程分类odeadvisor - ODE-求解分析器DESol - 表示微分方程解的数据结构pdetest - 测试pdsolve 能找到的偏微分方程(PDEs)解10.2 常微分方程求解dsolve - 求解常微方程 (ODE)dsolve - 用给定的初始条件求解ODE 问题dsolve/inttrans - 用积分变换方法求解常微分方程dsolve/numeric - 常微方程数值解dsolve/piecewise - 带分段系数的常微方程求解dsolve - 寻找ODE 问题的级数解dsolve - 求解ODEs 方程组odetest - 从ODE 求解器中测试结果是显式或者隐式类型10.3 偏微分方程求解pdsolve - 寻找偏微分方程 (PDEs) 的解析解第11章数值计算11.1 MAPLE 中的数值计算环境IEEE 标准和Maple数值计算数据类型特殊值环境变量11.2 算法标准算法复数算法含有0,无穷和未定义数的算法11.3 数据构造器254complex - 复数和复数构造器Float, … - 浮点数及其构造器Fraction - 分数及其的构造器integer - 整数和整数构造器11.4 MATLAB 软件包简介11.5 “”区间类型表达式第12章级数12.1 幂级数的阶数Order - 阶数项函数order - 确定级数的截断阶数12.2 常见级数展开series - 一般的级数展开taylor - Taylor 级数展开mtaylor - 多元Taylor级数展开poisson - Poisson级数展开.26812.3 其它级数eulermac - Euler-Maclaurin求和piecewise - 分段连续函数asympt - 渐进展开第13章特殊函数AiryAi, AiryBi - Airy 波动函数AiryAiZeros, AiryBiZeros - Airy函数的实数零点AngerJ, WeberE - Anger函数和Weber函数BesselI, HankelH1, … - Bessel函数和Hankel函数BesselJZeros, … - Bessel函数实数零点Beta - Beta函数EllipticModulus - 模数函数k(q)GAMMA, lnGAMMA - 完全和不完全Gamma函数GaussAGM - Gauss 算术的几何平均数JacobiAM, ., - Jacobi 振幅函数和椭圆函数JacobiTheta1, JacobiTheta4 - Jacobi theta函数JacobiZeta - Jacobi 的Zeta函数KelvinBer, KelvinBei - Kelvin函数KummerM, - Kummer M函数和U函数LambertW - LambertW函数LerchPhi - 一般的Lerch Phi函数LommelS1, LommelS2 - Lommel函数MeijerG - 一个修正的Meijer G函数Psi - Digamma 和Polygamma函数StruveH, StruveL - Struve函数WeierstrassP - Weierstrass P函数及其导数WhittakerM - Whittaker 函数Zeta - Zeta 函数erf, … - 误差函数,补充的误差函数和虚数误差函数harmonic - 调和函数hypergeom - 广义的超越函数pochhammer - 一般的pochhammer函数polylog - 一般的polylogarithm函数第14章线性代数14.1 ALGEBRA(代数)中矩阵,矢量和数组14.2 LINALG 软件包简介14.3 数据结构矩阵matrices(小写)矢量vectors(矢量)convert/matrix - 将数组,列表,Matrix 转换成matrixconvert/vector - 将列表,数组或Vector 转换成矢量vector linalg[matrix] - 生成矩阵matrix(小写)linalg[vector] - 生成矢量vector(小写)14.4 惰性函数Det - 惰性行列式运算符Eigenvals - 数值型矩阵的特征值和特征向量Hermite, Smith - 矩阵的Hermite 和Smith 标准型14.5 LinearAlgebra函数Matrix 定义矩阵Add 加/减矩阵Adjoint 伴随矩阵BackwardSubstitute 求解 A . X = B,其中 A 为上三角型行阶梯矩阵BandMatrix 带状矩阵Basis 返回向量空间的一组基SumBasis 返回向量空间直和的一组基IntersectionBasis 返回向量空间交的一组基BezoutMatrix 构造两个多项式的 Bezout 矩阵BidiagonalForm 将矩阵约化为双对角型CharacteristicMatrix 构造特征矩阵CharacteristicPolynomial 构造矩阵的特征多项式CompanionMatrix 构造一个首一(或非首一)多项式或矩阵多项式的友矩阵(束)ConditionNumber 计算矩阵关于某范数的条件数ConstantMatrix 构造常数矩阵ConstantVector 构造常数向量Copy 构造矩阵或向量的一份复制CreatePermutation 将一个NAG 主元向量转换为一个置换向量或矩阵CrossProduct 向量的叉积`&x` 向量的叉积DeleteRow 删除矩阵的行DeleteColumn 删除矩阵的列Determinant 行列式Diagonal 返回从矩阵中得到的向量序列DiagonalMatrix 构造(分块)对角矩阵Dimension 行数和列数DotProduct 点积BilinearForm 向量的双线性形式EigenConditionNumbers 计算数值特征值制约问题的特征值或特征向量的条件数Eigenvalues 计算矩阵的特征值Eigenvectors 计算矩阵的特征向量Equal 比较两个向量或矩阵是否相等ForwardSubstitute 求解 A . X = B,其中 A 为下三角型行阶梯矩阵FrobeniusForm 将一个方阵约化为 Frobenius 型(有理标准型)GaussianElimination 对矩阵作高斯消元ReducedRowEchelonForm 对矩阵作高斯-约当消元GetResultDataType 返回矩阵或向量运算的结果数据类型GetResultShape 返回矩阵或向量运算的结果形状GivensRotationMatrix 构造 Givens 旋转的矩阵GramSchmidt 计算一个正交向量集HankelMatrix 构造一个 Hankel 矩阵HermiteForm 计算一个矩阵的 Hermite 正规型HessenbergForm 将一个方阵约化为上 Hessenberg 型HilbertMatrix 构造广义 Hilbert 矩阵HouseholderMatrix 构造 Householder 反射矩阵IdentityMatrix 构造一个单位矩阵IsDefinite 检验矩阵的正定性,负定性或不定性IsOrthogonal 检验矩阵是否正交IsUnitary 检验矩阵是否为酉矩阵IsSimilar 确定两个矩阵是否相似JordanBlockMatrix 构造约当块矩阵JordanForm 将矩阵约化为约当型KroneckerProduct 构造两个矩阵的 Kronecker 张量积LeastSquares 方程的最小二乘解LinearSolve 求解线性方程组 A . x = bLUDecomposition 计算矩阵的 Cholesky,PLU 或 PLU1R 分解Map 将一个程序映射到一个表达式上,对矩阵和向量在原位置上进行处理MatrixAdd 计算两个矩阵的线性组合VectorAdd 计算两个向量的线性组合MatrixExponential 确定一个矩阵 A 的矩阵指数 exp(A)MatrixFunction 确定方阵 A 的函数 F(A)MatrixInverse 计算方阵的逆或矩阵的 Moore-Penrose 伪逆MatrixMatrixMultiply 计算两个矩阵的乘积MatrixVectorMultiply 计算一个矩阵和一个列向量的乘积VectorMatrixMultiply 计算一个行向量和一个矩阵的乘积MatrixPower 矩阵的幂MinimalPolynomial 构造矩阵的最小多项式Minor 计算矩阵的子式Multiply 矩阵相乘Norm 计算矩阵或向量的p-范数MatrixNorm 计算矩阵的p-范数VectorNorm 计算向量的p-范数Normalize 向量正规化NullSpace 计算矩阵的零度零空间OuterProductMatrix 两个向量的外积Permanent 方阵的不变量Pivot 矩阵元素的主元消去法PopovForm Popov 正规型QRDecomposition QR 分解RandomMatrix 构造随机矩阵RandomVector 构造随机向量Rank 计算矩阵的秩Row 返回矩阵的一个行向量序列Column 返回矩阵的一个列向量序列RowOperation 对矩阵作初等行变换ColumnOperation 对矩阵作出等列变换RowSpace 返回矩阵行空间的一组基ColumnSpace 返回矩阵列空间的一组基ScalarMatrix 构造一个单位矩阵的数量倍数ScalarVector 构造一个单位向量的数量倍数ScalarMultiply 矩阵与数的乘积MatrixScalarMultiply 计算矩阵与数的乘积VectorScalarMultiply 计算向量与数的乘积SchurForm 将方阵约化为 Schur 型SingularValues 计算矩阵的奇异值SmithForm 将矩阵约化为Smith 正规型StronglyConnectedBlocks 计算方阵的强连通块SubMatrix 构造矩阵的子矩阵SubVector 构造向量的子向量SylvesterMatrix 构造两个多项式的Sylvester 矩阵ToeplitzMatrix 构造 Toeplitz 矩阵Trace 计算方阵的迹Transpose 转置矩阵HermitianTranspose 共轭转置矩阵TridiagonalForm 将方阵约化为三对角型UnitVector 构造单位向量VandermondeMatrix 构造一个 Vandermonde 矩阵VectorAngle 计算两个向量的夹角ZeroMatrix 构造一个零矩阵ZeroVector 构造一个零向量Zip 将一个具有两个参数的程序作用到一对矩阵或向量上LinearAlgebra[Generic] 子函数包[Generic] 子函数包提供作用在场,欧几里得域,积分域和环上的线性代数算法。
Maple常用计算命令
常用计算命令《Maple 指令》7.0版本第1xx xx数1.1 复数Re,Im - 返回复数型表达式的实部/虚部abs - 函数argument - 复数的幅角函数conjugate - 返回共轭复数csgn - 实数和复数表达式的符号函数signum - 实数和复数表达式的sign 函数5 1.2 MAPLE 常数已知的变量名称指数常数(以自然对数为底)I - x^2 = -1 的根infinity 无穷大1.3 整数函数! - 阶乘函数irem, iquo - 整数的余数/商isprime - 素数测试isqrfree - 无整数平方的因数分解max, min - 数的最大值/最小值mod, modp, mods - 计算对m 的整数模rand - 随机数生成器randomize - 重置随机数生成器1.4 素数Randpoly, Randprime - 有限域的随机多项式/首一素数多项式ithprime - 确定第i 个素数nextprime, prevprime - 确定下一个最大/最小素数1.5 数的进制转换convert/base - 基数之间的转换convert/binary - 转换为二进制形式convert/decimal - 转换为10 进制convert/double - 将双精度浮点数由一种形式转换为另一种形式convert/float - 转换为浮点数convert/hex - 转换为十六进制形式convert/metric - 转换为公制单位convert/octal - 转换为八进制形式1.6 数的类型检查type - 数的类型检查函数第2xx 初等数学2.1 初等函数product - 确定乘积求和不确定乘积exp - 指数函数sum - 确定求和不确定求和sqrt - 计算xx算术运算符+, -, *, /, ^add, mul - 值序列的加法/乘法2.2 三角函数arcsin, arcsinh, . - 反三角函数/反双曲函数sin, sinh, . - 三角函数/双曲函数2.3 LOGARITHMS 函数dilog - Dilogarithm 函数ln, log, log10 - 自然对数/一般对数,常用对数2.4 类型转换convert/`+`,convert/`*` - 转换为求和/乘积convert/hypergeom - 将求和转换为超越函数convert/degrees - 将弧度转换为度convert/expsincos - 将trig 函数转换为exp, sin, cos convert/Ei - 转换为指数积分convert/exp - 将trig 函数转换为指数函数convert/ln - 将arctrig 转换为对数函数polar - 转换为极坐标形式convert/radians - 将度转换为弧度convert/sincos - 将trig 函数转换为sin, cos, sinh, cosh convert/tan - 将trig 函数转换为tanconvert/trig - 将指数函数转换为三角函数和双曲函数第3xx 求值3.1 假设功能3.2 求值Eval - 对一个表达式求值eval - 求值evala - 在代数数(或者函数)域求值evalb - 按照一个求值evalc - 在复数域上符号求值evalf - 使用浮点算法求值evalhf - 用硬件浮点数算法对表达式求值evalm - 对矩阵表达式求值evaln - 求值到一个名称evalr, shake - 用区间算法求表达式的值和计算范围evalrC - 用复数区间算法对表达式求值value - 求值的惰性函数第4xx 求根,xx4.1 数值解fsolve - 利用浮点数算法求解solve/floats - 包含浮点数的表达式4.2 最优化extrema - 寻找一个表达式的相对极值minimize, maximize - 计算最小值/最大值maxnorm - 一个多项式无穷大范数4.3 求根allvalues -计算含有RootOfs的表达式的所有可能值isqrt, iroot - 整数的xx/第n 次根realroot - 一个多项式的实数根的隔离区间root - 一个代数表达式的第n 阶根RootOf - 方程根的表示surd - 非主根函数roots - 一个多项式对一个变量的精确根turm, sturmseq - 多项式在区间上的实数根数和实根序列4.4 xxeliminate - 消去一个方程组中的某些变量isolve - 求解方程的整数解solvefor - 求解一个方程组的一个或者多个变量isolate - 隔离一个方程左边的一个子表达式singular - 寻找一个表达式的极点solve/identity - 求解包含属性的表达式solve/ineqs - 求解不等式solve/linear - 求解线性方程组solve/radical - 求解含有未知量根式的方程solve/scalar - 标量情况(单变量和方程)solve/series - 求解含有一般级数的方程solve/system - 解方程组或不等式组第5xx 操作表达式5.1 处理表达式Norm - 代数数(或者函数) 的标准型Power - 惰性幂函数Powmod -带余数的惰性幂函数Primfield - 代数域的原始元素Trace - 求一个代数数或者函数的迹charfcn - 表达式和集合的特征函数Indets - 找一个表达式的变元invfunc - 函数表的逆powmod - 带余数的幂函数Risidue - 计算一个表达式的代数余expand - 表达式展开Expand - 展开表达式的惰性形式expandoff/expandon - 抑制/不抑制函数展开5.2 因式分解Afactor - 绝对因式分解的惰性形式Afactors - 绝对因式分解分解项列表的惰性形式Berlekamp - 因式分解的Berlekamp 显式度factor - 多元的多项式的因式分解factors - 多元多项式的因式分解列表Factor - 函数factor 的惰性形式Factors - 函数factors 的惰性形式polytools[splits] - 多项式的完全因式分解第6xx 化简6.1 表达式化简118simplify - 给一个表达式实施化简规则simplify/@ - 利用运算符化简表达式simplify/Ei - 利用指数积分化简表达式simplify/GAMMA - 利用GAMMA 函数进行化简simplify/RootOf - 用RootOf 函数化简表达式simplify/wronskian - 化简含wronskian 的表达式simplify/hypergeom - 化简超越函数表达式simplify/ln - 化简含有对数的表达式simplify/piecewise - 化简分段函数表达式simplify/polar - 化简含有极坐标形式的复数型表达式simplify/power - 化简含幂次的表达式simplify/radical - 化简含有根式的表达式simplify/rtable - 化简rtable 表达式simplify/siderels - 使用关系式进行化简simplify/sqrt - 根式化简simplify/trig - 化简trig 函数表达式simplify/zero - 化简含嵌入型实数和虚数的复数表达式6.2 其它化简操作Normal - normal 函数的惰性形式convert - 将一个表达式转换成不同形式radnormal - 标准化一个含有根号数的表达式rationalize - 分母有理化第7xx 操作多项式7.0 MAPLE 中的多项式简介7.1 提取coeff - 提取一个多项式的系数coeffs - 提取多元的多项式的所有系数coeftayl - 多元表达式的系数lcoeff, tcoeff - 返回多元多项式的首项和末项系数7.2 多项式约数和根gcd, lcm - 多项式的最大公约数/最小公倍数psqrt, proot - 多项式的xx和第n次根rem,quo - 多项式的余数/商7.3 操纵多项式convert/horner - 将一个多项式转换成Horner形式collect - 象幂次一样合并系数convert/polynom - 将级数转换成多项式形式convert/mathorner - 将多项式转换成Horner矩阵形式convert/ratpoly - 将级数转换成有理多项式sort - 将值的列表或者多项式排序sqrfree - 不含平方项的因数分解函数7.4 多项式运算discrim - 多项式的判别式fixdiv - 计算多项式的固定除数norm - 多项式的标准型resultant - 计算两个多项式的终结式bernoulli - Bernoulli 数和多项式bernstein - 用Bernstein多项式近似一个函数content, primpart - 一个多元的多项式的内容和主部degree, ldegree - 一个多项式的最高次方/最低次方divide - 多项式的精确除法euler - Euler 数和多项式icontent - 多项式的整数部分interp - 多项式的插值prem, sprem - 多项式的pseudo 余数和稀疏pseudo 余数randpoly - 随机多项式生成器spline - 计算自然样条函数第8xx 有理表达式8.0 有理表达式简介8.1 操作有理多项式numer,denom - 返回一个表达式的分子/分母frontend - 将一般的表达式处理成一个有理表达式normal - 标准化一个有理表达式convert/parfrac - 转换为部分分数形式convert/rational - 将浮点数转换为接近的有理数ratrecon - 重建有理函数第9xx 微积分9.1 取极限Limit, limit - 计算极限limit[dir] - 计算方向极限limit[multi] - 多重方向极限limit[return] - 极限的返回值9.2 连续性测试discont - 寻找一个函数在实数域上的间断点fdiscont - 用数值法寻找函数在实数域上的间断点iscont - 测试在一个区间上的连续性9.3 微分计算D - 微分算子D, diff - 运算符D 和函数diffdiff, Diff - 微分或者偏微分convert/D - 将含导数表达式转换为D运算符表达式convert/diff - 将D(f)(x)表达式转换为diff(f(x),x)的形式implicitdiff - 由一个方程定义一个函数的微分9.4 积分计算Si, Ci … - 三角和双曲积分Dirac, Heaviside - Dirac 函数/Heaviside阶梯函数Ei - 指数积分Elliptic -FresnelC, … - Fresnel 正弦,xx积分和辅助函数int, Int - 定积分和不定积分LegendreP, … - Legendre 函数及其第一和第二类函数Li - 对数积分student[changevar] - 变量代换dawson - Dawson 积分ellipsoid - 椭球体的表面积evalf(int) - 数值积分intat, Intat - 在一个点上积分求值第10xx 微分方程10.1 微分方程分类odeadvisor - ODE-求解分析器DESol - 表示微分方程解的pdetest - 测试pdsolve 能找到的偏微分方程(PDEs)解10.2 常微分方程求解dsolve - 求解常微方程(ODE)dsolve - 用给定的求解ODE 问题dsolve/inttrans - 用积分变换方法求解常微分方程dsolve/numeric - 常微方程数值解dsolve/piecewise - 带分段系数的常微方程求解dsolve - 寻找ODE 问题的级数解dsolve - 求解ODEs 方程组odetest - 从ODE 求解器中测试结果是显式或者隐式类型10.3 偏微分方程求解pdsolve - 寻找偏微分方程(PDEs) 的解析解第11xx 数值计算11.1 MAPLE 中的数值计算环境IEEE 标准和Maple数值计算数据类型特殊值环境变量11.2 算法标准算法复数算法含有0,无穷和未定义数的算法11.3 数据构造器254Float, … - 浮点数及其构造器Fraction - 分数及其的构造器integer - 整数和整数构造器11.4 MATLAB 简介11.5 “”区间类型表达式第12xx级数12.1 幂级数的阶数Order - 阶数项函数order - 确定级数的截断阶数12.2 常见级数展开series - 一般的级数展开taylor - Taylor 级数展开mtaylor - 多元Taylor级数展开poisson - Poisson级数展开.26812.3 其它级数eulermac - Euler-Maclaurin求和piecewise - 分段连续函数asympt - 渐进展开第13xx 特殊函数AiryAi, AiryBi - Airy 波动函数AiryAiZeros, AiryBiZeros - Airy函数的实数零点AngerJ, WeberE - Anger函数和Weber函数BesselI, HankelH1, … - Bessel函数和Hankel函数BesselJZeros, … - Bessel函数实数零点Beta - Beta函数EllipticModulus - 模数函数k(q)GAMMA, lnGAMMA - 完全和不完全Gamma函数GaussAGM - Gauss 算术的几何平均数JacobiAM, ., - Jacobi 振幅函数和JacobiTheta1, JacobiTheta4 - Jacobi theta函数JacobiZeta - Jacobi 的Zeta函数KelvinBer, KelvinBei - Kelvin函数KummerM, - Kummer M函数和U函数LambertW - LambertW函数LerchPhi - 一般的Lerch Phi函数LommelS1, LommelS2 - Lommel函数MeijerG - 一个xx的Meijer G函数Psi - Digamma 和Polygamma函数StruveH, StruveL - Struve函数WeierstrassP - Weierstrass P函数及其导数WhittakerM - Whittaker 函数Zeta - Zeta 函数erf, … - 误差函数,补充的误差函数和虚数误差函数harmonic - 调和函数hypergeom - xx的超越函数pochhammer - 一般的pochhammer函数polylog - 一般的polylogarithm函数第14xx 线性代数14.1 ALGEBRA(代数)中矩阵,矢量和14.2 LINALG 软件包简介14.3 数据结构矩阵matrices(小写)矢量vectors(矢量)convert/matrix - 将数组,列表,Matrix 转换成matrixconvert/vector - 将列表,数组或Vector 转换成矢量vectorlinalg[matrix] - 生成矩阵matrix(小写)linalg[vector] - 生成矢量vector(小写)14.4 惰性函数Det - 惰性行列式运算符Eigenvals - 数值型矩阵的特征值和特征向量Hermite, Smith - 矩阵的Hermite 和Smith 标准型14.5 LinearAlgebra函数Matrix 定义矩阵Add 加/减矩阵Adjoint 伴随矩阵BackwardSubstitute 求解A . X = B,其中A 为上三角型行阶梯矩阵BandMatrix 带状矩阵Basis 返回向量空间的一组基SumBasis 返回向量空间直和的一组基IntersectionBasis 返回向量空间交的一组基BezoutMatrix 构造两个多项式的Bezout 矩阵BidiagonalForm 将矩阵约化为双对角型CharacteristicMatrix 构造特征矩阵CharacteristicPolynomial 构造矩阵的特征多项式CompanionMatrix 构造一个首一(或非首一)多项式或矩阵多项式的xx (xx)ConditionNumber 计算矩阵关于某范数的条件数ConstantMatrix 构造常数矩阵ConstantVector 构造常数向量Copy 构造矩阵或向量的一份复制CreatePermutation 将一个NAG 主元向量转换为一个置换向量或矩阵CrossProduct 向量的叉积`&x` 向量的叉积DeleteRow 删除矩阵的行DeleteColumn 删除矩阵的列Determinant 行列式Diagonal 返回从矩阵中得到的向量序列DiagonalMatrix 构造(分块)Dimension 行数和列数DotProduct 点积BilinearForm 向量的双线性形式EigenConditionNumbers 计算数值特征值制约问题的特征值或特征向量的条件数Eigenvalues 计算矩阵的特征值Eigenvectors 计算矩阵的特征向量Equal 比较两个向量或矩阵是否相等ForwardSubstitute 求解A . X = B,其中A 为下三角型行阶梯矩阵FrobeniusForm 将一个方阵约化为Frobenius 型(有理标准型)GaussianElimination 对矩阵作消元ReducedRowEchelonForm 对矩阵作xx-约当消元GetResultDataType 返回矩阵或向量运算的结果数据类型GetResultShape 返回矩阵或向量运算的结果形状GivensRotationMatrix 构造Givens 旋转的矩阵GramSchmidt 计算一个正交向量集HankelMatrix 构造一个Hankel 矩阵HermiteForm 计算一个矩阵的Hermite 正规型HessenbergForm 将一个方阵约化为上Hessenberg 型HilbertMatrix 构造xx Hilbert 矩阵HouseholderMatrix 构造Householder 反射矩阵IdentityMatrix 构造一个单位矩阵IsDefinite 检验矩阵的正定性,负定性或不定性IsOrthogonal 检验矩阵是否正交IsUnitary 检验矩阵是否为酉矩阵IsSimilar 确定两个矩阵是否相似JordanBlockMatrix 构造约当块矩阵JordanForm 将矩阵约化为约当型KroneckerProduct 构造两个矩阵的Kronecker xxLeastSquares 方程的最小二乘解LinearSolve 求解线性方程组A . x = bMap 将一个程序映射到一个表达式上,对矩阵和向量在原位置上进行处理MatrixAdd 计算两个矩阵的线性组合VectorAdd 计算两个向量的线性组合MatrixExponential 确定一个矩阵A 的矩阵指数exp(A)MatrixFunction 确定方阵A 的函数F(A)MatrixInverse 计算方阵的逆或矩阵的Moore-Penrose 伪逆MatrixMatrixMultiply 计算两个矩阵的乘积MatrixVectorMultiply 计算一个矩阵和一个列向量的乘积VectorMatrixMultiply 计算一个行向量和一个矩阵的乘积MatrixPower 矩阵的幂MinimalPolynomial 构造矩阵的最小多项式Minor 计算矩阵的子式Multiply 矩阵相乘Norm 计算矩阵或向量的p-范数MatrixNorm 计算矩阵的p-范数VectorNorm 计算向量的p-范数Normalize 向量正规化NullSpace 计算矩阵的零度零空间OuterProductMatrix 两个向量的外积Permanent 方阵的不变量Pivot 矩阵元素的主元消去法PopovForm Popov 正规型RandomMatrix 构造RandomVector 构造随机向量Rank 计算Row 返回矩阵的一个行向量序列Column 返回矩阵的一个列向量序列RowOperation 对矩阵作初等行变换ColumnOperation 对矩阵作出等列变换RowSpace 返回矩阵行空间的一组基ColumnSpace 返回矩阵列空间的一组基ScalarMatrix 构造一个单位矩阵的数量倍数ScalarVector 构造一个单位向量的数量倍数ScalarMultiply 矩阵与数的乘积MatrixScalarMultiply 计算矩阵与数的乘积VectorScalarMultiply 计算向量与数的乘积SchurForm 将方阵约化为Schur 型SingularValues 计算矩阵的奇异值SmithForm 将矩阵约化为Smith 正规型StronglyConnectedBlocks 计算方阵的强连通块SubMatrix 构造矩阵的子矩阵SubVector 构造向量的子向量SylvesterMatrix 构造两个多项式的Sylvester 矩阵ToeplitzMatrix 构造Toeplitz 矩阵Trace 计算方阵的迹TransposeHermitianTranspose 共轭转置矩阵TridiagonalForm 将方阵约化为三对角型UnitVector 构造单位向量VandermondeMatrix 构造一个Vandermonde 矩阵VectorAngle 计算两个向量的夹角ZeroMatrix 构造一个零矩阵ZeroVector 构造一个零向量Zip 将一个具有两个参数的程序作用到一对矩阵或向量上LinearAlgebra[Generic] 子函数包[Generic] 子函数包提供作用在场,域,积分域和环上的线性代数算法。
第4章-方程求解(Maple中文教程)
第4章-⽅程求解(Maple中⽂教程)第四章⽅程求解1 代数⽅程(组)求解1.1 常⽤求解⼯具—solve求解代数⽅程或代数⽅程组, 使⽤Maple 中的solve 函数. 求解关于x 的⽅程eqn=0的命令格式为:solve(eqn, x);求解关于变量组vars 的⽅程组eqns 的命令为:solve(eqns, vars);> eqn:=(x^2+x+2)*(x-1);:= eqn () + + x 2x 2() ? x 1> solve(eqn,x);,,1? + 1212I 7? ? 1212I 7 当然, solve 也可以求解含有未知参数的⽅程:> eqn:=2*x^2-5*a*x=1;:= eqn = ? 2x 25a x 1 > solve(eqn,x);, + 54a 14 + 25a 28 ? 54a 14 + 25a 28 solve 函数的第⼀个参数是有待求解的⽅程或⽅程的集合, 当然也可以是单个表达式或者表达式的集合, 如下例:> solve(a+ln(x-3)-ln(x),x);3e a+ 1ea 对于第⼆个参数, Maple 的标准形式是未知变量或者变量集合, 当其被省略时, 函数indets ⾃动获取未知变量. 但当⽅程中含有参数时, 则会出现⼀些意想不到的情况: > solve(a+ln(x-3)-ln(x));{}, = x x = a ? + ()ln ? x 3()ln x很多情况下, 我们知道⼀类⽅程或⽅程组有解, 但却没有解决这类⽅程的⼀般解法, 或者说没有解析解. ⽐如, ⼀般的五次或五次以上的多项式, 其解不能写成解析表达式. Maple 具备⽤所有⼀般算法尝试所遇到的问题, 在找不到解的时候, Maple 会⽤RootOf 给出形式解.> x^7-2*x^6-4*x^5-x^3+x^2+6*x+4;+ + + x 72x 64x 5x 3x 26x 4> solve(%); + 15 ? 15()RootOf , ? ? _Z 5_Z 1 = index 1()RootOf , ? ? _Z 5_Z 1 = index 2(RootOf ,) ? ? _Z 5_Z 1 = index 3,,,, ()RootOf , ? ? _Z 5_Z 1 = index 4()RootOf , ? ? _Z 5_Z 1 = index 5,,> solve(cos(x)=x,x);()RootOf ? _Z ()cos _Z对于⽅程组解的个数可⽤nops 命令获得, 如:> eqns:={seq(x[i]^2=x[i],i=1..7)};:= eqns {,,,,,, = x 12x 1 = x 22x 2 = x 32x 3 = x 42x 4 = x 52x 5 = x 62x 6 = x 72x 7} > nops({solve(eqns)});128但是, 有时候, Maple 甚⾄对⼀些“显⽽易见”的结果置之不理, 如:> solve(sin(x)=3*x/Pi,x);()RootOf ? 3_Z ()sin _Z π此⽅程的解为0 ,6π±, 但Maple 却对这个超越⽅程⽆能为⼒, 即便使⽤allvalues求解也只有下述结果:> allvalues(%);()RootOf , ? 3_Z ()sin _Z π0.另外⼀个问题是, Maple 在求解⽅程之前,会对所有的⽅程或表达式进⾏化简, ⽽不管表达式的类型, 由此⽽产⽣⼀些低级的错误: > (x-1)^2/(x^2-1);() ? x 12x 21> solve(%);1但是, ⼤量实验表明, solve 的确是⼀个实⽤的⽅程求解⼯具, 但是也不可盲⽬相信它给出的⼀切结果, 特别是对于⾮线性⽅程⽽⾔, 对于给出的结果需要加以验证.下⾯通过⼏个例⼦说明在Maple 中⾮线性⽅程组的求解问题.例:求解⽅程组: ?=?=+y x y x 925222> eqns:={x^2+y^2=25,y=x^2-5};:= eqns {}, = y ? x 25 = + x 2y 225> vars:={x,y};:= vars {},x y> solve(eqns,vars);,,,{}, = x 0 = y -5{}, = x 0 = y -5{}, = y 4 = x 3{}, = y 4 = x -3也可⽤下⾯的语句⼀步求出:> solve({x^2+y^2=25,y=x^2-5},{x,y});,,,{}, = x 0 = y -5{}, = x 0 = y -5{}, = y 4 = x 3{}, = y 4 = x -3这个问题⾮常简单, 但通常遇到的⾮线性问题却不是这么简单, 例如要求解⽅程组:y x y x y x ?=+=+,122> eqns:={x^2+y^2=1,sqrt(x+y)=x-y}; vars:={x,y};:= eqns {}, = + x 2y 21 = + x y ? x y:= vars {},x y> sols:=solve(eqns,vars);sols = y ()RootOf , + + 2_Z 24_Z 3 ? -1.000000000.7071067812I ,{ := = x ? ? ()RootOf , + + 2_Z 24_Z 3 ? -1.000000000.7071067812I 2}{}, = x 1 = y 0,可以看出, ⽅程解的形式是以集合的序列给出的, 序列中的每⼀个集合是⽅程的⼀组解, 这样就很利于我们⽤subs 把解代⼊原⽅程组进⾏检验:> subs(sols[2],eqns);{} = 11> sols2:=allvalues(sols[1]);:= sols2{}, = x ? + 11I 2 = y ? ? 11I 2 > simplify(subs(sols2,eqns));{}, = I 2I 2 = 111.2 其他求解⼯具1.2.1 数值求解对于求代数⽅程的数值解问题, Maple 提供了函数fsolve , fsolve 的使⽤⽅法和solve 很相似:fsolve(eqns, vars, options);其中, eqns 表⽰⼀个⽅程、⽅程组或者⼀个程序, vars 表⽰⼀个未知量或者未知量集合, options 控制解的参数(诸如:complex:复根; maxsols=n :只找到n 阶最⼩根; intervals :在给定闭区间内求根, 等).> fsolve(x^5-x+1,x);-1.167303978> fsolve(x^5-x+1,x,complex);-1.167303978 ? -.1812324445 1.083954101I + -.1812324445 1.083954101I ? .7648844336.3524715460I ,,, +.7648844336.3524715460I ,> fsolve(x^3-3*x+1,x,0..1);.3472963553对于多项式⽅程, fsolve 在默认情况下以给出所有的实数解, 如果附加参数complex , 就可以给出所有的解. 但对于更⼀般的其他形式的⽅程, fsolve 却往往只满⾜于得到⼀个解:> eqn:=sin(x)=x/2;:= eqn = ()sin x 12x > fsolve(eqn);0.> fsolve(eqn,x,0.1..infinity);1.895494267> fsolve(eqn,x,-infinity..-0.1);-1.895494267函数fsolve 主要基于两个算法, 通常使⽤⽜顿法, 如果⽜顿法⽆效, 它就改⽽使⽤切线法. 为了使fsolve 可以求得所有的实根, 我们通常需要确定这些根所在的区间. 对于单变量多项式, 函数realroot 可以获得多项式的所有实根所在的区间.> 4+6*x+x^2-x^3-4*x^5-2*x^6+x^7;+ + ? ? ? + 46x x 2x 34x 52x 6x 7> realroot(%);[],,[],02[],24[],-2-1函数realroot 还有⼀个可选参数, 它是⽤来限制区间的最⼤长度的, 为了保证使⽤数值求解⽅法时收敛, 我们可以⽤它限制区间的最⼤长度:> realroot(%%,1/1000);,,,1195299,33131657,-633-1265 求解⽅程或⽅程组的整数解时使⽤函数isolve , 它常常被⽤来求解不定⽅程. 例如著名的“百钱买百鸡”问题?的求解过程为:> isolve({x+y+z=100,5*x+3*y+z/3=100});{},, = z + 753_Z1 = x 4_Z1 = y ? 257_Z1据此可得满⾜该问题的三组解为:{x, y, z}={4, 18, 78}, {x, y, z}={8, 11, 81}, {x, y, z}={12, 4, 84}1.2.2 整数环中的⽅程(组)求解利⽤Maple 中的函数msolve(eqns, vars, n), 可以在模n 的整数环中求解⽅程(组)eqns.例:在Z 7中求解Pell ⽅程2837?=x y > msolve(y^7=x^3-28,7);{}, = x 3 = y 6{}, = x 4 = y 1{}, = y 0 = x 0{}, = x 1 = y 1{}, = y 6 = x 6,,,,,{}, = x 2 = y 1{}, = y 6 = x 5, 再如下例:> msolve(y^4=x^3+32,5);,,,,{}, = x 2 = y 0{}, = x 4 = y 1{}, = x 4 = y 2{}, = x 4 = y 3{}, = x 4 = y 41.2.3 递归⽅程的求解在Maple 中, 可以求解有限差分⽅程(也称递归⽅程), 所需调⽤的函数是rsolve , 该函数使⽤的是⼀些⽐较通⽤的⽅法, 例如产⽣函数法、z 变换法以及⼀些基于变量替换和特征⽅程的⽅法. 作为例⼦, 求解Fibonacci 多项式:> eq:=f(n)=f(n-1)+2*f(n-2);:= eq = ()f n + ()f ? n 12()f ? n 2> rsolve({eq,f(0)=1,f(1)=1},f(n)); + 13()-1n 232n 当然, 并不是所有的递归形式的函数⽅程的解可以写成解析形式, 如果不能, Maple 将保留原来的调⽤形式. 此时, 可⽤asympt 函数获得它的渐进表达式, 也就是1/n 的级数解. 例如, 对于⼀个具有超越形式的递归函数⽅程, 仍然可以得到解的渐进形式: ? 百钱买百鸡问题:⽤100元钱买100只鸡, ⼤公鸡5元钱1只, ⼤母鸡3元钱1只, ⼩鸡1元钱3只, 问如何买法?> rsolve(u(n+1)=ln(u(n)+1),u(n));()rsolve , = ()u + n 1()ln + ()u n 1()u n> asympt(%,n,5);+ + + 21n + _C 23()ln n n 2 ? + ? + 1913_C 12_C 2 + 23_C 29()ln n 29()ln n 2n 3????????O 1n 41.2.4 不等式(组)求解求解⼀元不等式⽅程(组)使⽤命令solve :> solve((x-1)*(x-2)*(x-3)<0,x);,()RealRange ,?∞()Open 1()RealRange ,()Open 2()Open 3> solve((x-1+a)*(x-2+a)*(x-3+a) < 0, {x});,{} < x ? 1a {}, < ? 2a x < x ? 3a> solve(exp(x)>x+1);,()RealRange ,?∞()Open 0()RealRange ,()Open 0∞> solve({x^2*y^2=0,x-y=1,x<>0});,{}, = y 0 = x 1{}, = y 0 = x 1对于由不等式⽅程组约束的最优问题的求解使⽤“线性规则”⼯具包simplex : > with(simplex):> cnsts:={3*x+4*y-3*z<=23, 5*x-4*y-3*z<=10,7*x+4*y+11*z<=30};:= cnsts {,, ≤ } + ? 3x 4y 3z 23 ≤ ? ? 5x 4y 3z 10 ≤ + + 7x 4y 11z 30 > obj:=-x+y+2*z;:= obj ? + + x y 2z> maximize(obj,cnsts union {x>=0,y>=0,z>=0});{},, = z 12 = y 498= x 0 2 常微分⽅程求解微分⽅程求解是数学研究与应⽤的⼀个重点和难点. Maple 能够显式或隐式地解析地求解许多微分⽅程求解. 在常微分⽅程求解器dsolve 中使⽤了⼀些传统的技术例如laplace 变换和积分因⼦法等, 函数pdesolve 则使⽤诸如特征根法等经典⽅法求解偏微分⽅程. 此外, Maple 还提供了可作摄动解的所有⼯具, 例如Poincare-Lindstedt 法和⾼阶多重尺度法.帮助处理常微分⽅程(组)的各类函数存于Detools 软件包中, 函数种类主要有:可视化类的函数, 处理宠加莱动态系统的函数, 调整微分⽅程的函数, 处理积分因⼦、李对称法和常微分⽅程分类的函数, 微分算⼦的函数, 利⽤可积性与微分消去的⽅法简化微分⽅程的函数, 以及构造封闭解的函数等. 更重要的是其提供的强⼤的图形绘制命令Deplot 能够帮助我们解决⼀些较为复杂的问题.2.1 常微分⽅程的解析解求解常微分⽅程最简单的⽅法是利⽤求解函数dsolve . 命令格式为:dsolve(ODE);dsolve(ODE, y(x), extra_args);dsolve({ODE, ICs}, y(x), extra_args);dsolve({sysODE, ICs}, {funcs}, extra_args);其中, ODE—常微分⽅程, y(x)—单变量的任意变量函数, Ics—初始条件, {sysODE}—ODE ⽅程组的集合, {funcs}—变量函数的集合, extra_args—依赖于要求解的问题类型.例如, 对于⼀阶常微分⽅程y xy y y x ?=′)ln(可⽤dsolve 直接求得解析解: > ODE:=x*diff(y(x),x)=y(x)*ln(x*y(x))-y(x);:= ODE = xx ()y x ? ()y x ()ln x ()y x ()y x > dsolve(ODE,y(x));= ()y x ex可以看出, dsolve 的第⼀个参数是待求的微分⽅程, 第⼆个参数是未知函数. 需要注意的是, ⽆论在⽅程中还是作为第⼆个参数,未知函数必须⽤函数的形式给出(即:必须加括号, 并在其中明确⾃变量), 这⼀规定是必须的, 否则Maple 将⽆法区分⽅程中的函数、⾃变量和参变量, 这⼀点和我们平时的书写习惯不⼀致. 为了使其与我们的习惯⼀致, 可⽤alias 将函数⽤别称表⽰:> alias(y=y(x));> ODE:=x*diff(y,x)=y*ln(x*y)-y;:= ODE = xx y ? y ()ln x y y > dsolve(ODE,y);= y ex _C1x函数dsolve 给出的是微分⽅程的通解, 其中的任意常数是⽤下划线起始的内部变量表⽰的.在Maple 中, 微分⽅程的解是很容易验证的, 只需要将解代⼊到原⽅程并化简就可以了.> subs(%,ODE);= xx e ??x _C1x ? e ??x _C1??ln e ??x _C1x e ??x_C1x > assume(x,real): assume(_C1,real):> simplify(%); = ?e x~_C1~()? + x~_C1~x~_C1~?e x~_C1~()? + x~_C1~x~_C1~> evalb(%);trueevalb 函数的⽬的是对⼀个包含关系型运算符的表达式使⽤三值逻辑系统求值, 返回的值是true, false 和FAIL. 如果⽆法求值, 则返回⼀个未求值的表达式. 通常包含关系型运算符“=, <>, <, <=, >, >=”的表达式在Maple 中看作是代数⽅程或者不等式. 然⽽, 作为参数传递给evalb 或者出现在if 或while 语句的逻辑表达式中时, 它们会被求值为true 或false. 值得注意的是, evalb 不化简表达式, 因此在使⽤evalb 之前应将表达式化简, 否则可能会出错. 再看下⾯常微分⽅程的求解:12+=′y y> alias(y=y(x)):> ODE:=diff(y,x)=sqrt(y^2+1);:=ODE = ??xy + y 21 > dsolve(ODE,y); = y ()sinh + x _C1函数dsolve 对于求解含有未知参变量的常微分⽅程也完全可以胜任:> alias(y=y(x)):> ODE:=diff(y,x)=-y/sqrt(a^2-y^2);:=ODE = ?y ?y ? a 2y 2> sol:=dsolve(ODE,y); := sol = + ? + x ? a 2y 2a 2ln + 2a 22a 2a 2y 2y a 2_C10由此可见, 对于不能表⽰成显式结果的微分⽅程解, Maple 尽可能将结果表⽰成隐式解. 另外, 对于平凡解y=0常常忽略, 这⼀点应该引起注意.dsolve 对于求解微分⽅程初值问题也⼗分⽅便的:> ODE:=diff(u(t),t$2)+omega^2*u(t)=0;:= ODE = +2t 2()u t ω2()u t 0 > dsolve({ODE,u(0)=u0,D(u)(0)=v0},u(t)); = ()u t + v0()sin ωt ωu0()cos ωt 2.2 利⽤积分变换求解微分⽅程对于特殊的微分⽅程, 我们还可以指定dsolve 利⽤积分变换⽅法求解, 只需要在dsolve 中加⼊可选参数method=transform 即可.其中transform 是积分变换, 可以是laplace 、fourier 、fouriercos 或者fouriersin 变换.作为例⼦, 我们来看⼀个具有阻尼的振⼦在阶跃冲击(Heaviside 函数)下的响应: >ODE:=diff(u(t),t$2)+2*d*omega*diff(u(t),t)+omega^2*u(t)=Heaviside(t);:= ODE = + + 2t 2()u t 2d ωt ()u t ω2()u t ()Heaviside t > initvals:=(u(0)=u[0],D(u)(0)=v[0]);:= initvals , = ()u 0u 0 = ()()D u 0v 0> solution:=dsolve({ODE,initvals},u(t),method=laplace);:= solution = ()u t + 1ωe ()?t d ω + () ? ω2u 01()cosh t ? d 2ω2ω2ω() + ? ωv 0d ω2u 0d ()sinh t ? d 2ω2ω2 ? d 2ω2ω2ωMaple 给出了问题的通解, 但没有区分⾃由振动(d=0)、⽋阻尼(01)的情况. 下⾯加以区分求解:> assume(omega>0):> simplify(subs(d=0,solution));= ()u t + ? + 1()cos t ωω2u 0()cos t ωv 0()sin t ωωω2> K:=subs(d=1/5,u[0]=1,v[0]=1,solution);:= K = ()u t + 1ωe ()?/15t ω + () ? ω21cosh t ?2425ω2ω + ? ω15ω215 sinh t ?2425ω2?2425ω2> with(plots):> plot3d(rhs(%%),omega=2/3..4/3,t=0..20,style=hidden,orientation=[-30,45],axes=framed);对于d=1的情况, 可可⽤下式获得结果:> limit(rhs(solution),d=1);() + ? + ? + ω2u 0ω2v 0t 1ω3u 0t t ωe()t ωe ()?t ωω2再如下例:> diff(u(t),t$2)+3*diff(u(t),t)+2*u(t)=exp(-abs(t));= + +2t 2()u t 3?()u t 2()u t e ()?t > dsolve(%,u(t),method=fourier);= ()u t + + ? 23e ()?2t ()Heaviside t 16e t ()Heaviside ?t e ()?t t ()Heaviside t 12e ()?t ()Heaviside t2.3 常微分⽅程组的求解函数dsolve 不仅可以⽤来求解单个常微分⽅程, 也可以求解联⽴的常微分⽅程组. 特别是对于线性微分⽅程组, 由于数学上具有成熟的理论, Maple 的求解也是得⼼应⼿. 其命令格式为:dsolve( {eqn1, eqn2, …, ini_conds}, {vars});其中, ini_conds 是初始条件.> eqn1:={diff(x(t),t)=x(t)+y(t),diff(y(t),t)=y(t)-x(t)};:= eqn1{, = }??t ()x t + ()x t ()y t = ??t()y t ? ()y t ()x t > dsolve(eqn1,{x(t),y(t)});{, = ()x t e }t () + _C1()sin t _C2()cos t = ()y t e t () ? _C1()cos t _C2()sin t >eqn2:=2*diff(x(t),t$2)+2*x(t)+y(t)=2*t;:= eqn2 = + + 22t 2()x t 2()x t ()y t 2t > eqn3:=diff(y(t),t$2)+2*x(t)+y(t)=t^2+1;:= eqn3 = + +2t 2()y t 2()x t ()y t + t 21 > dsolve({eqn2, qn3, x(0)=0, D(x)(0)=1, y(0)=0, D(y)(0)=0}, {x(t),y(t)} ); = ()x t + ? + 18()sin 2t 2112t 3148t 434t ,{ = ()y t ? + ? + 14()sin 2t 212t 12t 216t 3124t 4} 2.4 常微分⽅程的级数解法1) 泰勒级数解法当⼀个常微分⽅程的解析解难以求得时, 可以⽤Maple 求得⽅程解的级数近似, 这在⼤多数情况下是⼀种⾮常好的⽅法. 级数解法是⼀种半解析半数值的⽅法. 泰勒级数法的使⽤命令为:dsolve({ODE,Ics}, y(x), 'series'); 或dsolve({ODE,Ics}, y(x), 'type=series');下⾯求解物理摆的⼤幅振动⽅程:θθsin g l ?=, 其中l 是摆长,θ是摆⾓, g 是重⼒加速度.> ODE:=l*diff(theta(t),t$2)=-g*sin(theta(t)); := ODE = l2t 2()θt ?g ()sin ()θt > initvals:=theta(0)=0,D(theta)(0)=v[0]/l; := initvals , = ()θ00 = ()()D θ0v 0l> sol:=dsolve({ODE,initvals},theta(t),type=series);:= sol = ()θt ? + + v 0l t 16g v 0l 2t 31120g v 0() + v 02g l l4t 5()O t 6 > Order:=11:> sol:=dsolve({ODE,initvals},theta(t),type=series); := sol = ()θt ? + ? + + v 0t 1g v 0l 2t 31g v 0() + v 02g l l 4t 51g v 0() + + 11g l v 02g 2l 2v 04l 6t 71g v 0() + + + 57g v 04l 102g 2v 02l 2g 3l 3v 06l 8t9()O t 112) 幂级数解法对于⼀个符号代数系统来说, 幂级数是必不可少的微分⽅程求解⼯具. 幂级数求解函数powsolve 存于⼯具包powseries 中. 但是, 这⼀求解函数的使⽤范围很有限, 它只可以⽤来求解多项式系数的线性常微分⽅程或⽅程组,其求解命令为:powseries[function] (prep)或直接载⼊软件包后⽤function(prep), prep 为求解的线性微分⽅程及其初值.例:求解:042=+′′+′y x y y x > ODE:=x*diff(y(x),x$2)+diff(y(x),x)+4*x^2*y(x)=0;:= ODE = + + x2x 2()y x ??x ()y x 4x 2()y x 0 > dsolve(ODE,y(x));= ()y x + _C1BesselJ ,043x ()/32_C2??????BesselY ,043x ()/32 > initvals:=y(0)=y0,D(y)(0)=0;:= initvals , = ()y 0y0 = ()()D y 00> with(powseries):> sol:=powsolve({ODE,initvals});:= sol proc ()... end proc powparm> tpsform(sol,x,16);+ + + y049y0x 3481y0x 6166561y0x 9459049y0x 121613286025y0x 15()O x 16 也可以⽤powsolve 给出的函数直接获得⽤递归形式定义的幂级数系数, 不过参数必须⽤_k , 这是powsolve 使⽤的临时变量.> sol(_k);4()a _k 3_k2 例:求解⼀维谐振⼦的解:0)(2=?+′′y x y ε> alias(y=y(x)):> ODE:=diff(y,x$2)+(epsilon-x^2)*y=0;:= ODE = +2x 2y () ? εx 2y 0 > H:=powsolve(ODE);:= H proc ()... end proc powparm> tpsform(H,x,8);C0C1x 12εC0x 216εC1x 3 + 124ε2C0112C0x 4+ 1120ε2C1120C1x 5????????? ? 130ε + 124ε2C0112C0160εC0 + ? ? + + + x 6????????? ? 1ε + 1ε2C11C11εC1x 7()O x 8 + +> H(_k);ε()a ? _k 2(a ) ? _k 4_k ()_k 1 2.5 常微分⽅程的数值解法在对微分⽅程的解析解失效后, 可以求助于数值⽅法求解微分⽅程. 数值求解的好处是只要微分⽅程的条件⾜够多时⼀般都可求得结果, 然⽽所得结果是否正确则必须依赖相关数学基础加以判断. 调⽤函数dsolve 求常微分⽅程初值问题的数值解时需加⼊参数type=numeric .另⼀⽅⾯, 常微分⽅程初值问题数值求解还可以选择算法, 加⼊参数“method=⽅法参数”即可, ⽅法参数主要有:rkf45:4~5阶变步长Runge-Kutta-Fehlberg 法dverk78:7~8阶变步长Runge-Kutta-Fehlberg 法classical :经典⽅法, 包括向前欧拉法, 改进欧拉法, 2、3、4阶龙格库塔法,Sdams-Bashford ⽅法等gear :吉尔单步法mgear :吉尔多步法2.5.1变步长龙格库塔法下⾯⽤4~5阶Runge-Kutta-Fehlberg 法求解van der Pol ⽅程:=′==+′??′′1.0)0(,0)0(0)1(2y y y y y y > ODE:=diff(y(t),t$2)-(1-y(t)^2)*diff(y(t),t)+y(t)=0;:= ODE = ? + 2t 2()y t () ? 1()y t 2t ()y t ()y t 0> initvals:=y(0)=0,D(y)(0)=-0.1;:= initvals , = ()y 00 = ()()D y 0-.1> F:=dsolve({ODE,initvals},y(t),type=numeric);:= F proc ()... end proc rkf45_x此时, 函数返回的是⼀个函数, 可以在给定的数值点上对它求值:> F(0);,, = t 0. = ()y t 0. = t ()y t -.1 > F(1);,, = t 1. = ()y t -.144768589749425608 = ??t ()y t -.178104066128215944 可以看到, F 给出的是⼀个包括t 、y(t)、D(y)(t)在内的有序表, 它对于每⼀个时间点可以给出⼀组数值表达式. 有序表的每⼀项是⼀个等式, 可对其作图描述. >plot('rhs(F(t)[2])', t=0..15, title="solution of the Van de Pol's Equation");> plots[odeplot](F,[t,y(t)],0..15,title="solution of the Van de Pol's Equation");2.5.2吉尔法求解刚性⽅程在科学和⼯程计算中, 常常会遇到这样⼀类常微分⽅程问题, 它可以表⽰成⽅程组:00)(),,(y t y y t f y ==′, 称其为刚性⽅程, 其解的分量数量相差很⼤, 分量的变化速度也相差很⼤. 如果⽤常规⽅法求解, 为了使变量有⾜够⾼的精度, 必须取很⼩的步长, ⽽为了使慢变分量达到近似的稳态解, 则需要很长的时间, 这样⽤⼩步长⼤时间跨度的计算, 必定造成庞⼤的计算量, ⽽且会使误差不断积累. 吉尔法是专门⽤来求解刚性⽅程的⼀种数值⽅法.> ODE:=diff(u(t),t)=-2000*u(t)+999.75*v(t)+1000.25,diff(v(t),t)=u(t)-v(t);:=ODE , = ??t ()u t ? + + 2000()u t 999.75()v t 1000.25 = ??t()v t ? ()u t ()v t > initvals:=u(0)=0,v(0)=-2; := initvals , = ()u 00 = ()v 0-2> ansl:=dsolve({ODE,initvals},{u(t),v(t)},type=numeric,method=gear);:= ansl proc ()... end proc x_gear> ansl(10,0);[,, = t 10.] = ()u t .989893921726687442 = ()v t .979787842765888594 > p1:=plots[odeplot] (ansl,[t,u(t)],0..20,color=red):p2:=plots[odeplot] (ansl,[t,v(t)],0..20,color=blue):plots[display] ({p1,p2}, title="Solution of a stiff equation");2.5.3 经典数值⽅法Maple中常微分⽅程数值解法中有⼀类被称作是“经典”(classical)⽅法. 当然, 称其为经典⽅法不是因为它们常⽤或是精度⾼, ⽽是因为它们的形式简单, 经常被⽤于计算⽅法课上的教学内容. 它们是⼀些常见的固定步长⽅法, 在dsolve中⽤参数method=classical[⽅法名称], 如果不特别指出, 将默认采⽤向前欧拉法. 主要有:foreuler:向前欧拉法(默认)hunform:Heun公式法(梯形⽅法, 改进欧拉法)imply:改进多项式法rk2:⼆阶龙格库塔法rk3:三阶龙格库塔法rk4:四阶龙格库塔法adambash:Adams-Bashford⽅法(预测法)abmoulton:Adams-Bashford-Moulton⽅法(预测法)下⾯给出微分⽅程数值⽅法的参数表:参数名参数类型参数⽤途参数⽤法initial 浮点数的⼀维数组指定初值向量number 正整数指定向量个数output 'procedurelist'(默认)或'listprocedure'指定⽣成单个函数或多个函数的有序表Procedurelis:单个函数, 返回有序表Listprocedure:函数的有序表procedure ⼦程序名⽤⼦程序形式指定第⼀尖常微分⽅程组的右边部分参数1:未知函数的个数参数2:⾃变量参数3:函数向量参数4:导函数向量start 浮点数⾃变量起始值startinit 布尔量(默认FALSE) 指定数值积分是否总是从起始值开始对dverk78不适⽤value 浮点数向量(⼀维数组) 指定需要输出函数值的⾃变量数值点如果给定, 结果是⼀个22×的矩阵. 元素[1,1]是⼀个向量, 含⾃变量名和函数名称; 元素[2,1]是⼀个数值矩阵, 其中第⼀列value的输⼊相同, 其他列中是相应的函数值另外, 还有⼀些特殊的附加参数:maxfun :整数类型, ⽤于最⼤的函数值数量, 默认值50000, 为负数时表⽰⽆限制 corrections :正整数类型, 指定每步修正值数量, 在abmoulton 中使⽤, 建议值≤4 stepsize :浮点数值, 指定步长下⾯看⼀个简单的例⼦:> ODE:=diff(y(x),x)=y(x)-2*x/y(x);:=ODE = ?()y x ? ()y x 2x > initvals:=y(0)=1;:= initvals = ()y 01> sol1:=dsolve({ODE,initvals},y(x),numeric,method=classical,stepsize=0.1,start=0);:= sol1proc ()... end proc x_classical⽽其解析解为:> sol2:=dsolve({diff(y(x),x)=y(x)-2*x/y(x), y(0)=1}, y(x));:= sol2 = ()y x + 2x 1将两者图形同时绘制在同⼀坐标系中⽐较, 可以发现, 在经过⼀段时间后, 欧拉法的数值结果会产⽣较⼤误差.> plot({rhs(sol2),'rhs(sol1(x)[2])'},x=0..2);求解微⽅程, ⽆论使⽤什么⽅法或者加⼊什么选项, 求解完成后必须利⽤相关数学知识进⾏逻辑判断, 绝对不对简单迷信Maple 给出的结果, 否则很有可能得到⼀个对于⽅程本⾝也许还看得过去, 但在数学或者物理意义上不合理的解.2.6摄动法求解常微分⽅程由于微分⽅程求解的复杂性, ⼀般微分⽅程常常不能求得精确解析解, 需要借助其它⽅法求得近似解或数值解, 或者两种⽅法兼⽽有之. 摄动法是重要的近似求解⽅法.摄动法⼜称⼩参数法, 它处理含⼩参数ε的系统, ⼀般当ε=0时可求得解x 0. 于是可把原系统的解展成ε的幂级数, 若这个级数当L +++=2210εεx x x x ε→0时⼀致收敛,则称正则摄动, 否则称奇异摄动. 摄动法的种类繁多, 最有代表性的是庞加莱—林斯泰特(Poicare-Lindstedt )法, 在此,我们以该⽅法求解van der Pol ⽅程:0)1(2=+′??′′y y y y ε当ε=0时该⽅程退化为数学单摆的常微分⽅程, 当ε=1时为3.5讨论的情况, 对任意ε, 该微分⽅程拥有⼀个渐进稳定的周期解, 称为极限环.由于van der Pol ⽅程中没有显式的时间依赖项, 不失⼀般性, 设初值为y(0)=0. 在庞加莱—林斯泰特法中, 时间通过变换拉伸:t ωτ=, 其中∑∞==0i i i εωω对于)(τy , van der Pol ⽅程变为:0)1(22=+′??′′y y y y ωεωrestart:diff(y(t),t$2)-epsilon*(1-y(t)^2)*diff(y(t),t)+y(t)=0;= ? +2t 2()y t ε() ? 1()y t 2()y t ()y t 0 > ODE:=DEtools[Dchangevar]({t=tau/omega,y(t)=y(tau)},%,t,tau);:= ODE = ? + ω22τ2()y τε() ? 1()y τ2ωτ()y τ()y τ0 > e_order:=6:> macro(e=epsilon,t=tau):> alias(seq(y[i]=eta[i](tau),i=0..e_order)):> e:=()->e:> for i from 0 to e_order doeta[i]:=t->eta[i](t)od:> omega:=1+sum('w[i]*e^i','i'=1..e_order);:= ω + + + + + + 1w 1εw 2ε2w 3ε3w 4ε4w 5ε5w 6ε6> y:=sum('eta[i]*e^i','i'=0..e_order);:= y + + + + + + η0η1εη2ε2η3ε3η4ε4η5ε5η6ε6> deqn:=simplify(collect(ODE,e),{e^(e_order+1)=0}):> for i from 0 to e_order doode[i]:=coeff(lhs(deqn),e,i)=0od:> ode[0];= + y 02τ2y 00> ode[1];= ? + + + 2τ2y 1τy 0y 12w 12τ2y 0??τy 0y 020 > ode[2];= + ? + + + ? + + + τy 0w 1y 022τy 0y 0y 1τy 12τy 2y 2τy 1y 02τy 0w 12w 12τy 122τy 0w 22τy 0w 120 > dsolve({ode[0],eta[0] (0)=0,D(eta[0])(0)=C[1]},eta[0](t));= y 0C 1()sin τ> eta[0]:=unapply(rhs(%),t);:= η0 →τC 1()sin τ> ode[1];= ? + ? +2τ2y 1C 1()cos τy 12w 1C 1()sin τC 13()cos τ()sin τ20 > map(combine,ode[1],'trig');= ? + ? + ? ??????2τ2y 1C 1()cos τy 12w 1C 1()sin τ14C 13()cos τ14C 13()cos 3τ0 > ode[1]:=map(collect,%,[sin(t),cos(t)]);:= ode 1 = ? + + + ? 2w 1C 1()sin τ + C 11C 13()cos τ2τ2y 1y 11C 13()cos 3τ0 > dsolve({ode[1],eta[1](0)=0,D(eta[1])(0)=C[2]},eta[1](t),method=laplace);= y 1 + ? ????????? + + 18C 1() ? C 12() + C 12τw 1C 1C 2()sin τ? 132C 13C 1τw 1()cos τ132C 13()cos 3τ > map(collect,%,[sin(t),cos(t),t]);= y 1 + ? ????????? + + 18C 1() ? C 12() + C 12τw 1C 1C 2()sin τ? 132C 13C 1τw 1()cos τ132C 13()cos 3τ> solve({coeff(lhs(ode[1]),sin(t))=0,coeff(lhs(ode[1]),cos(t))=0});,,{}, = C 10 = w 1w 1{}, = C 12 = w 10{}, = C 1-2 = w 10> w[1]:=0:C[1]:=-2:> ode[1];= + +2τ2y 1y 12()cos 3τ0 > dsolve({ode[1],eta[1](0)=0,D(eta[1])(0)=C[2]},eta[1](t),method=laplace);= y 1 ? + 14()cos 3τ14()cos τC 2()sin τ > eta[1]:=unapply(rhs(%),tau);:= η1 →τ ? + 14()cos 3τ14()cos τC 2()sin τ > map(combine,ode[2],'trig'):> ode[2]:=map(collect,%,[sin(t),sin(3*t),cos(t),cos(3*t)]);:= ode 2 = + + ? + ? + + 144w 2()sin τ54()sin 5τ2τ2y 232()sin 3τ2C 2()cos τ3C 2()cos 3τy 20 > solve({coeff(lhs(ode[2]),sin(t))=0,coeff(lhs(ode[2]),cos(t))=0}); {}, = C 20 = w 2-116> assign(%):> dsolve({ode[2],eta[2](0)=0,D(eta[2])(0)=C[3]},eta[2](t),method=laplace):> eta[2]:=unapply(rhs(%),t);:= η2 →τ? + + 316()sin 3τ+ 2996C 3()sin τ596()sin 5τ > for i from 0 to e_order domap(combine,ode[i],'trig'):ode[i]:=map(collect,%,[seq(sin((2*j+1)*t),j=0..i),seq(cos((2*j+1)*t),j=0..i)]):solve({coeff(lhs(ode[i]),sin(t))=0,coeff(lhs(ode[i]),cos(t))=0}):assign(%):dsolve({ode[i],eta[i](0)=0,D(eta[i])(0)=C[i+1]},eta[i](t),method=laplace):collect(%,[seq(sin((2*j+1)*t),j=0..i),seq(cos((2*j+1)*t),j=0..i)]):eta[i]:=unapply(rhs(%),t);od:> omega;+ + 11ε217ε435ε6。
如何利用Maple求解偏微分方程
如何利用Maple求解偏微分方程微分方程分有常微分和偏微分方程两种,利用Maple对微分方程求解是Maple的一个核心优势,下面介绍利用Maple求偏微分方程的命令。
求偏微分方程或偏微分方程系统的命令是“Pdsolve”。
调用格式是:pdsolve(PDE, f, HINT = hint, INTEGRATE, build)pdsolve(PDE_system, funcs, HINT, other_options)pdsolve(PDE_or_PDE_system, conds, type=numeric, other_options)其中:PDE:偏微分方程。
f:不定函数或名称;当有很多导函数时需要指定此项。
hint:(可选项)HINT = hint中的右边,其中hint 为“+,“*”之一,关键词strip 或TWS之一,结构TWS(math_function_name),或关于不定函数的任意代数表达式。
INTEGRATE:(可选项)当使用变量分离法求解PDE时发现ODE集合,此选项表明进行自动积分。
Build:(可选项)尝试建立不定函数的显式表达式,不管所得解的一般性。
PDE_system:偏微分方程系统;可包含不等式。
Funcs:(可选项)由不定函数或名称构成的集合或列表。
other_options:当精确求解PDE系统时,casesplit命令接受的所有选项也被pdsolve 接受。
PDE_or_PDE_system:偏微分方程或偏微分方程系统;可包含不等式。
Conds:初始或边界条件。
type=numeric:等式;表明寻找数值解;可使用关键词numeric替代整个等式。
示例:求解热传导方程的数值解、解析解和图形解。
初始条件:为了得到数值解,我们需要定义a和h的值,以及提供第二个边界条件:这个命令创建了一个模块(module,使用方法类似于Maple的函数包),可以看到模块的输出函数是plot,plot3d,animate和value。
(仅供参考)Maple提高教程B3- Maple中的偏微分方程求解
B3: Maple中的偏微分方程求解西希安工程模拟软件(上海)有限公司,200811.0 Maple中的微分方程求解器介绍Maple中微分方程求解器使用领先的算法求解以下问题:常微分方程 (ODEs): dsolve 命令用于求解线性和非线性ODEs, 初始值问题 (IVP), 以及边界值问题 (BVP),可以通过参数项选择求符号解 (解析解) 或数值解。
ODE Analyzer Assistant 微分方程分析器助手提供一个交互式用户界面方便用户求解 ODE 以及显示结果的图形。
了解更多信息,参考帮助系统中的 dsolve, dsolve/numeric, 和 ODE Analyzer.偏微分方程 (PDEs): pdsolve 命令用于求 PDEs 和含边界值问题的 PDEs 的符号解或数值解。
使用Maple的PDE工具可以完成对PDE系统的结构分析和指数降阶处理。
了解更多信息,参考帮助系统中的 pdsolve and pdsolve/numeric.微分-代数方程 (DAEs): dsolve/numeric 命令是符号-数值混合求解器,使用符号预处理和降阶技术,让Maple能够求解高指数的DAE问题。
Maple内置三个求解器用于处理DAEs:1)修正的 Runge-Kutta Fehlberg 方法,2)Rosenbrock 方法,以及 3)修正的拓展后向差分隐式方法。
11.1 求解偏微分方程PDE问题(BVP和IVP)Maple 求解经典力学难题的能力是非常著名的,它的数值和符号偏微分方程求解器是其中的重要工具。
例子:在不同的边界条件下,求波动方程的数值解、解析解、和图形解。
11.1.1 初始化下面的Maple代码定义了一个名为P X的程序,生成函数的周期展开。
PX := proc(h::{algebraic,procedure},g::{range,name=range})local L, D, var;if type(g,'range') then L := lhs(g); D := rhs(g) - L;(1)(2)if not type(h,'procedure') then var := indets(h,'name');if nops(var) <> 1 then error "need to specify a variable"; end if; var := op(var); end if;else L := lhs(rhs(g));D := rhs(rhs(g)) - L;var := lhs(g); end if;if type(h,'procedure') then proc(x::algebraic) h(x - floor((x-L)/D)*D); end; else proc(x::algebraic) eval(h, var = x - floor((x-L)/D)*D); end; end if;end:11.1.2 数值解和图形解一个空间变量的波动方程是:假设初始形状由下面的函数给出:对应的图形如下:(4)(3)Maple中的命令pdsolve 将求解单变量演化方程(双曲和抛物)的数值解(有限差分)。
Maple偏微分方程求解初步
(c t ) 1 c x) 1
_C2
=
e _C1 2 c 1 e
> lhs(%)-rhs(%);
(c t ) 1 ( c x) 1
e
+
_C1 c 1 e
(
(c t ) 1 c x) 1
_C2
e 0
- 101 -
> pdsolve(PDE3,u(x,t));
- 100 -
u( x , t ) = _F1 ( t e x ) + _F2 ( t e
( −x )
)
> restart: > heatPDE:=diff(u(x,t),t)=diff(u(x,t),[x$2]);
heatPDE :=
∂ ∂2 u( x, t ) = 2 u( x, t ) ∂t ∂x
> pdsolve(heatPDE,u(x,t));
2 ∂ ∂ ( u( x , t ) = _F1 ( x ) _F2 ( t ) ) &where { 2 _F1 ( x ) = _c 1 _F1 ( x ), _F2 ( t ) = _c 1 _F2 ( t ) } ∂ t ∂ x
(
+ _C2 e
(− c x ) 1
result := ( _C1 e
c x) 1
+ _C2 e
(− c x ) 1
) _C1 e
(c t ) 1
> subs(u(x,t)=result,heatPDE):expand(%);
_C1 2 c 1 e
(c t ) 1
(
e
c x) 1
+
_C1 c 1 e
Maple微分方程的求解
题目:微分方程的求解——基于Maple工具姓名:学号:专业:学科:老师:目录一、简介 (3)概况: (3)Maple 主要技术特征: (3)1. 强大的求解器:数学和分析软件的领导者 (3)2. 技术文件环境:重新定义数学的使用性 (4)3. 知识捕捉:不仅是工具,更是知识 (4)4. 外部程序连接:无缝集成到您现有的工具链中 (4)二、Maple在微分方程中的应用 (5)1、常用函数 (5)1)求解常微分方程的命令dsolve. (5)2)求解一阶线性常微分方程的命令linearsol. (5)3)偏微分方程求解命令pdsolve. (6)2、方法 (6)1)一阶常微分方程的解法 (6)2)二阶线性常微分方程的解法 (7)3、作图 (8)1)常微分方程数值解作图命令odeplot (8)2)偏微分方程作图命令PDEplot (8)三、各种方程的求解 (8)第一部分:一阶常微分方程 (8)1、可分离变量方程 (8)2、齐次方程 (9)3、线性方程 (10)4、Bernoulli方程 (10)第二部分:二阶线性常微分方程 (11)1、二阶常系数线性齐次方程 (11)2、二阶常系数线性非齐次方程 (12)3、Euler方程(变系数) (12)第三部分:偏微分方程 (13)1、波动方程 (13)2、热传导方程 (14)3、作图 (14)四、总结 (15)一、简介概况:Maple是目前世界上最为通用的数学和工程计算软件之一,在数学和科学领域享有盛誉,有“数学家的软件”之称。
Maple 在全球拥有数百万用户,被广泛地应用于科学、工程和教育等领域,用户渗透超过96%的世界主要高校和研究所,超过81%的世界财富五百强企业。
Maple系统内置高级技术解决建模和仿真中的数学问题,包括世界上最强大的的符号计算、无限精度数值计算、创新的互联网连接、强大的4GL语言等,内置超过5000个计算命令,数学和分析功能覆盖几乎所有的数学分支,如微积分、微分方程、特殊函数、线性代数、图像声音处理、统计、动力系统等。
用Maple计算简单的微分操作
用Maple计算简单的微分操作
在利用Maple解决数学问题时,更多的是因为Maple符号计算的强大功能。
利用Maple可以完成符号和数值微分计算。
下面介绍常见的Maple微分命令。
更多Maple基本功能与常用操作命令介绍请访问Maple中文版网站。
对表达式求微分:
1)在左侧的表达式面板中,点击微分项,或者偏微分项。
2)定义表达式和自变量,然后求值。
例如,求xsin(ax)关于x的微分:
用户也可以使用右键菜单求微分。
想要计算高阶或偏微分,需要编辑插入的微分符号。
例如,计算xsin(ax)+x2关于x的二阶微分:
计算xsin(3x)+yx5的混合偏导数:
注意:想要插入偏导符号,用户可以通过拷贝和粘帖已有的符号,或者输入字母d然后按ESC符号补全。
diff命令:
Maple使用diff命令对表达式求微分。
通常的用法是diff(expr,var),其中var是要求微分的变量。
例如:
用户可以通过定义一组微分变量计算高阶微分。
Maple递归地调用diff 命令。
想要计算偏微分,使用相同的语法。
Maple会假设为偏微分计算。
如果要对一个变量多次求导,可以使用diff(f,x$n),它实际上是一种缩写的形式,n代表变量x重复的次数。
这个语法也可以用于计算符号nth阶微分。
以上内容向大家介绍了Maple符号计算中有关微分的一些使用,这些常见的Maple微分命令是大家经常使用的,熟记在心后会使处理问题快捷很多。
如果需要了解更多Maple基本操作,可以参考教程:怎样用Maple键盘命令解决数学问题。
MAPLE方程求解[宝典]
第四章 方程求解1 代数方程(组)求解1.1 常用求解工具—solve求解代数方程或代数方程组, 使用Maple 中的solve 函数. 求解关于x 的方程eqn=0的命令格式为:solve(eqn, x);求解关于变量组vars 的方程组eqns 的命令为:solve(eqns, vars);> eqn:=(x^2+x+2)*(x-1);:= eqn () + + x 2x 2() - x 1> solve(eqn,x);,,1- + 1212I 7- - 1212I 7当然, solve 也可以求解含有未知参数的方程:> eqn:=2*x^2-5*a*x=1;:= eqn = - 2x 25a x 1> solve(eqn,x);, + 54a 14 + 25a 28 - 54a 14+ 25a 28 solve 函数的第一个参数是有待求解的方程或方程的集合, 当然也可以是单个表达式或者表达式的集合, 如下例: > solve(a+ln(x-3)-ln(x),x);3e a- + 1ea 对于第二个参数, Maple 的标准形式是未知变量或者变量集合, 当其被省略时, 函数indets 自动获取未知变量. 但当方程中含有参数时, 则会出现一些意想不到的情况:> solve(a+ln(x-3)-ln(x));{}, = x x = a - + ()ln - x 3()ln x很多情况下, 我们知道一类方程或方程组有解, 但却没有解决这类方程的一般解法,或者说没有解析解. 比如, 一般的五次或五次以上的多项式, 其解不能写成解析表达式. Maple 具备用所有一般算法尝试所遇到的问题, 在找不到解的时候, Maple 会用RootOf 给出形式解.> x^7-2*x^6-4*x^5-x^3+x^2+6*x+4;- - - + + + x 72x 64x 5x 3x 26x 4> solve(%);+ 15 - 15()RootOf , - - _Z 5_Z 1 = index 1()RootOf , - - _Z 5_Z 1 = index 2()RootOf , - - _Z 5_Z 1 = index 3,,,,,()RootOf , - - _Z 5_Z 1 = index 4()RootOf , - - _Z 5_Z 1 = index 5,> solve(cos(x)=x,x);()RootOf - _Z ()cos _Z对于方程组解的个数可用nops 命令获得, 如:> eqns:={seq(x[i]^2=x[i],i=1..7)};:= eqns {},,,,,, = x 12x 1 = x 22x 2 = x 32x 3 = x 42x 4 = x 52x 5 = x 62x 6 = x 72x 7> nops({solve(eqns)});128但是, 有时候, Maple 甚至对一些“显而易见”的结果置之不理, 如:> solve(sin(x)=3*x/Pi,x);()RootOf - 3_Z ()sin _Z π此方程的解为0 ,6π±, 但Maple 却对这个超越方程无能为力, 即便使用allvalues 求解也只有下述结果:> allvalues(%);()RootOf , - 3_Z ()sin _Z π0.另外一个问题是, Maple 在求解方程之前,会对所有的方程或表达式进行化简, 而不管表达式的类型, 由此而产生一些低级的错误:> (x-1)^2/(x^2-1);() - x 12- x 21> solve(%);1但是, 大量实验表明, solve 的确是一个实用的方程求解工具, 但是也不可盲目相信它给出的一切结果, 特别是对于非线性方程而言, 对于给出的结果需要加以验证.下面通过几个例子说明在Maple 中非线性方程组的求解问题.例:求解方程组:⎩⎨⎧=-=+yx y x 925222> eqns:={x^2+y^2=25,y=x^2-5};:= eqns {}, = y - x 25 = + x 2y 225> vars:={x,y};:= vars {},x y> solve(eqns,vars);,,,{}, = x 0 = y -5{}, = x 0 = y -5{}, = y 4 = x 3{}, = y 4 = x -3也可用下面的语句一步求出:> solve({x^2+y^2=25,y=x^2-5},{x,y});,,,{}, = x 0 = y -5{}, = x 0 = y -5{}, = y 4 = x 3{}, = y 4 = x -3这个问题非常简单, 但通常遇到的非线性问题却不是这么简单, 例如要求解方程组:yx y x y x -=+=+,122> eqns:={x^2+y^2=1,sqrt(x+y)=x-y};vars:={x,y};:= eqns {}, = + x 2y 21 = + x y - x y:= vars {},x y> sols:=solve(eqns,vars);sols = y ()RootOf , + + 2_Z 24_Z 3 - -1.000000000.7071067812I ,{ := = x - - ()RootOf , + + 2_Z 24_Z 3 - -1.000000000.7071067812I 2}{}, = x 1 = y 0,可以看出, 方程解的形式是以集合的序列给出的, 序列中的每一个集合是方程的一组解, 这样就很利于我们用subs 把解代入原方程组进行检验:> subs(sols[2],eqns);{} = 11> sols2:=allvalues(sols[1]);:= sols2{}, = x - + 112I 2 = y - - 112I 2> simplify(subs(sols2,eqns));{}, = I 2I 2 = 111.2 其他求解工具1.2.1 数值求解对于求代数方程的数值解问题, Maple 提供了函数fsolve , fsolve 的使用方法和solve很相似:fsolve(eqns, vars, options);其中, eqns 表示一个方程、方程组或者一个程序, vars 表示一个未知量或者未知量集合,options 控制解的参数(诸如:complex: 复根; maxsols=n :只找到n 阶最小根; intervals :在给定闭区间内求根, 等).> fsolve(x^5-x+1,x);-1.167303978> fsolve(x^5-x+1,x,complex);-1.167303978 - -.1812324445 1.083954101I + -.1812324445 1.083954101I - .7648844336.3524715460I ,,,,+ .7648844336.3524715460I> fsolve(x^3-3*x+1,x,0..1);.3472963553对于多项式方程, fsolve 在默认情况下以给出所有的实数解, 如果附加参数complex , 就可以给出所有的解. 但对于更一般的其他形式的方程, fsolve 却往往只满足于得到一个解: > eqn:=sin(x)=x/2;:= eqn = ()sin x 12x> fsolve(eqn);0.> fsolve(eqn,x,0.1..infinity);1.895494267> fsolve(eqn,x,-infinity..-0.1);-1.895494267函数fsolve 主要基于两个算法, 通常使用牛顿法, 如果牛顿法无效, 它就改而使用切线法. 为了使fsolve 可以求得所有的实根, 我们通常需要确定这些根所在的区间. 对于单变量多项式, 函数realroot 可以获得多项式的所有实根所在的区间.> 4+6*x+x^2-x^3-4*x^5-2*x^6+x^7;+ + - - - + 46x x 2x 34x 52x 6x 7> realroot(%);[],,[],02[],24[],-2-1函数realroot 还有一个可选参数, 它是用来限制区间的最大长度的, 为了保证使用数值求解方法时收敛, 我们可以用它限制区间的最大长度:> realroot(%%,1/1000);⎡⎣⎢⎢⎤⎦⎥⎥,,⎡⎣⎢⎢⎤⎦⎥⎥,11951024299256⎡⎣⎢⎢⎤⎦⎥⎥,331310241657512⎡⎣⎢⎢⎤⎦⎥⎥,-633512-12651024求解方程或方程组的整数解时使用函数isolve , 它常常被用来求解不定方程. 例如著名的“百钱买百鸡”问题♣的求解过程为:> isolve({x+y+z=100,5*x+3*y+z/3=100});{},, = z + 753_Z1 = x 4_Z1 = y - 257_Z1据此可得满足该问题的三组解为:{x, y , z}={4, 18, 78}, {x, y , z}={8, 11, 81}, {x, y, z}={12, 4, 84}1.2.2 整数环中的方程(组)求解利用Maple 中的函数msolve(eqns, vars, n), 可以在模n 的整数环中求解方程(组)eqns.例:在Z 7中求解Pell 方程2837-=x y> msolve(y^7=x^3-28,7);{}, = x 3 = y 6{}, = x 4 = y 1{}, = y 0 = x 0{}, = x 1 = y 1{}, = y 6 = x 6,,,,,{}, = x 2 = y 1{}, = y 6 = x 5, 再如下例:> msolve(y^4=x^3+32,5);,,,,{}, = x 2 = y 0{}, = x 4 = y 1{}, = x 4 = y 2{}, = x 4 = y 3{}, = x 4 = y 41.2.3 递归方程的求解在Maple 中, 可以求解有限差分方程(也称递归方程), 所需调用的函数是rsolve , 该函数使用的是一些比较通用的方法, 例如产生函数法、z 变换法以及一些基于变量替换和特征方程的方法. 作为例子, 求解Fibonacci 多项式:> eq:=f(n)=f(n-1)+2*f(n-2);:= eq = ()f n + ()f - n 12()f - n 2> rsolve({eq,f(0)=1,f(1)=1},f(n));+ 13()-1n 232n 当然, 并不是所有的递归形式的函数方程的解可以写成解析形式, 如果不能, Maple将保留原来的调用形式. 此时, 可用asympt 函数获得它的渐进表达式, 也就是1/n 的级数解. 例如, 对于一个具有超越形式的递归函数方程, 仍然可以得到解的渐进形式:> rsolve(u(n+1)=ln(u(n)+1),u(n));()rsolve , = ()u + n 1()ln + ()u n 1()u n> asympt(%,n,5);+ + + 21n+_C 23()ln n n 2 - + - + 1913_C 12_C 2⎛⎝ ⎫⎭⎪⎪- + 23_C 29()ln n 29()ln n 2n 3⎛⎝ ⎫⎭⎪⎪O 1n 41.2.4 不等式(组)求解求解一元不等式方程(组)使用命令solve : > solve((x-1)*(x-2)*(x-3)<0,x);,()RealRange ,-∞()Open 1()RealRange ,()Open 2()Open 3> solve((x-1+a)*(x-2+a)*(x-3+a) < 0, {x});,{} < x - 1a {}, < - 2a x < x - 3a> solve(exp(x)>x+1);,()RealRange ,-∞()Open 0()RealRange ,()Open 0∞> solve({x^2*y^2=0,x-y=1,x<>0});,{}, = y 0 = x 1{}, = y 0 = x 1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
B3: Maple中的偏微分方程求解
西希安工程模拟软件(上海)有限公司,2008
11.0 Maple中的微分方程求解器介绍
Maple中微分方程求解器使用领先的算法求解以下问题:
常微分方程 (ODEs): dsolve 命令用于求解线性和非线性ODEs, 初始值问题 (IVP), 以及边界值问题 (BVP),可以通过参数项选择求符号解 (解析解) 或数值解。
ODE Analyzer Assistant 微分方程分析器助手提供一个交互式用户界面方便用户求解 ODE 以及显示结果的图形。
了解更多信息,参考帮助系统中的 dsolve, dsolve/numeric, 和 ODE Analyzer.
偏微分方程 (PDEs): pdsolve 命令用于求 PDEs 和含边界值问题的 PDEs 的符号解或数值解。
使用Maple的PDE工具可以完成对PDE系统的结构分析和指数降阶处理。
了解更多信息,参考帮助系统中的 pdsolve and pdsolve/numeric.
微分-代数方程 (DAEs): dsolve/numeric 命令是符号-数值混合求解器,使用符号预处理和降阶技术,让Maple能够求解高指数的DAE问题。
Maple内置三个求解器用于处理DAEs:1)修正的 Runge-Kutta Fehlberg 方法,2)Rosenbrock 方法,以及 3)修正的拓展后向差分隐式方法。
11.1 求解偏微分方程PDE问题(BVP和IVP)
Maple 求解经典力学难题的能力是非常著名的,它的数值和符号偏微分方程求解器是其中的重要工具。
例子:在不同的边界条件下,求波动方程的数值解、解析解、和图形解。
11.1.1 初始化
下面的Maple代码定义了一个名为P X的程序,生成函数的周期展开。
PX := proc(h::{algebraic,procedure},g::{range,name=range})
local L, D, var;
if type(g,'range') then L := lhs(g); D := rhs(g) - L;
(1)
(2)
if not type(h,'procedure') then var := indets(h,'name');
if nops(var) <> 1 then error "need to specify a variable"; end if; var := op(var); end if;
else L := lhs(rhs(g));D := rhs(rhs(g)) - L;var := lhs(g); end if;
if type(h,'procedure') then proc(x::algebraic) h(x - floor((x-L)/D)*D); end; else proc(x::algebraic) eval(h, var = x - floor((x-L)/D)*D); end; end if;end:
11.1.2 数值解和图形解
一个空间变量的波动方程是:
假设初始形状由下面的函数给出:
对应的图形如下:
(4)
(3)
Maple中的命令pdsolve 将求解单变量演化方程(双曲和抛物)的数值解(有限差分)。
这个命令创建了一个模块,可以看到模块的输出函数是 plot, plot3d, animate, 和 v a l u e。
时间
的图形:
x
2
4
6
8
10
0图 2
Figure 3
动画:
(5)
(6)
x
2
4
6
8
10
1time = 0.000000
的函数:
的解:
0.364667328524451
(7)
(8)
的精确值是:
0.3750000000
(9)
的奇次周期展开如下:
我们注意到输出是一个程序体,忽略Maple输出的细节,我们再次使用图形来验证工作,
得到【图5】。
(11)
(10)
图 6
11.1.4 扩展(可选):传播和Klein-Gordon方程
10.2.4.1 数值解
波和Klein-Gordon方程分别表示为:
两者之间的区别是Klein-Gordon方程中有项。
(12)
(13)
10203040
x
(15)
(14)
x
10
2030
40
10.2.4.2 解析解
Klein-Gordon方程产生分离的变量。
因此,假设解的形式如下:
因此Klein-Gordon方程,这里
,变为:
除以 得到:
(20)
(21)
(15)
(17)
(16)
(19)
(18)
,这两个常微分方程变为:
= 0
(21)
(22)
(23)
(24)
(25)
(26)
(27)
x
10
2030
40
1
11.1.5 求解初始值偏微分方程问题(热传导方程)
数值解
pde := diff(u(x, t), t) = diff(u(x, t), x, x);
初始条件:
ibc := [(D[1](u))(0, t)+a*u(0, t) = h(t), u(x, 0) = 0];
(28)
(29)
ibc1:=[D[1](u)(0,t)+2*u(0,t)=cos(t),u(x,0)=0,u(0,t)=1];
pds:=pdsolve(pde,ibc1,numeric,time=t,range=0..1);
pds:-plot3d(t=0..1,x=0..1,axes=boxed);
?pdsolve,numeric
解析解
(33)
(34)
(30)
(32)
(31)
我们可以使用 pdsolve (无需参数项)命令计算偏微分方程的解析解:
结果可以拆分为方程(eq)和条件(conds):
eq:=op(gsol)[1];
conds:=op(op(gsol)[2]);
我们可以用 dsolve 命令求解常微分方程组,然后使用结果对 eq 求值:
conditions:=dsolve(conds);
solution:=eval(eq,conditions);
我们可以判定结果是否满足偏微分方程:
pdetest(solution,pde);
然后我们可以调整常数 _c1, _C1, _C2 和 _C3 满足期望的条件。
关于 pdsolve 命令的更多信息,请参考下面的帮助页:
?pdsolve
其他帮助
pdetest , pdsolve。