Mathematica求解方程组、级数
整理mathematica数学常用命令大全

整理mathematica数学常⽤命令⼤全Mathematica的内部常数Mathematica的常⽤内部数学函数Mathematica中的数学运算符Mathematica的关系运算符注:上⾯的关系运算符也可从基本输⼊⼯具栏输⼊。
如何⽤mathematica求多项式的最⼤公因式和最⼩公倍式如何⽤mathematica求整数的最⼤公约数和最⼩公倍数如何⽤mathematica进⾏整数的质因数分解如何⽤mathematica求整数的正约数如何⽤mathematica判断⼀个整数是否为质数如何⽤mathematica求第n个质数如何⽤mathematica求阶乘如何⽤mathematica配⽅Mathematica没有提供专门的配⽅命令,但是我们可以⾮常轻松地⾃定义⼀个函数进⾏配⽅。
如何⽤mathematica进⾏多项式运算如何⽤mathematica进⾏分式运算如何⽤Mathematica进⾏因式分解如何⽤Mathematica展开如何⽤Mathematica进⾏化简如何⽤Mathematica合并同类项如何⽤Mathematica进⾏数学式的转换如何⽤Mathematica进⾏变量替换如何⽤mathematica进⾏复数运算如何在mathematica中表⽰集合与数学中表⽰集合的⽅法相同,格式如下:下列命令可以⽣成特殊的集合:如何⽤Mathematica求集合的交集、并集、差集和补集如何mathematica⽤排序如何在Mathematica中解⽅程注:⽅程的等号必须⽤:= =如何在Mathematica中解⽅程组Solve[{⽅程组},{变元组}]注:⽅程的等号必须⽤:= =如何在Mathematica中解不等式先加载:Algebra`InequalitySolve` ,加载⽅法为:<然后执⾏解不等式的命令InequalitySolve,此命令的使⽤格式如下:<--mstheme-->如何在Mathematica中解不等式组先加载:Algebra`InequalitySolve` ,加载⽅法为:<然后执⾏解不等式组的命令InequalitySolve,此命令的使⽤格式如下:<--mstheme-->如何在Mathematica中解不等式组先加载:Algebra`InequalitySolve` ,加载⽅法为:<<--mstheme-->如何⽤mathematica表⽰分段函数如何⽤mathematica求反函数对系统内部的函数⽣效,但对⾃定义的函数不起任何作⽤,也许是⽅法不对。
§2 Mathematica进行代数运算和求极限

146§8 Mathematica 进行代数运算和求极限8.1 Mathematica 进行代数运算代数表达式泛指含有未知数的表达式,如422−+x x 、3/)sin (x x x +等都属代数表达式。
因为未知数也可以看作是符号式。
我们对代数的运算应该不感到陌生,例如,多项式的因式分解与展开、分式的约分与化简,以及解方程等等都属于代数运算。
1算术运算Mathematica 最基本的功能是进行算术四则运算:加、减、乘、除,注意用"^"代表乘幂。
如果输入的数字都不含小数点时,输出的结果是完全正确的(不管含有多少位,也可以是不可以约分式)。
如:462511]1[6^54/32:]1[=++=Out In 如需得到近似数,只要在输入的表达式中有一个数字是含小数点的:8.15627]2[6^54/0.32:]2[=++=Out In或者使用函数N[]:8.15627]3[]6^54/32[:]3[=++=Out N In尽管Mathematica 允许在算术表达中用空格代替乘号,但是建议大家不要轻易省略“*”号,以免造成混乱。
在Mathematica 中,数学上的和式用“Sum”表示,连乘符号用“Product”表示,它们的用法是:{}Sum f, i, imin, imax ⎡⎤⎣⎦ (*从min i i =到max i 计算f 的和式*) {}Sum f, i, i min,i max ⎡⎤⎣⎦ (*从min i i =到max i 以步长id 计算f 的和式*) {}Sum ,,min,max ,{,min,max}f i i i j j j ⎡⎤⎣⎦ (*计算两重和式(先做j 循环)*) {}Sum ,,min,max f i i i ⎡⎤⎣⎦ (*给出和式的近似值*){}Product ,,min,max f i i i ⎡⎤⎣⎦ (*从min i i =到max i 计算f 的乘积*)147{}Product ,,min,max,f i i i id ⎡⎤⎣⎦ (*从min i i =到max i 以步长id 计算f 的乘积*) {}{}Product ,,min,max ,,min,max f i i i j j j ⎡⎤⎣⎦ (*计算两重乘积(先做j 循环)*) 例8.1xxx x x x x Out n n x Sum In n++++++==26241207205040]4[}]7,1,{,![:]4[234567 当步长id=1时,可以省略。
实验六 用Mathematica软件进行 级数运算

实验六 用Mathematica 软件进行 级数运算实验目的:掌握用Mathematica 软件进行级数运算的语句和方法。
实验过程与要求:教师利用多媒体组织教学,边讲边操作示范。
实验的内容:幂级数展开用Mathematica 对级数进行加、减、乘、除、乘方、微分、积分等多种运算.这里重点介绍函数的幂级数展开.在Mathematica 系统中,用Series 函数将一个函数f [x ]展开成为幂级数.其基本格式为:Series[f [x ],{x ,x 0,n }]把函数f [x ]在点x 0处展开到x - x 0的n 次幂.实验1 分别将e x ,ln(1+x )在点x 0=0处展开到x 的5次幂,并求其和、差、积.解 In[1]:= Clear[x,a,b ]In[2]:= a =Series[Exp[x ],{x ,0,5}]In[3]:= b =Series[Log[1+x ],{x ,0,5}]In[4]:= a+bIn[5]:= a-bIn[6]:= a*b实验2将x-31在点x 0=1处展开到x-1的4次幂. 解 In[7]:= Clear[x ]In[8]:= Series[1/(3-x ),{x ,1,4}]在Mathematica 系统中,用Sum 函数求级数的和(和函数).其基本格式为:Sum[an ,{n ,n 0,n 1}]其中an 为级数的通项,n 0为 n 的起始值,n 1为终值.实验3 求级数∑∞=121n n 的和. 解 In[9]:= Sum[1/n^2,{n,1,Infinity}]实验4 求级数∑∞=0!n nn x 的和函数.解 In[10]:= Sum[x^n/n!,{n,0,Infinity}]敛散性的判定可用比值审敛法、根式审敛法或定义判定.实验1.将y=ln(5+x)在点x0=1处展开到x-1的4次幂.2. 将2x=在点x0=0处展开到x的5次幂.y-e。
Mathematical用法-大全-实用版

Mathematica for Windows 用法一、Mathematica的主要功能Mathematica是美国Wolfram公司开发的一个功能强大的计算机数学系统,提供了范围广泛的数学计算功能,主要包括三个方面:符号演算、数值计算、图形。
例如:多项式的四则运算、展开、因式分解,有理式的各种计算,有理方程、超越方程的解,向量和矩阵的各种计算,求极限、导数、极值、不定积分、定积分、幂级数展开式,求解微分方程,作一元、二元函数的图形等等。
二、Mathematica的基本知识1.输入表达式:直接输入一个表达式(包括算式和命令,长表达式用“Enter”换行)后,按“Shift+Enter”执行,执行后以“Out[命令序号]= ……”形式输出执行结果,输出的结果可在后续的表达式中使用。
若命令后有分号,则不输出执行结果(图形输出与Print命令除外)。
“%”表示上一个输出,“%%”表示倒数第2个输出,“%i”表示第i个命令的输出。
2.运算符:+、-、*、/、^ ,“*”可用空格代替,“^”表示乘方。
如:In[1]:=2^10,输出为“Out[1]= 1024”,其中“In[1]:=”不需要输入。
In[2]:=3+5,Out[2]= 8;In[3]:=%-2,Out[3]= 6;In[4]:=%2+4,Out[4]= 12;In[5]:=1/3-1/4,Out[5]=121;In[6]:=N[%],Out[6]= 0.0833333;In[7]:=N[%5+12,10],Out[7]= 12.08333333(注意字母的大小写)3.变量赋值:变量=表达式,“x=.”或Clear[x] 表示清除对x的赋值。
表达式/.t ->c ,将表达式中的t全替换成c。
?x,查x信息。
4.常用的数学常数:Pi (π)、E(e)、Infinity (∞)、I (1-)5.常用的数学函数:Abs, Sin, Cos, T an, Cot, ArcSin, Log (自然对数), Sqrt,Exp如:In[1]:=Sqrt[2]+1;In[2]:=Sin[2]+ArcSin[1];In[3]:=Exp[2]+%(自变量用[]括,区分大小写,首字母大写)三、常用运算1.多项式运算:In[1]:= (2+4*x^2)*(1-x)^3或In[1]:= t = (2+4*x^2)*(1-x)^3 (将右端表达式赋值给t);In[2]:=a=t/.x->4 (计算表达式t当x=4时的值,并赋值给变量a )In[3]:=a=.(清除变量a )In[3]:=Expand[t](展开);In[4]:=Factor[%](把上一个结果因式分解)2.解方程:In[1]:=Solve[x^2+3*x = = 2];In[2]:=N[%];In[3]:=Solve[a*x-b= = 0, x];In[4]:=NSolve[{x-2*y= =0,x^2-y= =1},{x,y}](解方程组并得到数值解)3.自定义函数:In[1]:= f [x_ ]:=x^2+2*x ;In[2]:=f[5]+7;In[3]:=f[a+b]4.求极限:In[1]:=Limit[Sin[x]/x, x ->0];In[2]:=Limit[(1+1/n)^n, n->Infinity],Out[2]=E5.求(偏)导数:In[1]:=D[a*x^2+3, x];In[2]:=D[x^2+y^3-Sin[2*y], y](对y的偏导数);In[3]:=D[Log[x], {x,2}] (求对x的二阶导数);In[4]:=D[Sin[x+y]*Exp[z*y^2],x,y] (求对x、y的二阶混合偏导数);In[5]:=Simplify[%] (对前一结果化简);In[6]:=D[Sin[x+y]*Exp[z*y^2],{x,2},{y,3}]6.求不定积分:In[1]:=Integrate[x^2,x];In[2]:=Integrate[1/(x^2+a^2),x]7.定积分:In[1]:=Integrate[x^2, {x,0,1}];In[2]:=Integrate[x^2,{x,a,b}];In[3]:=Integrate[x^2+y^2, {x,0,a},{y,0,b}];(求矩形域上的二重积分)In[4]:=Integrate[1, {x,-1,1},{y,-Sqrt[1-x^2],Sqrt[1-x^2]}];Out[4]=Pi(圆面积)8.幂级数展开:In[1]:=Series[Exp[x],{x,0,4}](在x=0处展开到x的四次幂)9.矩阵的输入和输出:In[1]:= a ={{1,2},{3,4}}(定义一个2x2的矩阵a ,按行写);In[2]:=MatrixForm[a](输出为矩阵形式);In[3]:=Transpose[a](a的转置);In[4]:=a[[2]](a的第2行);In[5]:=Tanspose[a][[2]](a的第2列);In[6]:=Inverse[a](求a的逆矩阵);In[7]:=Det[a](矩阵的行列式);In[8]:=Eigenvalues[a](求特征值);In[9]:=Eigenvectors[a](求特征向量);In[10]:=RowReduce[a](把a化为阶梯形,可用于求矩阵的秩、判断线性相关性);In[11]:= b ={{5,6,7},{8,9,10}};In[12]:= a.b(矩阵a与b的乘积)10.解线性方程组:In[1]:= a ={{3,4,5,6},{6,8,10,12},{4,5,6,7},{5,6,7,8}};(a的秩为2)In[2]:= b ={1,2,3,5}(列向量);(增广矩阵的秩也为2)In[3]:=LinearSolve[a,b](求线性方程组ax=b的一个特解);In[4]:=NullSpace[a](求线性方程组ax=0的一个基础解系);In[5]:= x =k1%4[[1]]+k2%4[[2]]+%3(ax=b的全部解,k1、k2为任意常数)11.求和:In[1]:=NSum[Sin[n]/n^3,{n,1,Infinity}](求级数∑∞=13 sinn nn的和)12.求极小值:In[1]:=FindMinimum[Sin[x]*Cos[x],{x,0.5}](求函数在0.5附近的极小值);In[2]:=FindMinimum[Sin[x*y]*Exp[x^2],{x,0.2}, {y,0.3}](求多元函数极小值)13.求解线性规划问题:Min cx,mx≥b,x≥0,求向量x 。
mathematica引用方程的解

mathematica引用方程的解Mathematica引用方程的解
在Mathematica中,可以使用Solve和DSolve函数分别求解代数方程和微分方程。
1. 求解代数方程
对于代数方程,使用Solve函数。
例如,求解x^2 - 3x + 2 == 0:
```
Solve[x^2 - 3x + 2 == 0, x]
{{x -> 2}, {x -> 1}}
```
输出结果显示方程有两个解,x=2和x=1。
2. 求解微分方程
对于微分方程,使用DSolve函数。
例如,求解y'[x] == y[x]:
```
DSolve[{y'[x] == y[x]}, y[x], x]
{{y[x] -> C[1] E^x}}
```
输出结果给出了微分方程的通解y(x) = C*e^x,其中C是任意常数。
3. 约束条件求解
有时需要给出初始或边界条件,可以将它们作为附加方程一同传递给Solve或DSolve。
例如,对于y''[x] + y[x] == 0, y[0] == 1, y'[0] == 0:
```
sol = DSolve[{y''[x] + y[x] == 0, y[0] == 1, y'[0] == 0}, y[x], x]
{y[x] -> Cos[x]}
```
解包含了满足初始条件的特解y(x) = cos(x)。
Mathematica提供了强大的符号计算能力,可以方便地求解各种复杂的方程。
(完整版)Mathematica——常微分方程、拉氏变换与级数实验

创3.5 常微分方程、拉氏变换与级数实验[学习目标]1. 会用Mathematica 求解微分方程(组);2. 能用Mathematica 求微分方程(组)的数值解;3. 会利用Mathematica 进行拉氏变换与逆变换;4. 能进行幕级数和傅里叶级数的展开。
一、常微分方程(组)Mathematica 能求常微分方程(组)的准确解,能求解的类型大致覆盖了人工求解的范围, 功能很强。
但不如人灵活(例如在隐函数和隐方程的处理方面),输出的结果与教材上的答 案可能在形式上不同。
另外,Mathematica 求数值解也很方便,且有利于作出解的图形。
在本 节中,使用Laplace 变换解常微分方程(组)的例子也是十分成功的,过去敬而远之的方法 如今可以轻而易举的实现了。
求准确解的函数调用格式如下: DSolve[eqn ,y[x] ,x] 求方程 eqn 的通解 y(x ),其中自变量是X 。
DSolve[{eqn ,y[x o ]= =y 0},y[x],x] 的特解y (x )。
DSolve[{eqn1,eqn2,—},{y 1 [x],y 2[x],…},x]求方程组的通解。
DSolve[{equ1,…,y 1[x 0]= =y 10,…},{y 1[x],y 2[x],…},x] 求方程组的特解。
说明:应当特别注意,方程及各项参数的表述方式很严格,容易出现输入错误。
微分方 程的表示法只有通过例题才能说清楚。
例1 解下列常微分方程(组):52(1) y 斗(x 1)2,(2) y - y 3 ,(3)x 1(x x ) y解:In[1]: =DSolve[y ' [x]= =2y[x]/ (x+1) + (x+1) A (5/2),y[x],x]Out[1]=y[x] i (1 x)7/2 (1 x)2c[1]In[2]: =DSolve[y ' [x]= = (1+y[xF2 ) /((x+xA3 ) y[x]),y[x],x]求满足初始条件y ( x o ) = y o(4)的通解及满足初始条件y (0) =0, z (0) =1的特解。
用Mathematica进行级数运算

的和
2.设 f ( x)
1 1 阶幂级数
3.将y=sin(xex)在点(0,0)处展开到x的7次幂 4.将z=xy在(2,3)处展开为x的3次幂,y的4次 幂。
二、应用部分
(1)利用函数z=xy的五阶泰勒展开式,计算
1.1011.021的近似值. (2)作出y=sinx的图形和函数的幂级数展开式的图形 (选取不同的x0和n),将图形进行比较,并总结 规律。
实验五 用Mathematica进行级数运算
实验目的:学会利用Mathematica进行级数求和、 函数幂级数展开 预备知识:
(一)求和符号∑用法及相关知识 (二)级数的敛散性及其确定 (三)函数展开为幂级数相关知识 (四)Mathematica中求和及级数运算相关命令
边学边做: (一)求和:Sum命令 (1)求有限项的和 n2
2.函数展开成幂级数 (1)Series[Sin[x],{x,0,5}]
x x
3
x
5
6
120
O x
6
(2)Series[1/(3-x),{x,1,3}]
1 2 x 4 1 1 8 x 1
2
1 16
x
1
3
O x
1
4
(3)Series[1/(x+y),{x,1,3},{y,1,2}]
1 2 1 8 y 4 3 y 16 1 1 8 1 y 1 3 16
6 n 1
n
(2)分别求级数
1 n 1 n(n 1)
与
1 n 1 n
n 1
的和,并判定敛散性
(3)分别求级数 收敛域
xn 与 n 0 n!
mathematica中求解微分方程的命令

mathematica中求解微分方程的命令
Mathematica中求解微分方程的命令是DSolve。
他可以求解一
阶和多阶的常微分方程和偏微分方程。
例如,要求解一阶常微分方程y'(x) + y(x) = 0,可以使用命令:DSolve[{y'[x] + y[x] == 0, y[0] == 1}, y[x], x]
其中,y[x]是未知函数,y'[x]表示y关于x的导数,y[0] == 1
是初始条件。
要求解二阶常微分方程y''(x) - 2y'(x) + y(x) = 0,可以使用命令:DSolve[{y''[x] - 2y'[x] + y[x] == 0, y[0] == 1, y'[0] == 0}, y[x], x]
其中,y''[x]表示y关于x的二阶导数,y'[0] == 0和y[0] == 1
是初始条件。
如果是偏微分方程,可以使用命令DSolveValue来求解。
例如,要求解二阶偏微分方程uxx[x, y] + uyy[x, y] = 0,可以使用命令:
DSolveValue[{D[u[x, y], x, x] + D[u[x, y], y, y] == 0, u[0, y] == Sin[y], u[x, 0] == Exp[-x]}, u[x, y], {x, y}]
其中,u[x, y]是未知函数,uxx[x, y]表示u关于x的二阶混合
偏导数,uyy[x, y]表示u关于y的二阶混合偏导数,u[0, y] == Sin[y]和u[x, 0] == Exp[-x]是边界条件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方程(组)与级数的Mathematica求解[学习目标]1. 能用Mathematica求各种方程(组)的数值解和近似解;2. 能对常见函数进行幂级数的展开。
一、求解简单方程(组)数学里的方程是带有变量的等式。
一般地说,一个或一组方程总是对于方程中出现的变量的可能取值范围增加了一些限制。
所谓求解方程就是设法把方程对于变量取值的限制弄清楚,最好的结果是用不含变量的表达式把变量的值表示出来。
在这个系统里,方程也用含有变量的等式表示,要注意的是在这里等号用连续的两个等号(==)表示。
方程的两端可以是任何数学表达式。
用户可以自己操作Mathematica系统去求解方程,例如使用移项一类的等价变换规则对方程加以变形、对方程的两端进行整理、把函数作用于方程的两端等等。
系统也提供了一些用于求解方程的函数。
1、求方程的代数解最基本的方程求解函数是Solve,它可以用于求解方程(主要是多项式方程)或方程组。
Solve有两个参数,第一个参数是一个方程,或者是由若干个方程组的表(表示一个方程组);第二个参数是要求解的变量或变量表。
例如,下面的式子对于变量X求解方程: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}]这个表达式求解方程组:有时求解方程会得到非常复杂的解。
例如将上面的第一个方程稍加变形,所得到的解的表达式就会变得很长:In[3]:=Solve[x^4-x^3-6x^2=2==0,x]这个表达式求出的解的表达式非常长,以至一个计算机屏幕显示不下。
使用MS-DOS系统上的Mathematica的读者可以用键盘上的PgUP键和PgDn键把计算机屏幕上已经卷出的表达式翻回来阅读,附录B里提供了使用这类计算机的有关操作的更详细的说明。
对于使用图形界面提供的功能去翻阅前面的结果。
在被求解的方程里还可以有其他符号参数,可以要求系统对于这一个或者那一个变量求解方程。
对于Mathematica系统来说,方程中的符号变量(无论使用什么变量名)都是一样的。
对于处理复杂的方程,MATHEMETICA系统还提供了例外两个有用的函数。
函数Eliminate用于从方程组消去一个或几个变量,例如下面的表达式消去方程组里的变量Y:IN[4]:=Eliminate[{X^2-2Y= =1,X+2Y= =4},Y]Eliminate 的使用形式与Solve类似,它的第二个参数用于说明希望消去的变量。
另一个函数Reduce用于化简复杂的方程或方程组,它试图用一组比较简单的逻辑关系来描述由原来方程所描述的变量之间的关系。
它的使用形式与Solve, Eliminate一样,这里不举例字了。
2、求方程的数值解理论上已经证明,对于五次以上的多项式方程没有求代数解的一般方法,MATHEMATICA也求不出那些不能分解因式的五次以上的多项式方程的解,例如:IN[5]:=SOLVE[X^5+5X^3-2= =0,X]它返回一个带有函数TORUOES的表达式。
可以把函数N作用到这个结果表达式上,求出方程的数值解:IN[6]:=N[%]可以看到系统同时求出了方程的五个根的时候可以直接用函数N和SOLVE结合完成工作: IN[7]:=N[SOLVE[X^6+4X^2-31= =0,X]]在系统里直接提供了一个函数NSOLVE做这件事。
对于更复杂的方程(或方程组),用SOLVE求不出根,使用函数N也解决不了问题。
对于这样的方程,用户可以使用REDUCE,ELIMINATE等函数去处理,设法把方程描述的变量之间的关系搞清楚。
如果需要的就是方程的根,那么只要用求数值根的函数FINDROOT。
函数FINDROOT求数值根所采用的方法与人们一般用计算机求数值根的方法一样。
但是,由于MATHEMATIC有求导函数的能力,在这里计算有导函数的表达式的数值根就非常简单。
不管表达式多么复杂,系统都能自动的求出它的导函数。
求数值根使用的也是牛顿法,用户必须给FINDROOT提供一个初始值。
下面一个简单的例子:IN[8]:=FINDROOT[SIN[X]EXP[2X]-COS[X]= =0,{X,0.5}]对于求不出导函数的表达式,例如用户自己定义的一个复杂计算函数,使用FindRoot提供函数值取不同符号(正负号)的两个点(用表的形式放在上面初始值0.5的位置),形式是:IN[9]:= FindRoot [FUN1[X]= =0,{X,{0,1}}]这里假使FUN1是用户定义的一个函数。
使用计算机求数值根的第一个问题是确定初始点,若初始值选取得不好将给求根带来困难。
再一个麻烦是用户要自己求出函数的导函数。
在MATHEMATICA系统里处理的对象是表达式,一个表达式可以服务于不同的用途,可以作为求值的对象,作为画图的对象,也可以作为演算的对象。
当需要求一个表达式的数值根的时候,表达式的这样的多种功能,或者说MATHEMATICA系统对于表达式的多方面的操作能力就表现出很大的优越性。
一个代数表达式,无论多么复杂,MATHEMATICA系统都可以直接求出它的导函数,可以作出它的图形。
从图形上我们很容易认识这个函数表达式在某一个区间的大致性质,包括它的根的出现和分布情况。
对表达式的这些认识为人们确定如何取初始值、如何求根提供了很有价值的线索。
这样,某些比较难以处理的问题可能就容易解决了。
二、求解常微分方程(组)1、常微分方程(组)的精确解Mathematica能求常微分方程(组)的准确解,能求解的类型大致覆盖了人工求解的范围,功能很强。
但不如人灵活(例如在隐函数和隐方程的处理方面),输出的结果与教材上的答案可能在形式上不同。
另外,Mathematica求数值解也很方便,且有利于作出解的图形。
求准确解的函数调用格式如下:DSolve[eqn,y[x],x] 求方程eqn的通解y (x),其中自变量是x。
DSolve[{eqn,y[x0]= =y0},y[x],x] 求满足初始条件y(x0)= y0的特解y(x)。
DSolve[{eqn1,eqn2,…},{y1[x],y2[x],…},x] 求方程组的通解。
DSolve[{equ1,…,y1[x0]= =y10,…},{y1[x],y2[x],…},x] 求方程组的特解。
说明:应当特别注意,方程及各项参数的表述方式很严格,容易出现输入错误。
微分方程的表示法只有通过例题才能说清楚。
例1 解下列常微分方程(组):(1),(2),(3),(4)的通解及满足初始条件y(0)=0,z(0)=1的特解。
解:In[1]:=DSolve[y′[x]= =2y[x]/(x+1)+(x+1)^(5/2),y[x],x]Out[1]=In[2]:=DSolve[y′[x]= =(1+y[x]^2)/((x+x^3)y[x]),y[x],x]Out[2]={{}, {}}In[3]:=DSolve[{y′[x]= =z[x],z′[x]= = -y[x]},{y[x],z[x]},x]Out[3]={{y[x]→C[1]Cos[x]+ C[2]Sin[x],z[x]→C[2]Cos[x]- C[1]Sin[x]}}In[4]:=DSolve[{y′[x]= =z[x],z′[x]= = -y[x],y[0]= =0,z[0]= =1},{y[x],z[x]},x]Out[4]={{y[x]→Sin[x],z[x]→Cos[x]}}提示:认真观察上例,可以从中学习输入格式,未知函数总带有自变量,等号用连续键入两个等号表示,这两点由于不习惯会出错!导数符号用键盘上的撇号,连续两撇表示二阶导数,这与习惯相同。
自变量、未知量、初始值的表示法与普通变量相同。
说明:输出结果总是尽量用显式解表出,有时反而会使表达式变得复杂,这与教科书的习惯不同。
当求显式解遇到问题时,会给出提示。
通解中的任意常数用C[1],C[2],…表示。
例2 求解下列微分方程:(1),(2),(3)。
解:In[1]:=DSolve[+3y″[x] +3y′[x] + y[x] = =(x - 5)Exp[-x],y[x],x]Out[1]={{}}In[2]:=Simplify[%]Out[2]={{}}In[3]:=DSolve[x^2 + y′[x]^2 = = 1,y[x],x]Out[3]={{},{}}In[4]:=DSolve[Sqrt[y′[x]] = = x y[x],y[x],x]Out[4]={{}}说明:由以上可以看出对方程的类型并无限制,但是输出的答案未必符合习惯,例如第一个方程的答案需要化简,有时即使化简后也未必与教材上的答案一致。
例3 求微分方程xy′+ y - ex = 0在初始条件y|x=1 = 2e下的特解。
解:In[1]:=DSolve[x*y′[x]+y[x]-E^x= =0,y[1]= =2E,y[x],x]Out[1]= {{y[x]→}}2、常微分方程(组)的数值解函数NDSolve用于求给定初值条件或边界条件的常微分方程(组)的近似解,其调用格式如下:NDSolve[eqns,{y1,y2,…},{x,xmin,xmax}] 求常微分方程(组)的近似解。
其中微分方程和初值条件的表示法如同DSolve,未知函数仍有带自变量和不带自变量两种形式,通常使用后一种更方便。
初值点x0可以取在区间[xmin,xmax]上的任何一点处,得到插值函数InterpolatingFunction[domain,table]类型的近似解,近似解的定义域domain一般为[domain,table],也有可能缩小。