无穷级数与微分方程(Mathematica)
实验3 抛射体的运动(续)(综合实验)

119项目四 无穷级数与微分方程实验3 抛射体的运动(续)(综合实验)实验目的 通过微分方程建模和Mathematica 软件,在项目一实验5的基础上,进一步研 究在考虑空气阻力的情况下抛射体的运动.问题 根据侦察,发现离我军大炮阵地水平距离10km 的前方有一敌军的坦克群正以每小 时50km 向我军阵地驶来,现欲发射炮弹摧毁敌军坦克群. 为在最短时间内有效摧毁敌军坦 克,要求每门大炮都能进行精射击,这样问题就可简化为单门大炮对移动坦克的精确射击 问题. 假设炮弹发射速度可控制在0.2km/s 至0.5km/s 之间,问应选择怎样的炮弹发射速度和 怎样的发射角度可以最有效摧毁敌军坦克.说明 本节我们研究受到重力和空气阻力约束的抛射体的射程. 用))(),((t y t x 记抛射体 的位置, 其中x 轴是运动的水平方向, y 轴是垂直方向. 通过在0=y 的约束下最大化x , 可以 计算出使抛射体的射程最大的发射角. 假设0=t 时抛射体(炮弹)在原点(0,0)以与水平线夹角 为,α初始速度为0v 发射出去. 它受到的空气阻力为.,⎪⎭⎫⎝⎛-=-=dt dy dt dx k kv F r (3.1)重力为).,0(mg F g -= (3.2) 在推导)(t x 和)(t y 所满足的微分方程之前, 补充一点说明:虽然我们将位置变量),(t x )(t y 仅写作t 的函数,但实际上位置变量还依赖于几个其它的变量或参数. 特别是,x 和y 也依赖于发射角α、阻力系数k 、质量m 及重力加速度g 等.为了推导x 和y 的方程, 按照牛顿定律,ma F =并结合重力的公式(3.2)和空气阻力的公 式(3.1), 得到微分方程0)()(='+''t x k t x m (3.3) 0)()(=+'+''mg t y k t y m (3.4)根据前面所述假设知, ),(t x )(t y 满足下列初始条件0)0(,0)0(==y x ,.sin )0(,cos )0(00ααv y v x ='=' (3.5)先求解)(t x ,由方程(3.3),令,x v '=可将其化为一阶微分方程.0=+'kv v m易求出其通解 .)(t m k Ce t v -=由,cos )0()0(0αv x v ='= 得αcos 0v C =,所以.cos )(0t m k e v t v -=α从,x v '=通过积分得到x , 即.cos )(0D e v k m t x t m k+⎪⎭⎫⎝⎛-=-α由,0)0(=x 得,cos 0αv k m D ⎪⎭⎫⎝⎛= 所以120 )1(cos )(0t m ke v k m t x --⎪⎭⎫⎝⎛=α (3.6)类似地,可从方程(3.4)解出y . 令,y v '= 方程化为一阶微分方程, 两端除以m ,得.g v mkv -=+' 再在上述方程两端乘以积分因子.t m k e 得,t m ktm k tm k ge v e m k v e -=+' 即 ,)(t m kt m kge ve dtd-=两端积分得.C e kgm ve t m kt mk +-=所以 .t m kCe kgmv -+-=利用初始条件αsin )0()0(0v v y =='确定其中的常数C 后, 积分v 得到y ,再次利用初始条件0)0(=y 确定任意常数后,则得到.sin )1(0αt m kt m ke v k m e km t k m k gm y ---+⎪⎪⎭⎫ ⎝⎛--=(3.7) 下面我们利用公式(3.6)与(3.7)来描绘炮弹运行的典型图形. 假定炮弹发射的初速度为0.25km/s, 发射角为 55, 输入Clear[a,t,x,y,g,m,k]x[v_,a_,t_]:=(m/k)*v*Cos[a Pi/180]*(1-Exp[-(k/m)*t]) y[v_,a_,t_]:=(g*m/k)((m/k)-t-(m/k)*Exp[-(k/m)*t])+(m/k)*v*Sin[a Pi/180]*(1-Exp[-(k/m)*t])g=9.8;m=5.0;k=0.01;炮弹飞行的时间由炮弹落地时的条件0=y 所确定. 输入 FindRoot[y[350,55,t]==0,{t,50}]则输出炮弹飞行的时间 {t->57.4124}当发射角 65=α时, 输入x[350,55, 57.4124]//N 则输出炮弹的最大射程为 10888.5现在我们可以画出炮弹运行的典型轨迹了. 输入 ParametricPlot[{x[350,55,t],y[350,55,t]},{t,0,57.4124},PlotRange->{0,11000},AxesLabel->{x,y}]则输出图3.1.图3.1实验报告在上述假设下,进一步研究下列问题:(1) 选择一个初始速度和发射角,利用Mathematica画出炮弹运行的典型轨迹.(2) 假定坦克在大炮前方10km处静止不动,炮弹发射的初速度为0.32km/s,应选择什么样的发射角才能击中坦克?画出炮弹运行的几个轨迹图,通过实验数据和图形来说明你的结论的合理性.(3) 假定坦克在大炮前方10km处静止不动,探索降低或调高炮弹发射的初速度的情况下,应如何选择炮弹的发射角?从上述讨论中总结出最合理有效的发射速度和发射角.(4) 在上题结论的基础上,继续探索,假定坦克在大炮前方10km处以每小时50km向大炮方向前进,此时应如何制定迅速摧毁敌军坦克的方案?注:在研究过程中,还要包括适当改变阻力系数k与炮弹的质量m所带来的变化.121。
mathematica

一、Mathematica 的主要功能
1、符号运算功能:Mathematica 最突出的特点就是具有强大 、符号运算功能: 的符号运算功能,能和人一样进行带字母的运算, 的符号运算功能,能和人一样进行带字母的运算,得到精确 的结果。 大类: 的结果。符号运算功能可以分成 4 大类:
(1)初等数学:进行各种数和初等函数式的计算与化简。 )初等数学:进行各种数和初等函数式的计算与化简。
(2)微积分:求极限、导数(包括高阶导数和偏导数等)、 )微积分:求极限、导数(包括高阶导数和偏导数等)、 不定积分和定积分(包括多重积分),将函数展成幂 不定积分和定积分( 包括多重积分),将函数展成幂 ), 级数,进行无穷级数求和及积分变换。 级数,进行无穷级数求和及积分变换。
•例:fun= Sin[x y] • Dt[fun,{x,2}]
§7.4 一元和多元不定积分
•不定积分:Integrate[ f,x ] •多重不定积分: Integrate[ f,x1,x2,…] 例: Integrate[Sqrt[x]+6 x , x]
§7.5 一元和多元定积分
•定积分: Integrate[ f , {x , a , b }] •多重定积分: Integrate[ f , { x1 , a , b } , …]
表达式 • 在Mathmatica中,表达式与 数学中的表达式相同,其书写 与运算规则与数学中相同。
• 注意:乘号“*”或“×”或
“空格”不可省略。
§3.2 数学常数
• • • • • E: 自然对数的底 Pi: 圆周率 Degree:角度制的单位 Infinity:无穷大 I: 虚数单位
§3.2 变量及其表示
无穷级数、微分方程

都是偏微分方程. 本章只讨论常微分方程
二、微分方程的基本概念 常微分方程的一般形式为
F ( x, y, y, , y(n) ) 0 (1)
其中x为自变量, y y( x)为未知函数, 且方程中 一 定 含 有y(n) , 而其余变量可以不出现。
如果能从方程(1)中解出最高阶导数, 就得到
第八章 无穷级数
习题课
第九章 微分方程
第八章 无穷级数
概 级数、部分和、正项级数、交错级数、 任意项级数
数 念 收敛、发散、绝对收敛、 条件收敛
项 性 数乘性、可加性、有限项性、 加括号性、 级 质 必要条件
数
部分和有上界
收 正项级数 比较法、 比值法、 根值法
敛
几何级数、P-级数、调和级数
判 交错级数
敛散性质与定义
第八章 无穷级数
例:判定下列交错级数的敛散性,当级数收敛时要确定
是绝对收敛,还是条件收敛.
( 1 )n1
(1)
n1
n2 1 ;
解: 因为 un
( 1 )n1 n2 1
(2) (1)n1
n2
11 n2 1 n2 ,
n. n1
n lim n
n
n 1 n n 1
即p
1 且k 2
1,
故原级数非绝对收敛.
令f (x) x , (x 2),
x1
f ( x) 2
x1 x ( x 1)2
0,
(x 2),
即
n n1
单调减少,
且
lim
n 0,
n n 1
由莱布尼茨判别法知, ( 1 )n1
实验2--微分方程(基础实验)

实验2--微分方程(基础实验)119 项目四 无穷级数与微分方程实验2 微分方程(基础实验)实验目的 理解常微分方程解的概念以及积分曲线和方向场的概念,掌握利用Mathematica 求微分方程及方程组解的常用命令和方法.基本命令1. 求微分方程的解的命令DSolve对于可以用积分方法求解的微分方程和微分方程组,可用Dsolve 命令来求其通解或特解.例如,求方程023=+'+''y y y 的通解, 输入DSolve[y ''[x]+3y '[x]+2y[x]==0,y[x],x]则输出含有两个任意常数C[1]和C[2]的通解:{}{}]2[C e ]1[C e ]x [y x x 2--+→注:在上述命令中,一阶导数符号 ' 是通过键盘上的单引号 ' 输入的,二阶导数符号 '' 要输入两个单引号,而不能输入一个双引号.又如,求解微分方程的初值问题:,10,6,03400='==+'+''==x x y y y y y输入Dsolve[{y''[x]+4 y'[x]+3y[x]==0,y[0]==6, y'[0]==10},y[x],x](*大括号把方程和初始条件放在一起*)则输出{}{}x 2x 3e 148(e ]x [y +-→-2. 求微分方程的数值解的命令NDSolve对于不可以用积分方法求解的微分方程初值问题,可以用NDSolve 命令来求其特解.例如要求方程5.0,032=+='=x y x y y的近似解)5.10(≤≤x , 输入NDSolve[{y'[x]==y[x]^2+x^3,y[0]==0.5},y[x],{x,0,1.5}](*命令中的{x,0,1.5}表示相应的区间*)则输出{{y->InterpolatingFunction[{{0.,1.5}},< >]}}注:因为NDSolve 命令得到的输出是解)(x y y =的近似值. 首先在区间[0,1.5]内插入一系 列点n x x x ,,,21Λ, 计算出在这些点上函数的近似值n y y y ,,,21Λ, 再通过插值方法得到 )(x y y =在区间上的近似解.3. 一阶微分方程的方向场一般地,我们可把一阶微分方程写为),(y x f y ='的形式,其中),(y x f 是已知函数. 上述微分方程表明:未知函数y 在点x 处的斜率等于函数120f 在点),(y x 处的函数值. 因此,可在Oxy 平面上的每一点, 作出过该点的以),(y x f 为斜率 的一条很短的直线(即是未知函数y 的切线). 这样得到的一个图形就是微分方程),(y x f y ='的方向场. 为了便于观察, 实际上只要在Oxy 平面上取适当多的点,作出在这些点的函数的 切线. 顺着斜率的走向画出符合初始条件的解,就可以得到方程),(y x f y ='的近似的积分曲 线.例如, 画出0)0(,12=-=y y dxdy 的方向场. 输入<<Graphics`PlotField`g1=PlotVectorField[{1,1-y^2},{x,-3,3},{y,-2,2}, Frame->True,ScaleFunction->(1&),ScaleFactor->0.16,HeadLength->0.01,PlotPoints->{20,25}];则输出方向场的图形(图2.1), 从图中可以观察到, 当初始条件为2/10=y 时, 这个微分方程的解介于1-和1之间, 且当x 趋向于-∞或∞时, )(x y 分别趋向于1-与1.-3-2-10123-2-1012 -3-2-10123-2-112下面求解这个微分方程, 并在同一坐标系中画出方程的解与方向场的图解. 输入sol=DSolve[{y'[x]==1-y[x]^2,y[0]==0},y[x],x];g2=Plot[sol[[1,1,2]],{x,-3,3},PlotStyle->{Hue[0.1],Thickness[0.005]}];Show[g2,g1,Axes->None,Frame->True];则输出微分方程的解xxe e x y 2211)(++-=,以及解曲线与方向场的图形(图2.2). 从图中可以看到, 微分方程的解与方向场的箭头方向相吻合.实验内容用Dsolve 命令求解微分方程例2.1 (教材 例2.1) 求微分方程 22x xe xy y -=+'的通解.输入Clear[x,y];DSolve[y '[x]+2x*y[x]==x*Exp[-x^2],y[x],x]或DSolve[D[y[x],x]+2x*y[x]==x*Exp[-x^2],y[x],x]则输出微分方程的通解:121 ⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+→--]1[C e x e 21]x [y 22x 2x 其中C[1]是任意常数.例2.2 (教材 例2.2) 求微分方程0=-+'x e y y x 在初始条件e y x 21==下的特解. 输入Clear[x,y];DSolve[{x*y ' [x]+y[x]-Exp[x]==0,y[1]==2 E},y[x],x]则输出所求特解:⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→x e e ]x [y x 例2.3 (教材 例2.3) 求微分方程x e y y y x 2cos 52=+'-''的通解.输入DSolve[y ''[x]-2y '[x]+5y[x]==Exp[x]*Cos[2 x],y[x],x]//Simplify则输出所求通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧-++→])x 2[Sin ])1[c 4x (2]x 2[Cos ])2[c 81((e 81]x [y x 例2.4 (教材 例2.4) 求解微分方程x e x y +=''2, 并作出其积分曲线.输入g1=Table[Plot[E^x+x^3/3+c1+x*c2,{x,-5,5},DisplayFunction->Identity],{c1,-10,10,5},{c2,-5,5,5}];Show[g1,DisplayFunction->$DisplayFunction]; -4-224-40-20204060图2.3例2.5 (教材 例2.5) 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++02y x dtdy e y x dt dx t 在初始条件0,100====t t y x 下的特解.输入122Clear[x,y,t];DSolve[{x' [t]+x[t]+2 y[t]==Exp[t], y'[t] -x[t]- y[t]==0,x[0]==1,y[0]==0},{x[t],y[t]},t]则输出所求特解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→→])t [Sin ]t [Cos e (21]t [y ],t [Cos ]t [x t例2.6 验证c y y x =+--)3305(15152是微分方程2)(42-='y x x y 的通解. 输入命令<<Graphics`PlotField`<<Graphics`ImplicitPlot`sol=(-5x^3-30y+3y^5)/15==C;g1=ImplicitPlot[sol/.Table[{C->n},{n,-3,3}],{x,-3,3}];g2=PlotVectorField[{1,x^2/(y^4-2)},{x,-3,3},{y,-3,3},Frame->True,ScaleFunction->(1&),ScaleFactor->0.16,HeadLength->0.01,PlotPoints->{20,25}];g=Show[g2,g1,Axes->None,Frame->True];Show[GraphicsArray[{g1,g2,g}]];则分别输出积分曲线如图 2.4(a), 微分方程的方向场如图 2.4(b). 以及在同一坐标系中画出积分曲线和方向场的图形如下图2.4 (c).-3-2-1123-2-112-3-2-10123-3-2-10123-3-2-10123-3-2-10123图2.4从图 2.4(c)中可以看出微分方程的积分曲线与方向场的箭头方向吻合, 且当∞→x 时, 无论初始条件是什么, 所有的解都趋向于一条直线方程.例2.7 (教材 例2.6) 求解微分方程,)1(122/5+=+-x x y dx dy 并作出积分曲线. 输入<<Graphics`PlotField`DSolve[y' [x]-2y[x]/(x+1)==(x+1)^(5/2),y[x],x]则输出所给积分方程的解为 ⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+++→]1[C )x 1()x 1(32]x [y 22/7123 下面在同一坐标系中作出这个微分方程的方向场和积分曲线(设),3,2,1,0,1,2,3---=C 输入t=Table[2(1+x)^(7/2)/3+(1+x)^2c,{c,-1,1}];g1=Plot[Evaluate[t],{x,-1,1},PlotRange->{{-1,1},{-2,2}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g2=PlotVectorField[{1,-2y/(x+1)+(x+1)^(5/2)},{x,-0.999,1},{y,-4,4},Frame->True,ScaleFunction->(1&), ScaleFactor->0.16,HeadLength->0.01,PlotPoints->{20,25},DisplayFunction->Identity];Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];则输出积分曲线的图形(图2.5).-0.75-0.5-0.2500.250.50.751-1.5-1-0.50.511.52图2.5例2.8 求解微分方程,2)21(22-+='-y x y xy 并作出其积分曲线.输入命令<<Graphics`PlotField`DSolve[1-2*x*y[x]*y' [x]==x^2+(y[x])^2-2,y[x],x]则得到微分方程的解为.)2(323C y x x y ++-+= 我们在33≤≤-C 时作出积分曲线, 输入命令t1=Table[(3+Sqrt[3])Sqrt[3+24x^2-4x^4-4*c*x]/(6*x),{c,-3,3}];t2=Table[(3-Sqrt[3])Sqrt[3+24x^2-4x^4-4*c*x]/(6*x),{c,-3,3}];gg1=Plot[Evaluate[t1],{x,-3,3},PlotRange->{{-3,3},{-3,3}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];124gg2=Plot[Evaluate[t2],{x,-3,3},PlotRange->{{-3,3},{-3,3}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g1=ContourPlot[y-x^3/3-x*(-2+y^2),{x,-3,3},{y,-3,3},PlotRange->{-3,3},Contours->7,ContourShading->False,PlotPoints->50,DisplayFunction->Identity];g2=PlotVectorField[{1,(x^2+y^2-2)/(1-2*x*y)},{x,-3,3},{y,-3,3},Frame->True,ScaleFunction->(1&),ScaleFactor->0.16,HeadLength->0.01,PlotPoints->{20,25},DisplayFunction->Identity];Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];Show[gg1,gg2,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];则输出微分方程的向量场与积分曲线, 并输出等值线的图2.6.-3-2-10123-2-10123-2-10123-2-1123图2.6用NDSolve 命令求微积分方程的近似解例2.9 (教材 例2.7) 求初值问题:1,0)1()1(2.1=='-++=x y y xy y xy 在区间[1.2,4]上的近似解并作图.输入fl=NDSolve[{(1+x*y[x])*y[x]+(1-x*y[x])*y'[x]==0,y[1.2]==1},y,{x,1.2,4}]则输出为数值近似解(插值函数)的形式:{{y->InterpolatingFunction[{{1.2,4.}},< >]}}用Plot 命令可以把它的图形画出来.不过还需要先使用强制求值命令Evalu-ate, 输入 Plot[Evaluate[y[x]/.fl],{x,1.2,4}]则输出近似解的图形(图2.7).125 1.5 2.53 3.5410203040图2.7如果要求区间[1.2,4]内某一点的函数的近似值, 例如8.1=x y ,只要输入y[1.8]/.fl则输出所求结果{3.8341}例2.10 (教材 例2.8) 求范德波尔(Van der Pel)方程5.0,0,0)1(002-='==+'-+''==x x y y y y y y在区间[0,20]上的近似解.输入 Clear[x,y];NDSolve[{y''[x]+(y[x]^2-1)*y'[x]+y[x]==0,y[0]==0,y'[0]==-0.5},y,{x,0,20}];Plot[Evaluate[y[x]/.%],{x,0,20}]可以观察到近似解的图形(图2.8).5101520-2-112图2.8126 ⎪⎩⎪⎨⎧==+-'1)1(01sin 2y x y x y x 的数值解, 并作出数值解的图形.输入命令<<Graphics`PlotField`sol=NDSolve[{x*y'[x]-x^2*y[x]*Sin[x]+1==0,y[1]==1},y[x],{x,1,4}];f[x_]=Evaluate[y[x]/.sol];g1=Plot[f[x],{x,1,4},PlotRange->All,DisplayFunction->Identity];g2=PlotVectorField[{1,(x^2*y*Sin[x]-1)/x},{x,1,4},{y,-2,9},Frame->True,ScaleFunction->(1&),ScaleFactor->0.16,HeadLength->0.01,PlotPoints->{20,25},DisplayFunction->Identity];g=Show[g1,g2,Axes->None,Frame->True];Show[GraphicsArray[{g1,g}],DisplayFunction->$DisplayFunction];则输出所给微分方程的数值解及数值解的图2.9.1.522.533.544681 1.52 2.53 3.54-22468例2.11 (教材 例2.9) 求出初值问题⎪⎩⎪⎨⎧='==+'+''0)0(,1)0(cos sin 22y y xy x y y的数值解, 并作出数值解的图形.输入NDSolve[{y''[x]+Sin[x]^2*y'[x]+y[x]==Cos[x]^2,y[0]==1,y'[0]==0},y[x],{x,0,10}]127 Plot[Evaluate[y[x]/.%],{x,0,10}];则输出所求微分方程的数值解及数值解的图形(图2.10).2468100.20.40.60.8图2.10例2.12 (教材 例2.10) 洛伦兹(Lorenz)方程组是由三个一阶微分方程组成的方程组.这三个方程看似简单, 也没有包含复杂的函数, 但它的解却很有趣和耐人寻味. 试求解洛伦兹方程组,0)0(,4)0(,12)0()(4)()()()()(45)()()()(16)(16)(⎪⎪⎩⎪⎪⎨⎧===-='-+-='-='z y x t z t y t x t z t y t x t z t x t y t x t y t x 并画出解曲线的图形.输入Clear[eq,x,y,z]eq=Sequence[x'[t]==16*y[t]-16*x[t],y'[t]==-x[t]*z[t]-y[t]+45x[t],z'[t]==x[t]*y[t]-4z[t]];sol1=NDSolve[{eq,x[0]==12,y[0]==4,z[0]==0},{x[t],y[t],z[t]},{t,0,16},MaxSteps->10000];g1=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol1],{t,0,16},PlotPoints->14400,Boxed->False,Axes->None];则输出所求数值解的图形(图2.11(a)). 从图中可以看出洛伦兹微分方程组具有一个奇异吸引子, 这个吸引子紧紧地把解的图形“吸”在一起. 有趣的是, 无论把解的曲线画得多长, 这些曲线也不相交.128图2.11改变初值为,10)0(,10)0(,6)0(=-==z y x 输入sol2=NDSolve[{eq,x[0]==6,y[0]==-10,z[0]==10}, {x[t],y[t],z[t]},{t,0,24},MaxSteps->10000];g2=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol2],{t,0,24},PlotPoints->14400,Boxed->False,Axes->None];Show[GraphicsArray[{g1,g2}]];则输出所求数值解的图形(图2.11(b)). 从图中可以看出奇异吸引子又出现了, 它把解“吸”在某个区域内, 使得所有的解好象是有规则地依某种模式缠绕.实验习题1. 求下列微分方程的通解:(1) ;0136=+'+''y y y(2) ();024=+''+y y y(3) ;2sin 52x e y y y x =+'-''(4) .)1(963x e x y y y +=+'-''2. 求下列微分方程的特解:(1) ;15,0,029400='==+'+''==x x y y y y y(2) .1,1,02sin ='==++''==ππx x y yx y y 3. 求微分方程0cos 2)1(2=-+'-x xy y x 在初始条件10==x y 下的特解.分别求精确解和数值解)10(≤≤x 并作图.4. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++t t e y x dt dy e y x dt dx 235的通解.129 5. 求微分方程组⎪⎪⎩⎪⎨⎧==+-==-+==4,081,0300t t y y x dt dyxy x dt dx 的特解. 6. 求欧拉方程组324x y y x y x =-'+''的通解.7. 求方程5,0,011='==+'+''==x x y y y y x y 在区间[0,4]上的近似解.。
Mathematica-8-教程

Mathematica-8-教程Mathematica简明教程第1章Mathematica概述1.1 运行和启动:介绍如何启动Mathematica软件,如何输入并运行命令1.2 表达式的输入:介绍如何使用表达式1.3 帮助的使用:如何在mathematica中寻求帮助第2章Mathematica的基本量2.1 数据类型和常量:mathematica中的数据类型和基本常量2.2 变量:变量的定义,变量的替换,变量的清除等2.3 函数:函数的概念,系统函数,自定义函数的方法2.4 表:表的创建,表元素的操作,表的应用2.5 表达式:表达式的操作2.6 常用符号:经常使用的一些符号的意义第3章Mathematica的基本运算3.1 多项式运算:多项的四则运算,多项式的化简等3.2 方程求解:求解一般方程,条件方程,方程数值解以及方程组的求解3.3 求积求和:求积与求和第4章函数作图4.1 二维函数作图:一般函数的作图,参数方程的绘图4.2 二维图形元素:点,线等图形元素的使用4.3 图形样式:图形的样式,对图形进行设置4.4 图形的重绘和组合:重新显示所绘图形,将多个图形组合在一起4.5 三维图形的绘制:三维图形的绘制,三维参数方程的图形,三维图形的设置第5章微积分的基本操作5.1 函数的极限:如何求函数的极限5.2 导数与微分:如何求函数的导数,微分5.3 定积分与不定积分:如何求函数的不定积分和定积分,以及数值积分5.4 多变量函数的微分:如何求多元函数的偏导数,微分5.5 多变量函数的积分:如何计算重积分5.6 无穷级数:无穷级数的计算,敛散性的判断第6章微分方程的求解6.1 微分方程的解:微分方程的求解才出现的;再输入第二个表达式,要求系统将一个二项式x5 + y5展开,按Shift+Enter输出计算结果后,系统分别将其标识为In[2]和Out[2],如图2。
图2在Mathematica的Notebook界面下,可以用这种交互方式完成各种运算,如函数作图,求极限、解方程等,也可以用它编写像C那样的结构化程序。
mathematica如何数值解微分方程

mathematica如何数值解微分方程摘要:一、微分方程数值解的背景和意义二、Mathematica软件介绍三、Mathematica解决微分方程数值解的方法四、Mathematica在微分方程数值解中的应用实例五、总结与展望正文:微分方程数值解的背景和意义:微分方程在自然科学和工程领域中有着广泛的应用,但是求解微分方程的解析解往往非常困难。
因此,数值解微分方程成为解决这类问题的有效方法。
随着计算机技术的发展,越来越多的数学软件被开发出来,用于解决微分方程的数值解问题。
其中,Mathematica软件由于其强大的计算功能和友好的用户界面,成为许多科研工作者的首选工具。
Mathematica软件介绍:Mathematica是一款功能强大的数学软件,由美国著名计算机科学家、数学家斯蒂芬·沃尔夫勒姆于1988年创立。
Mathematica集成了丰富的数学函数、算法和图形功能,可以用于解决数学、物理、工程、计算机科学等多个领域的计算问题。
Mathematica解决微分方程数值解的方法:Mathematica提供了一系列用于求解微分方程数值解的函数和方法。
其中,常用的方法包括:欧拉方法、改进欧拉方法、龙格-库塔方法、辛普森方法等。
此外,Mathematica还提供了用于求解常微分方程和偏微分方程的专用函数,如:NDSolve、PDE solve等。
Mathematica在微分方程数值解中的应用实例:1.常微分方程的数值解:使用Mathematica的NDSolve函数,可以方便地求解常微分方程的数值解。
例如,对于一阶常微分方程y" = f(x, y),可以直接调用NDSolve函数,输入f(x, y)和初始条件,即可求解该微分方程的数值解。
2.偏微分方程的数值解:对于偏微分方程,可以使用Mathematica的PDE solve函数求解。
例如,对于二维热传导方程,可以直接调用PDE solve 函数,输入方程和边界条件,即可求解该偏微分方程的数值解。
微积分05无穷级数与微分方程

项目四 无穷级数与微分方程实验1 无穷级数(基础实验)实验目的观察无穷级数部分和的变化趋势,进一步理解级数的审敛法以及幂级数部分和对函数的 逼近. 掌握用Mathematica 求无穷级数的和, 求幂级数的收敛域, 展开函数为幂级数以及展 开周期函数为傅里叶级数的方法.基本命令1. 求无穷和的命令Sum该命令可用来求无穷和. 例如,输入 Sum[1/n^2,{n,l,Infinity}]则输出无穷级数的和为.6/2π 命令Sum 与数学中的求和号∑相当. 2. 将函数展开为幂级数的命令Series 该命令的基本格式为Series[f[x],{x,x0,n}]它将)(x f 展开成关于0x x -的幂级数. 幂级数的最高次幂为,)(0n x x -余项用10)(+-n x x 表 示. 例如,输入Series[y[x],{x,0,5}] 则输出带皮亚诺余项的麦克劳林级数[][][]()[]()[]()[][]654433201201024106102100x O x y x y x y x y x y y ++++''+'+ 3. 去掉余项的命令Normal在将)(x f 展开成幂级数后, 有时为了近似计算或作图, 需要把余项去掉. 只要使用 Normal 命令. 例如,输入Series[Exp[x],{x,0,6}] Normal[%] 则输出765432]x [O !6x !5x !4x !3x !2x x 1+++++++!6x 5x 4x !3x !2x x 165432++++++ 4. 强制求值的命令Evaluate如果函数是用Normal 命令定义的, 则当对它进行作图或数值计算时, 可能会出现问题. 例如,输入fx=Normal[Series[Exp[x],{x,0,3}]] Plot[fx,{x,-3,3}]则只能输出去掉余项后的展开式6x 2x x 132+++ 而得不到函数的图形. 这时要使用强制求值命令Evaluate, 改成输入 Plot[Evaluate[fx],{x,-3,3}] 则输出上述函数的图形.5. 作散点图的命令ListPlotListPlot [ ]为平面内作散点图的命令, 其对象是数集,例如,输入ListPlot[Table[j^2,{j,16}],PlotStyle->PointSize[0,012]]则输出坐标为}16,16{,},3,3{},2,2{},1,1{2222 的散点图(图1.1).图1.1.6. 符号“/;”用于定义某种规则,“/;”后面是条件. 例如,输入Clear[g,gf];g[x_]:=x/;0<=x<1 g[x_]:=-x/;-1<=x<0 g[x_]:=g[x –2]/;x>=1则得到分段的周期函数⎪⎩⎪⎨⎧≥-<≤<≤--=1x ),2x (g 1x 0,x 0x 1,x )x (g再输入gf=Plot[g[x],{x,-1,6}] 则输出函数)(x g 的图形1.2.图1.2注:用Which 命令也可以定义分段函数, 从这个例子中看到用“…(表达式)/; …(条件)”来 定义周期性分段函数更方便些. 用Plot 命令可以作出分段函数的图形, 但用Mathematica 命 令求分段函数的导数或积分时往往会有问题. 用Which 定义的分段函数可以求导但不能积 分. Mathematica 内部函数中有一些也是分段函数. 如:Mod[x,1],Abs[x],Floor[x]和UnitStep[x]. 其中只有单位阶跃函数UnitStep[x]可以用Mathematica 命令来求导和求定积分. 因此在求分 段函数的傅里叶系数时, 对分段函数的积分往往要分区来积. 在被积函数可以用单位阶跃函数UnitStep 的四则运算和复合运算表达时, 计算傅里叶系数就比较方便了.实验举例数项级数例1.1 (教材 例1.1)(1) 观察级数∑∞=121n n的部分和序列的变化趋势.(2) 观察级数∑∞=11n n 的部分和序列的变化趋势.输入s[n_]=Sum[1/k^2,{k,n}];data=Table[s[n],{n,100}]; ListPlot[data];N[Sum[1/k^2,{k,Infinity}]] N[Sum[1/k^2,{k,Infinity}],40]则输出(1)级数的近似值为1.64493.输入s[n_]=Sum[1/k,{k,n}];data=Table[s[n],{n,50}]; ListPlot[data,PlotStyle->PointSize[0.02]];则输出(2)例1.2 画出级数∑∞=--111)1(n n n的部分和分布图. 输入命令Clear[sn,g];sn=0;n=1;g={};m=3;While[1/n>10^-m,sn=sn+(-1)^(n-1)/n;g=Append[g,Graphics[{RGBColor[Abs[Sin[n]],0,1/n],Line[{{sn,0},{sn,1}}]}]];n++];Show[g,PlotRange->{-0.2,1.3},Axes->True];则输出所给级数部分和的图形,从图中可观察到它收敛于0.693附近的一个数.例1.3 设,!10n a nn = 求∑∞=1n na.输入Clear[a];a[n_]=10^n/(n!);vals=Table[a[n],{n,1,25}];ListPlot[vals,PlotStyle->PointSize[0.012]]则输出n a 的散点图,从图中可观察n a 的变化趋势. 输入 Sum[a[n],{n,l,Infinity}] 则输出所求级数的和.求幂级数的收敛域 例1.4 求∑∞=+-021)3(4n nn n x 的收敛域与和函数.输入Clear[a];a[n_]=4^(2n)*(x-3)^n/(n+1); stepone=a[n+1]/a[n]//Simplify则输出n2)x 3)(n 1(16++-+再输入steptwo=Limit[stepone,n->Infinity] 则输出)x 3(16+-这里对a[n+1]和a[n]都没有加绝对值. 因此上式的绝对值小于1时, 幂级数收敛; 大于1 时发散. 为了求出收敛区间的端点, 输入ydd=Solve[steptwo==1,x] zdd=Solve[steptwo==-1,x]则输出⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→1647x 1649x 与由此可知,当16491647<<x 时,级数收敛,当1647<x 或1649>x 时,级数发散.为了判断端点的敛散性, 输入 Simplify[a[n]/.x->(49/16)] 则输出右端点处幂级数的一般项为1n 1+ 因此,在端点1649=x 处,级数发散. 再输入Simplify[a[n]/.x->(47/16)] 则输出左端点处幂级数的一般项为1n )1(n+- 因此,在端点1647=x 处, 级数收敛.也可以在收敛域内求得这个级数的和函数. 输入 Sum[4^(2n)*(x-3)^n/(n+1),{n,0,Infinity}] 则输出)x 3(16)]x 3(161[Log +-+---函数的幂级数展开例1.5 求x cos 的6阶麦克劳林展开式. 输入Series[Cos[x],{x,0,6}] 则输出7642]x [o 720x 24x 2x 1+-+- 注:这是带皮亚诺余项的麦克劳林展开式. 例1.6 求x ln 在1=x 处的6阶泰勒展开式.输入Series[Log[x],{x,1,6}] 则输出.]x [o 6)1x (5)1x (4)1x (3)1x (2)1x ()1x (765432+---+---+--- 例1.7 求x arctan 的5阶泰勒展开式. 输入serl=Series[ArcTan[x],{x,0,5}]; Poly=Normal[serl]则输出x arctan 的近似多项式5x 3x x 53+- 通过作图把x arctan 和它的近似多项式进行比较. 输入Plot[Evaluate[{ArcTan[x],Poly}],{x,-3/2,3/2},PlotStyle->{Dashing[{0.01}],GrayLevel[0]},AspectRatio->l]则输出所作图形, 图中虚线为函数x arctan ,实线为它的近似多项式.实验习题1.求下列级数的和:(1);21∑∞=k kk(2);)12(112∑∞=-k k (3);)2(112∑∞=k k (4).)1(11∑∞=--k k k2. 求幂级数∑∞=+--012)5()1(n nn x 的收敛域与和函数.3. 求函数)1ln()1(x x ++的6阶麦克劳林多项式.4. 求x arcsin 的6阶麦克劳林多项式.5. 设1)(2+=x xx f ,求)(x f 的5阶和10阶麦克劳林多项式,把两个近似多项式和函数的图形作在一个坐标系内.实验2 微分方程(基础实验)实验目的 理解常微分方程解的概念以及积分曲线和方向场的概念,掌握利用 Mathematica 求微分方程及方程组解的常用命令和方法.基本命令1. 求微分方程的解的命令DSolve对于可以用积分方法求解的微分方程和微分方程组,可用Dsolve 命令来求其通解或特解. 例如,求方程023=+'+''y y y 的通解, 输入DSolve[y ''[x]+3y '[x]+2y[x]==0,y[x],x]则输出含有两个任意常数C[1]和C[2]的通解:{}{}]2[C e ]1[C e ]x [y x x 2--+→注:在上述命令中,一阶导数符号 ' 是通过键盘上的单引号 ' 输入的,二阶导数符号 '' 要 输入两个单引号,而不能输入一个双引号.又如,求解微分方程的初值问题:,10,6,03400='==+'+''==x x y y y y y输入Dsolve[{y''[x]+4 y'[x]+3y[x]==0,y[0]==6, y'[0]==10},y[x],x](*大括号把方程和初始条件放在一起*) 则输出{}{}x 2x 3e 148(e ]x [y +-→-2. 求微分方程的数值解的命令NDSolve对于不可以用积分方法求解的微分方程初值问题,可以用NDSolve 命令来求其特解.例如 要求方程5.0,032=+='=x y x y y 的近似解)5.10(≤≤x , 输入NDSolve[{y'[x]==y[x]^2+x^3,y[0]==0.5},y[x],{x,0,1.5}] (*命令中的{x,0,1.5}表示相应的区间*) 则输出{{y->InterpolatingFunction[{{0.,1.5}},< >]}}注:因为NDSolve 命令得到的输出是解)(x y y =的近似值. 首先在区间[0,1.5]内插入一系 列点n x x x ,,,21 , 计算出在这些点上函数的近似值n y y y ,,,21 , 再通过插值方法得到)(x y y =在区间上的近似解.3. 一阶微分方程的方向场一般地,我们可把一阶微分方程写为),(y x f y ='的形式,其中),(y x f 是已知函数. 上述微分方程表明:未知函数y 在点x 处的斜率等于函数 f 在点),(y x 处的函数值. 因此,可在Oxy 平面上的每一点, 作出过该点的以),(y x f 为斜率 的一条很短的直线(即是未知函数y 的切线). 这样得到的一个图形就是微分方程),(y x f y ='的方向场. 为了便于观察, 实际上只要在Oxy 平面上取适当多的点,作出在这些点的函数的 切线. 顺着斜率的走向画出符合初始条件的解,就可以得到方程),(y x f y ='的近似的积分曲 线.例如,画出0)0(,12=-=y y dxdy的方向场. 输入<<Graphics`PlotField`g1=PlotVectorField[{1,1-y^2},{x,-3,3},{y,-2,2}, Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}];则输出方向场的图形,从图中可以观察到, 当初始条件为2/10=y 时, 这个微分方程的解介 于1-和1之间, 且当x 趋向于-∞或∞时, )(x y 分别趋向于1-与1.下面求解这个微分方程, 并在同一坐标系中画出方程的解与方向场的图解. 输入sol=DSolve[{y'[x]==1-y[x]^2,y[0]==0},y[x],x];g2=Plot[sol[[1,1,2]],{x,-3,3},PlotStyle->{Hue[0.1],Thickness[0.005]}]; Show[g2,g1,Axes->None,Frame->True];则输出微分方程的解xxe e x y 2211)(++-=,以及解曲线与方向场的图形. 从中可以看到, 微分方程的解与方向场的箭头方向相吻合.实验内容用Dsolve 命令求解微分方程例2.1 求微分方程 22x xe xy y -=+'的通解. 输入Clear[x,y];DSolve[y '[x]+2x*y[x]==x*Exp[-x^2],y[x],x]或DSolve[D[y[x],x]+2x*y[x]==x*Exp[-x^2],y[x],x] 则输出微分方程的通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+→--]1[C e x e 21]x [y 22x 2x其中C[1]是任意常数.例2.2 求微分方程0=-+'x e y y x 在初始条件e y x 21==下的特解.输入Clear[x,y];DSolve[{x*y ' [x]+y[x]-Exp[x]==0,y[1]==2 E},y[x],x]则输出所求特解:⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→x e e ]x [y x 例2.3 求微分方程x e y y y x 2cos 52=+'-''的通解.输入DSolve[y ''[x]-2y '[x]+5y[x]==Exp[x]*Cos[2 x],y[x],x]//Simplify则输出所求通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧-++→])x 2[Sin ])1[c 4x (2]x 2[Cos ])2[c 81((e 81]x [y x例2.4 求解微分方程x e x y +=''2, 并作出其积分曲线. 输入g1=Table[Plot[E^x+x^3/3+c1+x*c2,{x,-5,5},DisplayFunction->Identity],{c1,-10,10,5},{c2,-5,5,5}];Show[g1,DisplayFunction->$DisplayFunction];则输出积分曲线的图形.例2.5 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++02y x dtdy e y x dt dx t 在初始条件0,100====t t y x 下的特解.输入Clear[x,y,t];DSolve[{x' [t]+x[t]+2 y[t]==Exp[t], y'[t] -x[t]- y[t]==0,x[0]==1,y[0]==0},{x[t],y[t]},t]则输出所求特解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→→])t [Sin ]t [Cos e (21]t [y ],t [Cos ]t [x t例2.6 求解微分方程,)1(122/5+=+-x x y dx dy 并作出积分曲线. 输入<<Graphics`PlotField`DSolve[y' [x]-2y[x]/(x+1)==(x+1)^(5/2),y[x],x]则输出所给积分方程的解为⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+++→]1[C )x 1()x 1(32]x [y 22/7下面在同一坐标系中作出这个微分方程的方向场和积分曲线(设),3,2,1,0,1,2,3---=C 输入t=Table[2(1+x)^(7/2)/3+(1+x)^2c,{c,-1,1}];g1=Plot[Evaluate[t],{x,-1,1},PlotRange->{{-1,1},{-2,2}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g2=PlotVectorField[{1,-2y/(x+1)+(x+1)^(5/2)},{x,-0.999,1},{y,-4,4},Frame->True,ScaleFunction->(1&), ScaleFactor->0.16,HeadLength->0.01, PlotPoints->{20,25},DisplayFunction->Identity];Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];则输出积分曲线的图形.用NDSolve 命令求微积分方程的近似解例2.7 求初值问题:1,0)1()1(2.1=='-++=x y y xy y xy 在区间[1.2,4]上的近似解并作图. 输入fl=NDSolve[{(1+x*y[x])*y[x]+(1-x*y[x])*y'[x]==0,y[1.2]==1},y,{x,1.2,4}]则输出为数值近似解(插值函数)的形式:{{y->InterpolatingFunction[{{1.2,4.}},< >]}}用Plot 命令可以把它的图形画出来.不过还需要先使用强制求值命令Evalu-ate, 输入 Plot[Evaluate[y[x]/.fl],{x,1.2,4}] 则输出近似解的图形.如果要求区间[1.2,4]内某一点的函数的近似值, 例如8.1=x y ,只要输入y[1.8]/.fl则输出所求结果{3.8341}例2.8 求范德波尔(Van der Pel)方程5.0,0,0)1(02-='==+'-+''==x x y yy y y y在区间[0,20]上的近似解. 输入Clear[x,y];NDSolve[{y''[x]+(y[x]^2-1)*y'[x]+y[x]==0,y[0]==0,y'[0]==-0.5},y,{x,0,20}]; Plot[Evaluate[y[x]/.%],{x,0,20}]可以观察到近似解的图形.例2.9 求出初值问题⎪⎩⎪⎨⎧='==+'+''0)0(,1)0(cos sin 22y y xy x y y 的数值解, 并作出数值解的图形.输入NDSolve[{y''[x]+Sin[x]^2*y'[x]+y[x]==Cos[x]^2,y[0]==1,y'[0]==0},y[x],{x,0,10}]Plot[Evaluate[y[x]/.%],{x,0,10}];则输出所求微分方程的数值解及数值解的图形例2.10 洛伦兹(Lorenz)方程组是由三个一阶微分方程组成的方程组.这三个方程看似简 单, 也没有包含复杂的函数, 但它的解却很有趣和耐人寻味. 试求解洛伦兹方程组,0)0(,4)0(,12)0()(4)()()()()(45)()()()(16)(16)(⎪⎪⎩⎪⎪⎨⎧===-='-+-='-='z y x t z t y t x t z t y t x t z t x t y t x t y t x 并画出解曲线的图形.输入Clear[eq,x,y,z]eq=Sequence[x'[t]==16*y[t]-16*x[t],y'[t]==-x[t]*z[t]-y[t]+45x[t],z'[t]==x[t]*y[t]-4z[t]];sol1=NDSolve[{eq,x[0]==12,y[0]==4,z[0]==0},{x[t],y[t],z[t]},{t,0,16},MaxSteps->10000];g1=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol1],{t,0,16},PlotPoints->14400,Boxed->False,Axes->None];则输出所求数值解的图形. 从图中可以看出洛伦兹微分方程组具有一个奇异吸引子, 这个吸 引子紧紧地把解的图形“吸”在一起. 有趣的是, 无论把解的曲线画得多长, 这些曲线也不 相交.改变初值为,10)0(,10)0(,6)0(=-==z y x 输入sol2=NDSolve[{eq,x[0]==6,y[0]==-10,z[0]==10},{x[t],y[t],z[t]},{t,0,24},MaxSteps->10000];g2=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol2],{t,0,24},PlotPoints->14400,Boxed->False,Axes->None];Show[GraphicsArray[{g1,g2}]];则输出所求数值解的图形. 从图中可以看出奇异吸引子又出现了, 它把解“吸”在某个区域 内, 使得所有的解好象是有规则地依某种模式缠绕.实验习题1. 求下列微分方程的通解:(1) ;0136=+'+''y y y (2) ();024=+''+y y y (3) ;2sin 52x e y y y x =+'-''(4) .)1(963x e x y y y +=+'-'' 2. 求下列微分方程的特解:(1) ;15,0,029400='==+'+''==x x y y y y y (2) .1,1,02sin ='==++''==ππx x y y x y y3. 求微分方程0cos 2)1(2=-+'-x xy y x 在初始条件10==x y下的特解.分别求精确解和数值解)10(≤≤x 并作图.4. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++t te y x dt dye y x dt dx235的通解.5. 求微分方程组⎪⎪⎩⎪⎨⎧==+-==-+==4,081,0300t t y y x dt dyx y x dt dx的特解.6. 求欧拉方程组324x y y x y x =-'+''的通解.7. 求方程5,0,011='==+'+''==x x y y y y x y 在区间[0,4]上的近似解.实验3 抛射体的运动(综合实验)实验目的 通过微分方程建模和Mathematica 软件,在项目一实验5的基础上,进一步研 究在考虑空气阻力的情况下抛射体的运动.问题 根据侦察,发现离我军大炮阵地水平距离10km 的前方有一敌军的坦克群正以每小 时50km 向我军阵地驶来,现欲发射炮弹摧毁敌军坦克群. 为在最短时间内有效摧毁敌军坦 克,要求每门大炮都能进行精射击,这样问题就可简化为单门大炮对移动坦克的精确射击 问题. 假设炮弹发射速度可控制在0.2km/s 至0.5km/s 之间,问应选择怎样的炮弹发射速度和 怎样的发射角度可以最有效摧毁敌军坦克.说明 本节我们研究受到重力和空气阻力约束的抛射体的射程. 用))(),((t y t x 记抛射体 的位置, 其中x 轴是运动的水平方向, y 轴是垂直方向. 通过在0=y 的约束下最大化x , 可以 计算出使抛射体的射程最大的发射角. 假设0=t 时抛射体(炮弹)在原点(0,0)以与水平线夹角 为,α初始速度为0v 发射出去. 它受到的空气阻力为.,⎪⎭⎫⎝⎛-=-=dt dy dt dx k kv F r (3.1)重力为).,0(mg F g -= (3.2) 在推导)(t x 和)(t y 所满足的微分方程之前, 补充一点说明:虽然我们将位置变量),(t x )(t y 仅写作t 的函数,但实际上位置变量还依赖于几个其它的变量或参数. 特别是,x 和y 也依赖于发射角α、阻力系数k 、质量m 及重力加速度g 等.为了推导x 和y 的方程, 按照牛顿定律,ma F =并结合重力的公式(3.2)和空气阻力的公 式(3.1), 得到微分方程0)()(='+''t x k t x m (3.3)0)()(=+'+''mg t y k t y m (3.4)根据前面所述假设知, ),(t x )(t y 满足下列初始条件0)0(,0)0(==y x ,.sin )0(,cos )0(00ααv y v x ='=' (3.5)先求解)(t x ,由方程(3.3),令,x v '=可将其化为一阶微分方程.0=+'kv v m易求出其通解 .)(t m k Ce t v -=由,cos )0()0(0αv x v ='= 得αcos 0v C =,所以 .cos )(0t m k e v t v -=α从,x v '=通过积分得到x , 即 .cos )(0D e v k m t x t m k+⎪⎭⎫ ⎝⎛-=-α 由,0)0(=x 得,cos 0αv k m D ⎪⎭⎫ ⎝⎛= 所以 )1(cos )(0t m ke v k m t x --⎪⎭⎫ ⎝⎛=α (3.6) 类似地,可从方程(3.4)解出y . 令,y v '= 方程化为一阶微分方程, 两端除以m ,得.g v m k v -=+' 再在上述方程两端乘以积分因子.t m k e 得,t m k t m k t m k ge v e mk v e -=+' 即 ,)(t m k t m k ge ve dtd -= 两端积分得 .Ce kgm ve t m k t m k +-= 所以 .t m k Ce kgm v -+-= 利用初始条件αsin )0()0(0v v y =='确定其中的常数C 后, 积分v 得到y ,再次利用初始条 件0)0(=y 确定任意常数后,则得到.sin )1(0αt m kt m k e v k m e k m t k m k gm y ---+⎪⎪⎭⎫ ⎝⎛--= (3.7) 下面我们利用公式(3.6)与(3.7)来描绘炮弹运行的典型图形. 假定炮弹发射的初速度为0.25km/s, 发射角为 55, 输入Clear[a,t,x,y,g,m,k]x[v_,a_,t_]:=(m/k)*v*Cos[a Pi/180]*(1-Exp[-(k/m)*t])y[v_,a_,t_]:=(g*m/k)((m/k)-t-(m/k)*Exp[-(k/m)*t])+(m/k)*v*Sin[a Pi/180]*(1-Exp[-(k/m)*t])g=9.8;m=5.0;k=0.01;炮弹飞行的时间由炮弹落地时的条件0y所确定. 输入=FindRoot[y[350,55,t]==0,{t,50}]则输出炮弹飞行的时间{t->57.4124}α时, 输入当发射角=65x[350,55, 57.4124]//N则输出炮弹的最大射程为10888.5现在我们可以画出炮弹运行的典型轨迹了. 输入ParametricPlot[{x[350,55,t],y[350,55,t]},{t,0,57.4124},PlotRange->{0,11000},AxesLabel->{x,y}]图3-1实验报告在上述假设下,进一步研究下列问题:(1) 选择一个初始速度和发射角,利用Mathematica画出炮弹运行的典型轨迹.(2) 假定坦克在大炮前方10km处静止不动,炮弹发射的初速度为0.32km/s,应选择什么样的发射角才能击中坦克?画出炮弹运行的几个轨迹图,通过实验数据和图形来说明你的结论的合理性.(3) 假定坦克在大炮前方10km处静止不动,探索降低或调高炮弹发射的初速度的情况下,应如何选择炮弹的发射角?从上述讨论中总结出最合理有效的发射速度和发射角.(4) 在上题结论的基础上,继续探索,假定坦克在大炮前方10km处以每小时50km向大炮方向前进,此时应如何制定迅速摧毁敌军坦克的方案?注:在研究过程中,还要包括适当改变阻力系数k与炮弹的质量m所带来的变化.实验4 蹦极跳运动(综合实验)实验目的利用Mathematica软件,通过微分方程建模,研究蹦极跳运动.问题在不考虑空气阻力和考虑空气阻力等多种情况下,研究蹦极跳运动中,蹦极者与蹦极绳设计之间的各种关系.说明 蹦极绳相当于一根粗橡皮筋或有弹性的绳子. 当受到张力使之超过其自然长度,绳 子会产生一个线性回复力, 即绳子会产生一个力使它恢复到自然长度, 而这个力的大小与它 被拉伸的长度成正比. 在一次完美的蹦极跳过程中, 蹦极者爬上一座高桥或高的建筑物, 把 绳的一头系在自己身上, 另一头系在一个固定物体如桥栏杆上, 当他跳离桥时, 激动人心的 时刻就到来了. 这里要分析的是蹦极者从跳出那一瞬间起他的运动规律.首先要建立坐标系. 假设蹦极者的运动轨迹是垂直的, 因此我们只要用一个坐标来确 定他在时刻t 的位置. 设y 是垂直坐标轴, 单位为英尺, 正向朝下, 选择0=y 为桥平面, 时间 t 的单位为秒, 蹦极者跳出的瞬间为,0=t 则)(t y 表示t 时刻蹦极者的位置. 下面我们要求出 )(t y 的表达式.由牛顿第二定律, 物体的质量乘以加速度等于物体所受的力. 我们假设蹦极者所受的力 只有重力、空气阻力和蹦极绳产生的回复力. 当然, 直到蹦极者降落的距离大于蹦极绳的自 然长度时, 蹦极绳才会产生回复力. 为简单起见, 假设空气阻力的大小与速度成正比, 比例 系数为1, 蹦极绳回复力的比例系数为0.4. 这些假设是合理的, 所得到的数学结果与研究所 做的蹦极实验非常吻合. 重力加速度./322s ft g =现在我们来考虑一次具体的蹦极跳. 假设绳的自然长度为,200ft L = 蹦极者的体重为 160lb ①,则他的质量为532/160==m 斯②. 在他到达绳的自然长度(即)200-=-=L y 前, 蹦 极者的坠落满足下列初值问题:,1v mg dt dy --= .0)0(=v 利用Mathematica 求解上述问题. 输入g=32; m=5; L=200;{{v1[t_],y1[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m,y'[t]==v[t],v[0]==0,y[0]==0},{v,y},t]则输出)}}t e e 55(e 160),e 1(e 160{{5/t 5/t 5/t 5/t 5/t +--+----蹦极者坠落L 英尺所用的时间为t1=t/.FindRoot[y1[t]==-L,{t,2}]4.00609现在我们需要找到当蹦极绳产生回复力后的运动初始条件. 当1t t >时, 蹦极者的坠落 满足方程)(4.01y L mv m g dt dv +---= 初始条件为).1(1)1(,)1(t v t v L t y =-=解初值问题:{{v2[t_],y2[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m-0.4*(L+y[t])/m,y'[t]==v[t],v[t1]==v1[t1],y[t1]==-L},{v,y},t]则输出所求解, 这个解是用复指数函数来表示的.现在蹦极者的位置由命令bungeey[t_]=If[t<t1,y1[t],y2[t]]给出, 输入命令Plot[bungeey[t],{t,0,40},PlotRange->All]则输出位置-时间图形(图4-1)图4-1从上图可以看出, 蹦极者在大约13s内由桥面坠落770ft, 然后弹回到桥面下550ft, 上下振动几次, 最终降落到桥面下大约600ft处.实验报告1.在上述问题中(),=wL求出需要多长时间蹦极者才能到达他运动轨迹上的,200=160最低点, 他能下降到桥面下多少英尺?2.用图描述一个体重为195lb, 用200ft长绳子的蹦极者的坠落. 在绳子对他产生力之前, 他能做多长时间的“自由”降落?3.假设你有一根300ft长的蹦极索, 在一组坐标轴上画出你所在实验组的全体成员的运动轨迹草图.4.一个55岁, 体重185lb的蹦极者, 用一根250ft长的蹦极索. 在降落过程中, 他达到的最大速度是多少? 当他最终停止运动时, 他被挂在桥面下多少英尺?5.用不同的空气阻力系数和蹦极索常数做实验, 确定一组合理的参数, 使得在这组参数下, 一个160lb的蹦极者可以回弹到蹦极索的自然长度以上.6.科罗拉多的皇家乔治桥(它跨越皇家乔治峡谷)距谷底1053ft, 一个175lb的蹦极者希望能正好碰到谷底, 则他应使用多长的绳子?7.假如上题中的蹦极者体重增加10lb, 再用同样长的绳子从皇家乔治桥上跳下, 则当他撞到乔治峡谷谷底时, 他的坠落速度是多少?参考文献[1] 吴赣昌等. 高等数学多媒体学习系统, 海南出版社, 2005[2] 吴赣昌等. 线性代数多媒体学习系统, 海南出版社, 2005[3] 吴赣昌等. 概率论与数理统计多媒体学习系统, 海南出版社, 2005[4] A.D.Andrew, G.L.Cain, S.Crum, T.D.Morley. 用Mathematica 做微积分实验. 俞正光, 章纪民译. 清华大学出版社, 2003[5] 章栋恩,许晓革. 高等数学实验, 高等教育出版社, 2004[6] 上海市教育委员会组编. 高等数学. 科学出版社, 1998[7] 赵静等. 工科数学实验. 高等教育出版社, 1999[8] 乐经良, 向隆万, 李世栋. 数学实验. 高等教育出版社, 1999[9] 李尚志, 陈发来等. 数学实验. 高等教育出版社, 1999[10] 梁浩云. Mathematica 软件与数学实验. 华南理工大学出版社. 2001[11] 张韵华. 符号计算系统Mathematica 教程. 科学出版社. 2001[12] 邓建松. Mathematica 使用指南. 彭冉冉译. 麦格劳-希尔出版社. 2002。
mathematica微分方程

mathematica微分方程微分方程是数学中的一个重要分支,它描述了自然界中许多现象的变化规律。
在数学上,微分方程是包含未知函数及其导数的方程,通过求解微分方程,我们可以获得这个未知函数的具体形式,从而了解系统的行为。
Mathematica是一款强大的数学软件,可以解数学问题和绘制图像。
它提供了一系列强大的工具来求解微分方程,并将结果可视化。
在Mathematica中,求解微分方程的第一步是定义微分方程函数。
例如,我们可以定义一个简单的一阶线性微分方程:```mathematicadeqn = y'[x] == x - y[x]```然后,我们使用`DSolve`函数来求解这个微分方程。
Mathematica会尝试找到这个微分方程的解析解。
```mathematicasol = DSolve[deqn, y[x], x]````DSolve`函数的第一个参数是待求解的微分方程,第二个参数是未知函数,第三个参数是自变量。
我们可以通过提取结果中的特定解来获得解的具体形式。
例如,我们可以提取第一个解:```mathematicasol1 = y[x] /. sol[[1]]```现在,我们可以使用得到的解,通过输入一些具体的自变量值来计算对应的函数值。
例如,我们可以计算当`x=1`时的函数值:```mathematicasol1 /. x -> 1```Mathematica还提供了其他求解微分方程的函数,例如,使用`NDSolve`函数可以求解数值微分方程。
另外,Mathematica还提供了一系列用于可视化微分方程解的函数。
例如,使用`Plot`函数可以绘制函数在给定范围内的图像。
```mathematicaPlot[sol1, {x, 0, 5}]```这将绘制出函数在x从0到5的范围内的图像。
除了求解一阶微分方程,Mathematica还可以求解更高阶的微分方程,并提供各种方法和函数来求解常微分方程组、偏微分方程、边界值问题等。
项目四无穷级数与微分方程

119项目四 无穷级数与微分方程实验1 无穷级数实验目的观察无穷级数部分和的变化趋势,进一步理解级数的审敛法以及幂级数部分和对函数的 逼近. 掌握用Mathematica 求无穷级数的和, 求幂级数的收敛域, 展开函数为幂级数以及展 开周期函数为傅里叶级数的方法.基本命令1. 求无穷和的命令Sum该命令可用来求无穷和. 例如,输入 Sum[1/n^2,{n,l,Infinity}]则输出无穷级数的和为.6/2π 命令Sum 与数学中的求和号∑相当. 2. 将函数展开为幂级数的命令Series 该命令的基本格式为Series[f[x],{x,x0,n}]它将)(x f 展开成关于0x x -的幂级数. 幂级数的最高次幂为,)(0n x x -余项用10)(+-n x x 表 示. 例如,输入Series[y[x],{x,0,5}] 则输出带皮亚诺余项的麦克劳林级数[][][]()[]()[]()[][]654433201201024106102100x O x y x y x y x y x y y ++++''+'+ 3. 去掉余项的命令Normal在将)(x f 展开成幂级数后, 有时为了近似计算或作图, 需要把余项去掉. 只要使用 Normal 命令. 例如,输入Series[Exp[x],{x,0,6}] Normal[%] 则输出765432]x [O !6x !5x !4x !3x !2x x 1+++++++!6x 5x 4x !3x !2x x 165432++++++ 4. 强制求值的命令Evaluate如果函数是用Normal 命令定义的, 则当对它进行作图或数值计算时, 可能会出现问题. 例如,输入fx=Normal[Series[Exp[x],{x,0,3}]] Plot[fx,{x,-3,3}]则只能输出去掉余项后的展开式6x 2x x 132+++ 而得不到函数的图形. 这时要使用强制求值命令Evaluate, 改成输入 Plot[Evaluate[fx],{x,-3,3}] 则输出上述函数的图形.5. 作散点图的命令ListPlot120 ListPlot [ ]为平面内作散点图的命令, 其对象是数集,例如,输入ListPlot[Table[j^2,{j,16}],PlotStyle->PointSize[0,012]]则输出坐标为}16,16{,},3,3{},2,2{},1,1{2222 的散点图.6. 符号“/;”用于定义某种规则,“/;”后面是条件. 例如,输入Clear[g,gf];g[x_]:=x/;0<=x<1 g[x_]:=-x/;-1<=x<0 g[x_]:=g[x –2]/;x>=1则得到分段的周期函数⎪⎩⎪⎨⎧≥-<≤<≤--=1x ),2x (g 1x 0,x 0x 1,x )x (g再输入gf=Plot[g[x],{x,-1,6}] 则输出函数)(x g 的图形.注:用Which 命令也可以定义分段函数, 从这个例子中看到用“…(表达式)/; …(条件)”来 定义周期性分段函数更方便些. 用Plot 命令可以作出分段函数的图形, 但用Mathematica 命 令求分段函数的导数或积分时往往会有问题. 用Which 定义的分段函数可以求导但不能积 分. Mathematica 内部函数中有一些也是分段函数. 如:Mod[x,1],Abs[x],Floor[x]和UnitStep[x]. 其中只有单位阶跃函数UnitStep[x]可以用Mathematica 命令来求导和求定积分. 因此在求分 段函数的傅里叶系数时, 对分段函数的积分往往要分区来积. 在被积函数可以用单位阶跃函 数UnitStep 的四则运算和复合运算表达时, 计算傅里叶系数就比较方便了.实验举例数项级数例1.1 (1) 观察级数∑∞=121n n的部分和序列的变化趋势.(2) 观察级数∑∞=11n n的部分和序列的变化趋势. 输入s[n_]=Sum[1/k^2,{k,n}];data=Table[s[n],{n,100}]; ListPlot[data];N[Sum[1/k^2,{k,Infinity}]] N[Sum[1/k^2,{k,Infinity}],40]则输出(1)中级数部分和的变化趋势图. 级数的近似值为1.64493.输入s[n_]=Sum[1/k,{k,n}];data=Table[s[n],{n,50}]; ListPlot[data,PlotStyle->PointSize[0.02]];则输出(2)中级数部分和的的变化趋势图.例1.2 画出级数∑∞=--111)1(n n n的部分和分布图. 输入命令Clear[sn,g];sn=0;n=1;g={};m=3;While[1/n>10^-m,sn=sn+(-1)^(n-1)/n;121g=Append[g,Graphics[{RGBColor[Abs[Sin[n]],0,1/n],Line[{{sn,0},{sn,1}}]}]];n++];Show[g,PlotRange->{-0.2,1.3},Axes->True];则输出所给级数部分和的图形,从图中可观察到它收敛于0.693附近的一个数.例1.3 设,!10n a nn = 求∑∞=1n na.输入Clear[a];a[n_]=10^n/(n!);vals=Table[a[n],{n,1,25}];ListPlot[vals,PlotStyle->PointSize[0.012]]则输出n a 的散点图,从图中可观察n a 的变化趋势. 输入 Sum[a[n],{n,l,Infinity}] 则输出所求级数的和.求幂级数的收敛域 例1.4 求∑∞=+-021)3(4n nn n x 的收敛域与和函数.输入Clear[a];a[n_]=4^(2n)*(x-3)^n/(n+1); stepone=a[n+1]/a[n]//Simplify则输出n2)x 3)(n 1(16++-+再输入steptwo=Limit[stepone,n->Infinity] 则输出)x 3(16+-这里对a[n+1]和a[n]都没有加绝对值. 因此上式的绝对值小于1时, 幂级数收敛; 大于1 时发散. 为了求出收敛区间的端点, 输入ydd=Solve[steptwo==1,x] zdd=Solve[steptwo==-1,x]则输出⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→1647x 1649x 与由此可知,当16491647<<x 时,级数收敛,当1647<x 或1649>x 时,级数发散.为了判断端点的敛散性, 输入 Simplify[a[n]/.x->(49/16)] 则输出右端点处幂级数的一般项为1n 1+ 因此,在端点1649=x 处,级数发散. 再输入Simplify[a[n]/.x->(47/16)]122 则输出左端点处幂级数的一般项为1n )1(n+- 因此,在端点1647=x 处, 级数收敛.也可以在收敛域内求得这个级数的和函数. 输入 Sum[4^(2n)*(x-3)^n/(n+1),{n,0,Infinity}] 则输出)x 3(16)]x 3(161[Log +-+---函数的幂级数展开例1.5 求x cos 的6阶麦克劳林展开式. 输入Series[Cos[x],{x,0,6}] 则输出7642]x [o 720x 24x 2x 1+-+- 注:这是带皮亚诺余项的麦克劳林展开式. 例1.6 求x ln 在1=x 处的6阶泰勒展开式.输入Series[Log[x],{x,1,6}] 则输出.]x [o 6)1x (5)1x (4)1x (3)1x (2)1x ()1x (765432+---+---+--- 例1.7 求x arctan 的5阶泰勒展开式. 输入serl=Series[ArcTan[x],{x,0,5}]; Poly=Normal[serl]则输出x arctan 的近似多项式5x 3x x 53+- 通过作图把x arctan 和它的近似多项式进行比较. 输入Plot[Evaluate[{ArcTan[x],Poly}],{x,-3/2,3/2},PlotStyle->{Dashing[{0.01}],GrayLevel[0]},AspectRatio->l]则输出所作图形, 图中虚线为函数x arctan ,实线为它的近似多项式.实验习题1.求下列级数的和:(1);21∑∞=k kk(2);)12(112∑∞=-k k (3);)2(112∑∞=k k (4).)1(11∑∞=--k k k2. 求幂级数∑∞=+--012)5()1(n nn x 的收敛域与和函数.1233. 求函数)1ln()1(x x ++的6阶麦克劳林多项式.4. 求x arcsin 的6阶麦克劳林多项式.5. 设1)(2+=x xx f ,求)(x f 的5阶和10阶麦克劳林多项式,把两个近似多项式和函数的图形作在一个坐标系内.实验2 微分方程实验目的 理解常微分方程解的概念以及积分曲线和方向场的概念,掌握利用 Mathematica 求微分方程及方程组解的常用命令和方法.基本命令1. 求微分方程的解的命令DSolve对于可以用积分方法求解的微分方程和微分方程组,可用Dsolve 命令来求其通解或特解. 例如,求方程023=+'+''y y y 的通解, 输入DSolve[y ''[x]+3y '[x]+2y[x]==0,y[x],x]则输出含有两个任意常数C[1]和C[2]的通解:{}{}]2[C e ]1[C e ]x [y x x 2--+→注:在上述命令中,一阶导数符号 ' 是通过键盘上的单引号 ' 输入的,二阶导数符号 '' 要 输入两个单引号,而不能输入一个双引号.又如,求解微分方程的初值问题:,10,6,03400='==+'+''==x x y y y y y输入Dsolve[{y''[x]+4 y'[x]+3y[x]==0,y[0]==6, y'[0]==10},y[x],x](*大括号把方程和初始条件放在一起*) 则输出{}{}x 2x 3e 148(e ]x [y +-→-2. 求微分方程的数值解的命令NDSolve对于不可以用积分方法求解的微分方程初值问题,可以用NDSolve 命令来求其特解.例如 要求方程5.0,032=+='=x y x y y 的近似解)5.10(≤≤x , 输入NDSolve[{y'[x]==y[x]^2+x^3,y[0]==0.5},y[x],{x,0,1.5}] (*命令中的{x,0,1.5}表示相应的区间*) 则输出{{y->InterpolatingFunction[{{0.,1.5}},< >]}}注:因为NDSolve 命令得到的输出是解)(x y y =的近似值. 首先在区间[0,1.5]内插入一系 列点n x x x ,,,21 , 计算出在这些点上函数的近似值n y y y ,,,21 , 再通过插值方法得到)(x y y =在区间上的近似解.3. 一阶微分方程的方向场一般地,我们可把一阶微分方程写为),(y x f y ='的形式,其中),(y x f 是已知函数. 上述微分方程表明:未知函数y 在点x 处的斜率等于函数124 f 在点),(y x 处的函数值. 因此,可在Oxy 平面上的每一点, 作出过该点的以),(y x f 为斜率 的一条很短的直线(即是未知函数y 的切线). 这样得到的一个图形就是微分方程),(y x f y =' 的方向场. 为了便于观察, 实际上只要在Oxy 平面上取适当多的点,作出在这些点的函数的 切线. 顺着斜率的走向画出符合初始条件的解,就可以得到方程),(y x f y ='的近似的积分曲 线.例如,画出0)0(,12=-=y y dxdy的方向场. 输入<<Graphics`PlotField`g1=PlotVectorField[{1,1-y^2},{x,-3,3},{y,-2,2}, Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}];则输出方向场的图形,从图中可以观察到, 当初始条件为2/10=y 时, 这个微分方程的解介 于1-和1之间, 且当x 趋向于-∞或∞时, )(x y 分别趋向于1-与1.下面求解这个微分方程, 并在同一坐标系中画出方程的解与方向场的图解. 输入sol=DSolve[{y'[x]==1-y[x]^2,y[0]==0},y[x],x];g2=Plot[sol[[1,1,2]],{x,-3,3},PlotStyle->{Hue[0.1],Thickness[0.005]}]; Show[g2,g1,Axes->None,Frame->True];则输出微分方程的解xxe e x y 2211)(++-=,以及解曲线与方向场的图形. 从中可以看到, 微分方程的解与方向场的箭头方向相吻合.实验内容用Dsolve 命令求解微分方程例2.1 求微分方程 22x xe xy y -=+'的通解. 输入Clear[x,y];DSolve[y '[x]+2x*y[x]==x*Exp[-x^2],y[x],x]或DSolve[D[y[x],x]+2x*y[x]==x*Exp[-x^2],y[x],x] 则输出微分方程的通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+→--]1[C e x e 21]x [y 22x 2x其中C[1]是任意常数.例2.2 求微分方程0=-+'x e y y x 在初始条件e y x 21==下的特解.输入Clear[x,y];DSolve[{x*y ' [x]+y[x]-Exp[x]==0,y[1]==2 E},y[x],x]则输出所求特解:⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→x e e ]x [y x 例2.3 求微分方程x e y y y x 2cos 52=+'-''的通解.输入DSolve[y ''[x]-2y '[x]+5y[x]==Exp[x]*Cos[2 x],y[x],x]//Simplify125则输出所求通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧-++→])x 2[Sin ])1[c 4x (2]x 2[Cos ])2[c 81((e 81]x [y x例2.4 求解微分方程x e x y +=''2, 并作出其积分曲线.输入g1=Table[Plot[E^x+x^3/3+c1+x*c2,{x,-5,5},DisplayFunction->Identity],{c1,-10,10,5},{c2,-5,5,5}];Show[g1,DisplayFunction->$DisplayFunction];则输出积分曲线的图形.例2.5 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++02y x dtdy e y x dtdxt 在初始条件0,100====t t y x 下的特解.输入Clear[x,y,t];DSolve[{x' [t]+x[t]+2 y[t]==Exp[t], y'[t] -x[t]- y[t]==0,x[0]==1,y[0]==0},{x[t],y[t]},t]则输出所求特解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→→])t [Sin ]t [Cos e (21]t [y ],t [Cos ]t [x t例2.6 求解微分方程,)1(122/5+=+-x x y dx dy 并作出积分曲线. 输入<<Graphics`PlotField`DSolve[y' [x]-2y[x]/(x+1)==(x+1)^(5/2),y[x],x]则输出所给积分方程的解为⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+++→]1[C )x 1()x 1(32]x [y 22/7下面在同一坐标系中作出这个微分方程的方向场和积分曲线(设),3,2,1,0,1,2,3---=C 输入t=Table[2(1+x)^(7/2)/3+(1+x)^2c,{c,-1,1}];g1=Plot[Evaluate[t],{x,-1,1},PlotRange->{{-1,1},{-2,2}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g2=PlotVectorField[{1,-2y/(x+1)+(x+1)^(5/2)},{x,-0.999,1},{y,-4,4},Frame->True,ScaleFunction->(1&), ScaleFactor->0.16,HeadLength->0.01, PlotPoints->{20,25},DisplayFunction->Identity];Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];则输出积分曲线的图形.用NDSolve 命令求微积分方程的近似解例2.7 求初值问题:1,0)1()1(2.1=='-++=x y y xy y xy 在区间[1.2,4]上的近似解并作图. 输入fl=NDSolve[{(1+x*y[x])*y[x]+(1-x*y[x])*y'[x]==0,y[1.2]==1},y,{x,1.2,4}]则输出为数值近似解(插值函数)的形式:{{y->InterpolatingFunction[{{1.2,4.}},< >]}}126 用Plot 命令可以把它的图形画出来.不过还需要先使用强制求值命令Evalu-ate, 输入 Plot[Evaluate[y[x]/.fl],{x,1.2,4}] 则输出近似解的图形.如果要求区间[1.2,4]内某一点的函数的近似值, 例如8.1=x y ,只要输入 y[1.8]/.fl 则输出所求结果{3.8341}例2.8 求范德波尔(Van der Pel)方程5.0,0,0)1(02-='==+'-+''==x x y yy y y y在区间[0,20]上的近似解. 输入Clear[x,y];NDSolve[{y''[x]+(y[x]^2-1)*y'[x]+y[x]==0,y[0]==0,y'[0]==-0.5},y,{x,0,20}]; Plot[Evaluate[y[x]/.%],{x,0,20}]可以观察到近似解的图形.例2.9 求出初值问题⎪⎩⎪⎨⎧='==+'+''0)0(,1)0(cos sin 22y y xy x y y 的数值解, 并作出数值解的图形.输入NDSolve[{y''[x]+Sin[x]^2*y'[x]+y[x]==Cos[x]^2,y[0]==1,y'[0]==0},y[x],{x,0,10}]Plot[Evaluate[y[x]/.%],{x,0,10}];则输出所求微分方程的数值解及数值解的图形例2.10 洛伦兹(Lorenz)方程组是由三个一阶微分方程组成的方程组.这三个方程看似简 单, 也没有包含复杂的函数, 但它的解却很有趣和耐人寻味. 试求解洛伦兹方程组,0)0(,4)0(,12)0()(4)()()()()(45)()()()(16)(16)(⎪⎪⎩⎪⎪⎨⎧===-='-+-='-='z y x t z t y t x t z t y t x t z t x t y t x t y t x 并画出解曲线的图形.输入Clear[eq,x,y,z]eq=Sequence[x'[t]==16*y[t]-16*x[t],y'[t]==-x[t]*z[t]-y[t]+45x[t],z'[t]==x[t]*y[t]-4z[t]];sol1=NDSolve[{eq,x[0]==12,y[0]==4,z[0]==0},{x[t],y[t],z[t]},{t,0,16},MaxSteps->10000];g1=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol1],{t,0,16},PlotPoints->14400,Boxed->False,Axes->None];则输出所求数值解的图形. 从图中可以看出洛伦兹微分方程组具有一个奇异吸引子, 这个吸 引子紧紧地把解的图形“吸”在一起. 有趣的是, 无论把解的曲线画得多长, 这些曲线也不 相交.改变初值为,10)0(,10)0(,6)0(=-==z y x 输入sol2=NDSolve[{eq,x[0]==6,y[0]==-10,z[0]==10},{x[t],y[t],z[t]},{t,0,24},MaxSteps->10000];g2=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol2],{t,0,24},127PlotPoints->14400,Boxed->False,Axes->None];Show[GraphicsArray[{g1,g2}]];则输出所求数值解的图形. 从图中可以看出奇异吸引子又出现了, 它把解“吸”在某个区域 内, 使得所有的解好象是有规则地依某种模式缠绕.实验习题1. 求下列微分方程的通解:(1) ;0136=+'+''y y y(2) ();024=+''+y y y (3) ;2sin 52x e y y y x =+'-''(4) .)1(963x e x y y y +=+'-'' 2. 求下列微分方程的特解:(1) ;15,0,029400='==+'+''==x x y y y y y (2) .1,1,02sin ='==++''==ππx x y y x y y3. 求微分方程0cos 2)1(2=-+'-x xy y x 在初始条件10==x y下的特解.分别求精确解和数值解)10(≤≤x 并作图.4. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++t te y x dt dye y x dt dx235的通解.5. 求微分方程组⎪⎪⎩⎪⎨⎧==+-==-+==4,081,0300t t y y x dtdyx y x dt dx的特解.6. 求欧拉方程组324x y y x y x =-'+''的通解.7. 求方程5,0,011='==+'+''==x x y y y y x y 在区间[0,4]上的近似解.实验3 抛射体的运动实验目的 通过微分方程建模和Mathematica 软件,在项目一实验5的基础上,进一步研 究在考虑空气阻力的情况下抛射体的运动.问题 根据侦察,发现离我军大炮阵地水平距离10km 的前方有一敌军的坦克群正以每小 时50km 向我军阵地驶来,现欲发射炮弹摧毁敌军坦克群. 为在最短时间内有效摧毁敌军坦 克,要求每门大炮都能进行精射击,这样问题就可简化为单门大炮对移动坦克的精确射击 问题. 假设炮弹发射速度可控制在0.2km/s 至0.5km/s 之间,问应选择怎样的炮弹发射速度和 怎样的发射角度可以最有效摧毁敌军坦克.说明 本节我们研究受到重力和空气阻力约束的抛射体的射程. 用))(),((t y t x 记抛射体 的位置, 其中x 轴是运动的水平方向, y 轴是垂直方向. 通过在0=y 的约束下最大化x , 可以 计算出使抛射体的射程最大的发射角. 假设0=t 时抛射体(炮弹)在原点(0,0)以与水平线夹角 为,α初始速度为0v 发射出去. 它受到的空气阻力为128 .,⎪⎭⎫⎝⎛-=-=dt dy dt dx k kv F r (3.1)重力为).,0(mg F g -= (3.2) 在推导)(t x 和)(t y 所满足的微分方程之前, 补充一点说明:虽然我们将位置变量),(t x )(t y 仅写作t 的函数,但实际上位置变量还依赖于几个其它的变量或参数. 特别是,x 和y 也依赖于发射角α、阻力系数k 、质量m 及重力加速度g 等.为了推导x 和y 的方程, 按照牛顿定律,ma F =并结合重力的公式(3.2)和空气阻力的公 式(3.1), 得到微分方程0)()(='+''t x k t x m (3.3)0)()(=+'+''mg t y k t y m (3.4)根据前面所述假设知, ),(t x )(t y 满足下列初始条件0)0(,0)0(==y x ,.sin )0(,cos )0(00ααv y v x ='=' (3.5)先求解)(t x ,由方程(3.3),令,x v '=可将其化为一阶微分方程.0=+'kv v m易求出其通解 .)(t m k Ce t v -=由,cos )0()0(0αv x v ='= 得αcos 0v C =,所以.cos )(0t m ke v t v -=α从,x v '=通过积分得到x , 即.cos )(0D e v k m t x t m k+⎪⎭⎫⎝⎛-=-α由,0)0(=x 得,cos 0αv k m D ⎪⎭⎫⎝⎛= 所以)1(cos )(0t m ke v k m t x --⎪⎭⎫⎝⎛=α (3.6)类似地,可从方程(3.4)解出y . 令,y v '= 方程化为一阶微分方程, 两端除以m ,得.g v mkv -=+'再在上述方程两端乘以积分因子.tm k e 得,t m ktm ktm k ge v e mk v e -=+' 即 ,)(t m kt m k ge ve dtd-=两端积分得.C e kgm ve t m kt mk +-=所以 .t m kCe kgmv -+-=利用初始条件αsin )0()0(0v v y =='确定其中的常数C 后, 积分v 得到y ,再次利用初始条129件0)0(=y 确定任意常数后,则得到.sin )1(0αt m kt m k e v k m e k m t k m k gm y ---+⎪⎪⎭⎫ ⎝⎛--= (3.7) 下面我们利用公式(3.6)与(3.7)来描绘炮弹运行的典型图形. 假定炮弹发射的初速度为0.25km/s, 发射角为 55, 输入Clear[a,t,x,y,g,m,k]x[v_,a_,t_]:=(m/k)*v*Cos[a Pi/180]*(1-Exp[-(k/m)*t])y[v_,a_,t_]:=(g*m/k)((m/k)-t-(m/k)*Exp[-(k/m)*t])+(m/k)*v*Sin[a Pi/180]*(1-Exp[-(k/m)*t])g=9.8;m=5.0;k=0.01;炮弹飞行的时间由炮弹落地时的条件0=y 所确定. 输入FindRoot[y[350,55,t]==0,{t,50}]则输出炮弹飞行的时间{t->57.4124}当发射角 65=α时, 输入x[350,55, 57.4124]//N则输出炮弹的最大射程为10888.5现在我们可以画出炮弹运行的典型轨迹了. 输入ParametricPlot[{x[350,55,t],y[350,55,t]},{t,0,57.4124},PlotRange->{0,11000},AxesLabel->{x,y}]图3-1实验报告在上述假设下,进一步研究下列问题:(1) 选择一个初始速度和发射角,利用Mathematica 画出炮弹运行的典型轨迹.(2) 假定坦克在大炮前方10km 处静止不动,炮弹发射的初速度为0.32km/s,应选择什么样 的发射角才能击中坦克?画出炮弹运行的几个轨迹图,通过实验数据和图形来说明你的结论 的合理性.(3) 假定坦克在大炮前方10km 处静止不动,探索降低或调高炮弹发射的初速度的情况 下,应如何选择炮弹的发射角?从上述讨论中总结出最合理有效的发射速度和发射角.130 (4) 在上题结论的基础上,继续探索,假定坦克在大炮前方10km 处以每小时50km 向大炮 方向前进,此时应如何制定迅速摧毁敌军坦克的方案?注:在研究过程中,还要包括适当改变阻力系数k 与炮弹的质量m 所带来的变化.实验4 蹦极跳运动实验目的 利用Mathematica 软件,通过微分方程建模,研究蹦极跳运动.问题 在不考虑空气阻力和考虑空气阻力等多种情况下,研究蹦极跳运动中,蹦极者与蹦 极绳设计之间的各种关系.说明 蹦极绳相当于一根粗橡皮筋或有弹性的绳子. 当受到张力使之超过其自然长度,绳 子会产生一个线性回复力, 即绳子会产生一个力使它恢复到自然长度, 而这个力的大小与它 被拉伸的长度成正比. 在一次完美的蹦极跳过程中, 蹦极者爬上一座高桥或高的建筑物, 把 绳的一头系在自己身上, 另一头系在一个固定物体如桥栏杆上, 当他跳离桥时, 激动人心的 时刻就到来了. 这里要分析的是蹦极者从跳出那一瞬间起他的运动规律.首先要建立坐标系. 假设蹦极者的运动轨迹是垂直的, 因此我们只要用一个坐标来确 定他在时刻t 的位置. 设y 是垂直坐标轴, 单位为英尺, 正向朝下, 选择0=y 为桥平面, 时间 t 的单位为秒, 蹦极者跳出的瞬间为,0=t 则)(t y 表示t 时刻蹦极者的位置. 下面我们要求出 )(t y 的表达式.由牛顿第二定律, 物体的质量乘以加速度等于物体所受的力. 我们假设蹦极者所受的力 只有重力、空气阻力和蹦极绳产生的回复力. 当然, 直到蹦极者降落的距离大于蹦极绳的自 然长度时, 蹦极绳才会产生回复力. 为简单起见, 假设空气阻力的大小与速度成正比, 比例 系数为1, 蹦极绳回复力的比例系数为0.4. 这些假设是合理的, 所得到的数学结果与研究所 做的蹦极实验非常吻合. 重力加速度./322s ft g =现在我们来考虑一次具体的蹦极跳. 假设绳的自然长度为,200ft L = 蹦极者的体重为 160lb ①,则他的质量为532/160==m 斯②. 在他到达绳的自然长度(即)200-=-=L y 前, 蹦 极者的坠落满足下列初值问题:,1v mg dt dy --= .0)0(=v 利用Mathematica 求解上述问题. 输入g=32; m=5; L=200;{{v1[t_],y1[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m,y'[t]==v[t],v[0]==0,y[0]==0},{v,y},t]则输出)}}t e e 55(e 160),e 1(e 160{{5/t 5/t 5/t 5/t 5/t +--+----蹦极者坠落L 英尺所用的时间为t1=t/.FindRoot[y1[t]==-L,{t,2}]4.00609现在我们需要找到当蹦极绳产生回复力后的运动初始条件. 当1t t >时, 蹦极者的坠落 满足方程)(4.01y L mv m g dt dv +---= 初始条件为).1(1)1(,)1(t v t v L t y =-=解初值问题:{{v2[t_],y2[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m-0.4*(L+y[t])/m,y'[t]==v[t],v[t1]==v1[t1],y[t1]==-L},{v,y},t]则输出所求解, 这个解是用复指数函数来表示的.现在蹦极者的位置由命令bungeey[t_]=If[t<t1,y1[t],y2[t]]给出, 输入命令Plot[bungeey[t],{t,0,40},PlotRange->All]则输出位置-时间图形(图4-1)图4-1从上图可以看出, 蹦极者在大约13s内由桥面坠落770ft, 然后弹回到桥面下550ft, 上下振动几次, 最终降落到桥面下大约600ft处.实验报告1.在上述问题中(),=wL求出需要多长时间蹦极者才能到达他运动轨迹上的,200=160最低点, 他能下降到桥面下多少英尺?2.用图描述一个体重为195lb, 用200ft长绳子的蹦极者的坠落. 在绳子对他产生力之前, 他能做多长时间的“自由”降落?3.假设你有一根300ft长的蹦极索, 在一组坐标轴上画出你所在实验组的全体成员的运动轨迹草图.4.一个55岁, 体重185lb的蹦极者, 用一根250ft长的蹦极索. 在降落过程中, 他达到的最大速度是多少? 当他最终停止运动时, 他被挂在桥面下多少英尺?5.用不同的空气阻力系数和蹦极索常数做实验, 确定一组合理的参数, 使得在这组参数下, 一个160lb的蹦极者可以回弹到蹦极索的自然长度以上.6.科罗拉多的皇家乔治桥(它跨越皇家乔治峡谷)距谷底1053ft, 一个175lb的蹦极者希望能正好碰到谷底, 则他应使用多长的绳子?7.假如上题中的蹦极者体重增加10lb, 再用同样长的绳子从皇家乔治桥上跳下, 则当他撞到乔治峡谷谷底时, 他的坠落速度是多少?131参考文献[1] 吴赣昌等. 高等数学多媒体学习系统, 海南出版社, 2005[2] 吴赣昌等. 线性代数多媒体学习系统, 海南出版社, 2005[3] 吴赣昌等. 概率论与数理统计多媒体学习系统, 海南出版社, 2005[4] A.D.Andrew, G.L.Cain, S.Crum, T.D.Morley. 用Mathematica 做微积分实验. 俞正光, 章纪民译. 清华大学出版社, 2003[5] 章栋恩,许晓革. 高等数学实验, 高等教育出版社, 2004[6] 上海市教育委员会组编. 高等数学. 科学出版社, 1998[7] 赵静等. 工科数学实验. 高等教育出版社, 1999[8] 乐经良, 向隆万, 李世栋. 数学实验. 高等教育出版社, 1999[9] 李尚志, 陈发来等. 数学实验. 高等教育出版社, 1999[10] 梁浩云. Mathematica 软件与数学实验. 华南理工大学出版社. 2001[11] 张韵华. 符号计算系统Mathematica 教程. 科学出版社. 2001[12] 邓建松. Mathematica 使用指南. 彭冉冉译. 麦格劳-希尔出版社. 2002132。
Mathematica在微分方程上的应用

5 Sinx , 4 Sinx , 3 Sin x, 2 Sinx, Sinx , 0, Sinx , 2 Sin x, 3 Sin x, 4 Sinx, 5 Sin x
因為 Plot 函式可以一次處理一連串的函數,所以可以很容易地繪出上所有特 定解。在這之前,我們先產生一組由 Hue 函式組成的 colors 串列,其中 Hue[0] 代表的是深紅色,Hue[0.3]為綠色,Hue[0.6]為淺藍色,Hue[0.7]為深藍色:
yx yx
故該變數仍可進一步地自由加以利用,例如求算 y ( x) 2 對 x 的一階導數,可以直 接沿用 y[x]變數符號,而不另外使用 z[x]或其他變數名稱:
Dyx2, x 2 yx yx
當需要將 sol 的結果代入 y[x]時,也可以利用 Mathematica 提供的代入子 (/.) 加以進行,在 sol 的後面緊接著 1 代表代入的是第一組解 (雖然也是唯一的 一個解,在其他的情況則可能會有兩個以上的解):
Dyx . sol1, x yx Cosx . sol1 True
將特定數值代入常數項 C[1]即可得到特定解,下面得到一組當 C[1]分別等於
-5、-4、-3、-2、-1、0、1、2、3、4、5 等值時的特定解,並將此組特定解集
合命名為 spesol:
spesol Tableyx . sol1 . C1 i, i, 5, 5
mathematica 积分微分方程

mathematica积分微分方程一、简介Mathematica是一款功能强大的数学软件,它提供了丰富的函数和工具,可以方便地进行积分微分方程的计算和求解。
本教程将介绍如何使用Mathematica进行积分微分方程的求解,帮助您更好地理解和掌握数学方法。
二、基本概念积分微分方程是一种常见的数学问题,它涉及到函数的积分和微分。
在解决这类问题时,我们需要根据方程的特点,选择合适的积分和微分方法,如牛顿-莱布尼兹公式、级数法等。
通过Mathematica,我们可以轻松地实现这些方法,并得到准确的答案。
三、Mathematica的使用1.安装和打开Mathematica软件。
2.导入所需的函数和符号。
在Mathematica中,可以使用Integrate和D函数来求解积分微分方程。
3.编写方程并导入数据。
将方程中的变量和数据导入Mathematica中,以便进行计算和分析。
4.使用Integrate函数求解积分。
根据方程的特点,选择合适的积分方法,如牛顿-莱布尼兹公式或级数法,并使用Mathematica进行计算。
5.使用D函数求解微分方程。
根据方程的特点,选择合适的微分方法,如分离变量法或级数法,并使用Mathematica进行计算。
6.检查结果是否符合预期。
检查计算结果是否符合预期,并根据需要进行调整和优化。
四、示例以下是一个简单的示例,展示如何使用Mathematica求解一个简单的微分方程:解:我们要求解方程y''+y=cos(x)的解。
(1)导入所需的函数和符号:In[1]:=Integrate[D[y,x]^2+y,{x,x0,x1}]//SimplifyOut[1]=y''[x]+y[x]==0(2)编写微分方程:In[2]:=y[x_]=Cos[x]+a*y[x]+b*y'[x]//DSolve[%,a,x]Out[2]=y[x]==-Cos[x]/a-(a^2/2)/Sin[x]+(b*a^2/2)/Cos[x]+C[1](3)使用D函数求解微分方程:In[3]:=a=1;b=2;x=0;y=y[x];y'=y'[x];D[y,x]//SimplifyOut[3]=(y-Sin[x])+a*(D[y,x]-Cos[x])+b*(D[y',x])/2通过上述步骤,我们可以得到方程的解为y(x)=f(x)。
数学实验 Mathematic实验九 无穷级数讲解

天水师范学院数学与统计学院实验报告实验项目名称无穷级数所属课程名称数学实验实验类型微积分实验实验日期2011.11.16班级学号姓名成绩fx=Normal[Series[Exp[x],{x,0,3}]]Plot[fx,{x,-3,3}]则只能得到去掉余项后的展开式,得不到函数的图形,这时要使用强制求值命令Evaluate,改成输入Plot[Evaluate[fx],{x,-3,3}]便可以得到函数的图形5.作散点图命令ListPlot.ListPlot[Table[j^2,{j,16}],PlotStyle PointSize[0.012]] 6.用符号“/;”定义分段函数.符号“/;”用于定义某种规则,“/;”后面是条件,例如输入Clear[g,gf];g[x_]:=x/;0x<1g[x_]:=-x/;-1x<0g[x_]:=g[x-2]/;x 1gf=Plot[g[x],{x,-1,6}]用which命令也可以定义分段函数,从这个例子中看到,用“…(表达式)/;…(条件)”来定义周期性分段函数更方便些.用Plot命令可以作出分段函数的图形,但用Mathematica命令求分段函数的导数或积分时往往会有问题.用which定义的分段函数可以求导,但不能积分.Mathematica内部函数中有一些也是分段函数,如:Mod[x,1],Abs[x],Floor[x]和Unitstep[x].其中只有单位阶跃函数Uniltstep[x]可以用Mathematica命令来求导和求定积分,因此在求ListPlot[vals,PlotStyle PointSize[0.012]] Sum[a[n],{n,1,Infinity}]2.求幂级数的收敛域.例9.4 求24(3)1n nnxn∞=-+∑收敛域与和函数.Clear[a];a[n_]=4^(2n)*(x-3)^n/(n+1);stepone=a[n+1]/a[n]//Simplifysteptwo=Limit[stepone,n Infinity]ydd=Solve[steptwo1,x]zdd=Solve[steptwo-1,x]Simplify[a[n]/.x(49/16)]Simplify[a[n]/.x(47/16)]Sum[4^(2n)*(x-3)^n/(n+1),{n,0,Infinity}] 3.函数的幂级数展开.例9.5 求cos x的6阶麦克劳林展开式.Series[Cos[x],{x,0,6}]例9.6 求ln x在1x=处的6阶泰勒展开式.Series[Log[x],{x,1,6}]例9.7 求arctan x的5阶麦克劳林展开式.ser1=Series[ArcTan[x],{x,0,5}];poly=Normal[ser1]Plot[Evaluate[{ArcTan[x],poly}],{x ,-3/2,3/2},PlotStyle {Dashing[{0.01}],GrayLevel[0]},AspectRatio 1]例9.8 求22(1)(1)x x e --+在1x =处的8阶泰勒展开,并通过作图比较函数和它的近似多项式.Clear[f];f[x_]=Exp[-(x-1)^2*(x+1)^2]; poly2=Normal[Series[f[x],{x ,1,8}]] Plot[Evaluate[{f[x],poly2}],{x ,-1.5,1.5},PlotRange {-2,3/2},PlotStyle {Dashing[{0.01}],GrayLevel[0]}]例9.9 求函数x sin 在0=x 处的3,5,7,…,9l 阶泰勒展开,通过作图比较函数和它的近似多项式,并形成动画进一步观察.Do[Plot[{Sum[(-1)^j*x^(2j+1)/(2j+1)!,{j ,0,k}],Sin[x]},{x ,-40,40},PlotStyle {RGBColor[1,0,0],RGBColor[0,0,1]}],{k ,1,45}] 4.傅里叶级数.例9.10 设()f x 是周期为2的周期函数它在一个周期内的表达式为1,01(),10x f x x x ≤<⎧=⎨--≤<⎩求它的傅立叶级数展开式的前5项和前8项,作出()f x 和它的近似三角级数的图形.Clear[f ,a ,b ,fs ,L]; f[x_]:=1/;0x<1 f[x_]:=-x/;-1x<0 f[x_]:=f[x-2]/;1x gf=Plot[f[x],{x ,-1,5}] Clear[L ,a ,b ,fs ,f1,f2]; L=1;a[n_]:=(Integrate[-x*Cos[n*Pi*x/L],{x,-L,0}]+Integrate[Cos[n*Pi*x/L],{x ,0,L}])/Lb[n_]:=(Integrate[-x*Sin[n*Pi*x/L],{x,-L,0}]+Integrate[Sin[n*Pi*x/L],{x ,0,L}])/Lfs[k_,x_]:=a[k]*Cos[k*Pi*x/L]+b[k]*Sin[k*Pi*x/L] fourier[n_,x_]:=a[0]/2+Sum[fs[k ,x],{k ,1,n}] f1=fourier[5,x]//N f2=fourier[10,x]//NPlot[Evaluate[{f[x],f1}],{x ,-1,5},PlotStyle {GrayLevel[0],GrayLevel[0.4]}]Plot[Evaluate[{f[x],f2}],{x ,-1,5},PlotStyle {GrayLevel[0],GrayLevel[0.4]}]设)(x g 是以2Pi 为周期的周期函数,它在],[ππ-的表达式是1,0()1,0x g x x ππ--≤<⎧=⎨≤<⎩,将)(x g 展开成傅里叶级数. Clear[g];g[x_]:=-1/;-Pi x<0 g[x_]:=1/;0x<Pi g[x_]:=g[x-2Pi]/;Pi xPlot[g[x],{x ,-Pi ,5Pi},PlotStyle {RGBColor[0,1,0]}]; Clear[b2,fourier2,tu ,tu2,toshow];b2[n_]:=b2[n]=2Integrate[1*Sin[n*x],{x ,0,Pi}]/Pi ; fourier2[n_,x_]:=Sum[b2[k]*Sin[k*x],{k ,1,n}]; tu[n_]:=Plot[{g[x],Evaluate[fourier2[n ,x]]},{x ,-Pi ,5Pi}, PlotStyle{RGBColor[0,1,0],RGBColor[1,0.3,0.5]},DisplayFunctionIdentity];tu2=Table[tu[n],{n ,1,30,5}]; toshow=Partition[tu2,2]; Show[GraphicsArray[toshow]]【实验结论】(结果)1.用Mathematica 求无穷级数的和;2.求幂级数的收敛域;3.展开函数为幂级数以及展开周期函数为傅里叶级数.附录1:源程序1Sum k2^k,k,1,Infinity2Sum12k1^2,k,1,Infinity 283Sum12k^2,k,1,Infinity 2244Sum1^k1k,k,1,Infinity Log2Clear a;a n_x1^2n15^n; stepone a n1a n Simplify11x25steptwo Limit stepone,n Infinity11x25ydd Solve steptwo1,xzdd Solve steptwo1,xx15,x15x15,x15x15,x15Simplify a n.x1Sqrt5Sin kkSimplify a n.x1Sqrt5Sin kkSum x1^2n15^n,n,0,Infinity 51x62x x2Series1x Log1x,x,0,6Log2Log x Log x2O x7Series ArcSin x,x,0,6x x363x540O x7Clear f;f x_x x^21;Series f x,x,0,5Series f x,x,0,10p1Normal Series f x,x,0,5p2Normal Series f x,x,0,10p3Plot Evaluate f x,p1,p2,x,3,3,PlotRange2,32, PlotStyle Dashing0.01,GrayLevel0x x3x5O x6x x3x5x7x9O x11x x3x5x x3x5x7x9GraphicsClear f,a,b,fs,L;f x_:1x^2;12x12 f x_:f x1;x12gf Plot f x,x,1,5GraphicsL12;a n_:Integrate x Cos n Pi x L,x,L,0Integrate Cos n Pi x l,x,0,LLb n_:Integrate x Sin n Pi x L,x,L,0Integrate Sin n Pi x l,x,0,L L fs k_,x_:a k Cos k Pi x L b k Sin k Pi x Lfourier n_,x_:a02Sum fs k,x,k,1,6f1fourier5,x Nf2fourier10,x N0.625 2.Cos 6.28319x0.05066060.31831l Sin 1.5708l0.31831l Cos12.5664x Sin 3.14159l2.Cos18.8496x0.005628950.106103l Sin 4.71239l0.159155l Cos25.1327x Sin 6.28319l2.Cos31.4159x0.002026420.063662l Sin 7.85398l0.106103l Cos37.6991x Sin 9.42478l2.0.07957750.31831l0.31831l Cos 1.5708lSin 6.28319x2.0.03978870.159155l0.159155l Cos3.14159lSin12.5664x2.0.02652580.106103l0.106103l Cos 4.71239lSin18.8496x2.0.01989440.0795775l0.0795775l Cos 6.28319lSin25.1327x2.0.01591550.063662l0.063662l Cos 7.85398lSin31.4159x2.0.01326290.0530516l0.0530516l Cos 9.42478lSin37.6991x0.625 2.Cos 6.28319x0.05066060.31831l Sin 1.5708l0.31831l Cos12.5664x Sin 3.14159l2.Cos18.8496x0.005628950.106103l Sin 4.71239l0.159155l Cos25.1327x Sin 6.28319l2.Cos31.4159x0.002026420.063662l Sin 7.85398l0.106103l Cos37.6991x Sin 9.42478l2.0.07957750.31831l0.31831l Cos 1.5708lSin 6.28319x2.0.03978870.159155l0.159155l Cos3.14159lSin12.5664x2.0.02652580.106103l0.106103l Cos 4.71239lSin18.8496x2.0.01989440.0795775l0.0795775l Cos 6.28319lSin25.1327x2.0.01591550.063662l0.063662l Cos 7.85398lSin31.4159x2.0.01326290.0530516l0.0530516l Cos 9.42478lSin37.6991xPlot Evaluate f x,f1,x,1,5,PlotStyle GrayLevel0,GrayLevel0.4Plot Evaluate f x,f2,x,1,5,PlotStyle GrayLevel0,GrayLevel0.4Plot::plnr:f x is not a machine size real number at x 1..Plot::plnr:f x is not a machine size real number at x0.756598.Plot::plnr:f x is not a machine size real number at x0.629911.General::stop:Further output of Plot::plnr will be suppressed during this calculation.GraphicsPlot::plnr:f x is not a machine size real number at x 1..Plot::plnr:f x is not a machine size real number at x0.756598.Plot::plnr:f x is not a machine size real number at x0.629911.General::stop:Further output of Plot::plnr will be suppressed during this calculation.GraphicsClear f,a,b,fs,L;f x_:1;0x1f x_:2x;1x2 f x_:f x2;x2 gf Plot f x,x,1,5GraphicsL1;a n_:Integrate x Cos n Pi x L,x,L,0Integrate Cos n Pi x l,x,0,LLb n_:Integrate x Sin n Pi x L,x,L,0Integrate Sin n Pi x l,x,0,L L fs k_,x_:a k Cos k Pi x L b k Sin k Pi x Lfourier n_,x_:a02Sum fs k,x,k,1,8f1fourier5,x Nf2fourier10,x N0.75Cos 3.14159x0.2026420.31831l Sin 3.14159l0.159155l Cos 6.28319x Sin 6.28319lCos9.42478x0.02251580.106103l Sin 9.42478l0.0795775l Cos12.5664x Sin 12.5664lCos15.708x0.008105690.063662l Sin 15.708l0.0530516l Cos18.8496x Sin 18.8496lCos21.9911x0.004135560.0454728l Sin 21.9911l0.0397887l Cos25.1327x Sin 25.1327l0.318310.31831l0.31831l Cos 3.14159lSin 3.14159x0.1591550.159155l0.159155l Cos 6.28319lSin 6.28319x0.1061030.106103l0.106103l Cos 9.42478lSin9.42478x0.07957750.0795775l0.0795775l Cos 12.5664lSin12.5664x0.0636620.063662l0.063662l Cos 15.708lSin15.708x0.05305160.0530516l0.0530516l Cos 18.8496lSin18.8496x0.04547280.0454728l0.0454728l Cos 21.9911lSin21.9911x0.03978870.0397887l0.0397887l Cos 25.1327lSin25.1327x0.75Cos 3.14159x0.2026420.31831l Sin 3.14159l0.159155l Cos 6.28319x Sin 6.28319lCos9.42478x0.02251580.106103l Sin 9.42478l0.0795775l Cos12.5664x Sin 12.5664lCos15.708x0.008105690.063662l Sin 15.708l0.0530516l Cos18.8496x Sin 18.8496lCos21.9911x0.004135560.0454728l Sin 21.9911l0.0397887l Cos25.1327x Sin 25.1327l0.318310.31831l0.31831l Cos 3.14159lSin 3.14159x0.1591550.159155l0.159155l Cos 6.28319lSin 6.28319x0.1061030.106103l0.106103l Cos 9.42478lSin9.42478x0.07957750.0795775l0.0795775l Cos 12.5664lSin12.5664x0.0636620.063662l0.063662l Cos 15.708lSin15.708x0.05305160.0530516l0.0530516l Cos 18.8496lSin18.8496x0.04547280.0454728l0.0454728l Cos 21.9911lSin21.9911x0.03978870.0397887l0.0397887l Cos 25.1327lSin25.1327xPlot Evaluate f x,f1,x,1,5,PlotStyle GrayLevel0,GrayLevel0.4Plot Evaluate f x,f2,x,1,5,PlotStyle GrayLevel0,GrayLevel0.4Plot::plnr:f x is not a machine size real number at x 1..Plot::plnr:f x is not a machine size real number at x0.756598. Plot::plnr:f x is not a machine size real number at x0.491147. General::stop:Further output of Plot::plnr will be suppressed during this calculation.GraphicsPlot::plnr:f x is not a machine size real number at x 1..Plot::plnr:f x is not a machine size real number at x0.756598. Plot::plnr:f x is not a machine size real number at x0.491147. General::stop:Further output of Plot::plnr will be suppressed during thisGraphicsClear a;a n_Sin k k;vals Table a k,k,1,50;ListPlot vals,PlotStyle PointSize0.015Graphics附录2:实验报告填写说明1.实验项目名称:要求与实验教学大纲一致。
Mathematica用法III

对于非多项式函数,Solve也可以进行求解。 用函数Solve也可以求联立方程组的解。
求解方程组时,我们也可以先定义方程组,再用 Solve命令调用已经定义的方程组进行求解。
在上例中,N元的方程组实际被定义为一个包含N个 元素的列表,表中的每个元素是一个方程(逻辑语句)。
Dt[f,x]
计算f的全微商,所有变量依赖于x
D[f,x,Constants->{a}] 计算f的全微商,设a不依赖于x
SetAttributes [a,Constant]
设a为常数
简单举几个例子:
4、积分
在Mathematica中,用函数Integrate求不定积分和
定积分,用NIntegrate求数值积分,格式如下:
函数FindRoot的缺点是,一次运算只能得到距离起 始点最近的一个解;而且,如果选定的起始点位置不合 适,有可能迭代过程不收敛,从而得不出解。比如:
关于如何选点确保迭代收敛的知识,我们会在后续 的课程中详加说明。现在我们的常用做法是,如果要用 FindRoot求解,就先用Plot命令画出函数图线,观察解 的大概位置,然后在附近选择起始点。如下所示:
2、求极限 Mathematica计算极限的命令是Limit,它的用法如下:
Limit[f,x->x0]
当x->x0时求f的极限
Limit[f,x->x0,Direction->1] 当x->x0时求f的左极限
Limit[f,x->x0,Direction->-1] 当x->x0时求f的右极限
趋向的点x0可以是常数,也可以是+∞,-∞,例如:
由图可知,函数在 0至2.2之间和x轴有两 个交点。所以我们在用 FindRoot命令求根时起 始点可以选在交点附近。
实验4 蹦极跳运动(综合实验)

119项目四 无穷级数与微分方程实验4 蹦极跳运动(综合实验)实验目的 利用Mathematica 软件,通过微分方程建模,研究蹦极跳运动.问题 在不考虑空气阻力和考虑空气阻力等多种情况下,研究蹦极跳运动中,蹦极者与蹦 极绳设计之间的各种关系.说明 蹦极绳相当于一根粗橡皮筋或有弹性的绳子. 当受到张力使之超过其自然长度,绳 子会产生一个线性回复力, 即绳子会产生一个力使它恢复到自然长度, 而这个力的大小与它 被拉伸的长度成正比. 在一次完美的蹦极跳过程中, 蹦极者爬上一座高桥或高的建筑物, 把 绳的一头系在自己身上, 另一头系在一个固定物体如桥栏杆上, 当他跳离桥时, 激动人心的 时刻就到来了. 这里要分析的是蹦极者从跳出那一瞬间起他的运动规律.首先要建立坐标系. 假设蹦极者的运动轨迹是垂直的, 因此我们只要用一个坐标来确 定他在时刻t 的位置. 设y 是垂直坐标轴, 单位为英尺, 正向朝下, 选择0=y 为桥平面, 时间 t 的单位为秒, 蹦极者跳出的瞬间为,0=t 则)(t y 表示t 时刻蹦极者的位置. 下面我们要求出 )(t y 的表达式.由牛顿第二定律, 物体的质量乘以加速度等于物体所受的力. 我们假设蹦极者所受的力 只有重力、空气阻力和蹦极绳产生的回复力. 当然, 直到蹦极者降落的距离大于蹦极绳的自 然长度时, 蹦极绳才会产生回复力. 为简单起见, 假设空气阻力的大小与速度成正比, 比例 系数为1, 蹦极绳回复力的比例系数为0.4. 这些假设是合理的, 所得到的数学结果与研究所 做的蹦极实验非常吻合. 重力加速度./322s ft g =现在我们来考虑一次具体的蹦极跳. 假设绳的自然长度为,200ft L = 蹦极者的体重为 160lb ①,则他的质量为532/160==m 斯②. 在他到达绳的自然长度(即)200-=-=L y 前, 蹦 极者的坠落满足下列初值问题:,1v mg dt dy --= .0)0(=v 利用Mathematica 求解上述问题. 输入g=32; m=5; L=200;{{v1[t_],y1[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m,y'[t]==v[t],v[0]==0,y[0]==0},{v,y},t]则输出)}}t e e 55(e 160),e 1(e 160{{5/t 5/t 5/t 5/t 5/t +--+----蹦极者坠落L 英尺所用的时间为t1=t/.FindRoot[y1[t]==-L,{t,2}]4.00609现在我们需要找到当蹦极绳产生回复力后的运动初始条件. 当1t t >时, 蹦极者的坠落 满足方程)(4.01y L mv m g dt dv +---= 初始条件为).1(1)1(,)1(t v t v L t y =-=解初值问题:{{v2[t_],y2[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m-0.4*(L+y[t])/m,y'[t]==v[t],v[t1]==v1[t1],y[t1]==-L},{v,y},t]120 则输出下列结果)}}e )i 45.1587.4200(_e )i 45.1587.4200(_e )i 42.2333.0(e )i 98.139901.3704()i 65.1083528.132((e )i 262116.0146921.0(),e )i 342.233364.617(_e )i 1007423.11068557.2(e )i 99.11191001673.4()i 3019.73961.299((e )i 262116.0146921.0{{(t )i 264575.01.0()i 11982.2400609.0(t )i 264575.01.0(400609.0t )i 52915.0.0()i 05991.1801218.0(t )i 52915.0.0(400609.0t )i 264575.01.0(t )i 52915.0.0()i 05991.1801218.0(t )i 52915.0.0()i 11982.2400609.0(1314t )i 52915.0.0(400609.014t )i 264575.01.0(++++++++++--++++++--++---+-++-++--+⨯-⨯--⨯---这个解是用复指数函数来表示的.现在蹦极者的位置由命令bungeey[t_]=If[t<t1,y1[t],y2[t]]给出, 输入命令Plot[bungeey[t],{t,0,40},PlotRange->All]则输出位置-时间图形(图4.1)图4.1从上图可以看出, 蹦极者在大约13s 内由桥面坠落770ft, 然后弹回到桥面下550ft, 上下 振动几次, 最终降落到桥面下大约600ft 处.实验报告1.在上述问题中(),160,200==w L 求出需要多长时间蹦极者才能到达他运动轨迹上的 最低点, 他能下降到桥面下多少英尺?2.用图描述一个体重为195lb, 用200ft 长绳子的蹦极者的坠落. 在绳子对他产生力之前, 他能做多长时间的“自由”降落?3.假设你有一根300ft 长的蹦极索, 在一组坐标轴上画出你所在实验组的全体成员的运 动轨迹草图.4.一个55岁, 体重185lb 的蹦极者, 用一根250ft 长的蹦极索. 在降落过程中, 他达到的 最大速度是多少? 当他最终停止运动时, 他被挂在桥面下多少英尺?5.用不同的空气阻力系数和蹦极索常数做实验, 确定一组合理的参数, 使得在这组参数下, 一个160lb的蹦极者可以回弹到蹦极索的自然长度以上.6.科罗拉多的皇家乔治桥(它跨越皇家乔治峡谷)距谷底1053ft, 一个175lb的蹦极者希望能正好碰到谷底, 则他应使用多长的绳子?7.假如上题中的蹦极者体重增加10lb, 再用同样长的绳子从皇家乔治桥上跳下, 则当他撞到乔治峡谷谷底时, 他的坠落速度是多少?121。
(完整版)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——常微分方程、拉氏变换与级数实验

§13.5常微分方程、拉氏变换与级数实验[学习目标]1. 会用Mathematica 求解微分方程(组);2. 能用Mathematica 求微分方程(组)的数值解;3. 会利用Mathematica 进行拉氏变换与逆变换;4. 能进行幂级数和傅里叶级数的展开.一、 常微分方程(组)Mathematica 能求常微分方程(组)的准确解,能求解的类型大致覆盖了人工求解的范围,功能很强。
但不如人灵活(例如在隐函数和隐方程的处理方面),输出的结果与教材上的答案可能在形式上不同。
另外,Mathematica 求数值解也很方便,且有利于作出解的图形。
在本节中,使用Laplace 变换解常微分方程(组)的例子也是十分成功的,过去敬而远之的方法如今可以轻而易举的实现了.求准确解的函数调用格式如下:DSolve [eqn ,y [x ],x ] 求方程eqn 的通解y (x ),其中自变量是x 。
DSolve[{eqn ,y[x 0]= =y 0},y[x ],x ] 求满足初始条件y (x 0)= y 0的特解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 解下列常微分方程(组):(1)25)1(12+++='x x yy ,(2)y x x y y )(132++=', (3) ⎩⎨⎧-='='yz z y , (4)⎩⎨⎧-='='yz zy 的通解及满足初始条件y (0)=0,z (0)=1的特解。
解:In [1]:=DSolve [y ′[x ]= =2y[x ]/(x+1)+(x+1)^(5/2), y [x],x ]Out [1]=⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+++→]1[)1()1(32][22/7c x x x yIn [2]:=DSolve [y ′[x]= =(1+y [x ]^2)/((x+x^3)y[x ]),y[x],x]Out [2]={{2211]1[11][x c x x y ++---→}, {2211]1[11][xc x x y ++--→}} 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]}}提示:认真观察上例,可以从中学习输入格式,未知函数总带有自变量,等号用连续键入两个等号表示,这两点由于不习惯会出错!导数符号用键盘上的撇号,连续两撇表示二阶导数,这与习惯相同。
Mathematica的主要功能

Table[f,{i,imin,imax,stepi},{j,jmin,jmax,stepj}] 表的通项为 f(f 是变量 i 和 j 的函数),min,max,step 规定 了初值、终值、步长,min 和 step 的默认值为 1。
Simplify[expr] Factor[expr] Collect[expr,x] Together[expr] Cancel[expr] Apart[expr] 将表达式变换化简 对表达式进行因式分解 将表达式 expr 中 x 的同次幂合并 对表达式进行通分 约去表达式的分子、分母的公因式 将有理式分解为最简分式的和
效数字) ,但是按标准输出只显示前 6 位有效数字
N[ 表达式 ,数字位数 ] 指定计算表达式的具有任意数字位数的
近似值(指定的数字位数应该大于 16),结果在末位后是四舍五 入的。
4、算术表达式
常量和变量用算术运算符连接而成的式子称为算术表达式。表达式按 照与常规相同的优先级自左向右执行计算。在运算中运用的标点符号 必须是英文的,不能用中文的标点符号, “; ”表示运算但不显示结果。 Mathematica 中和、差、积、商、乘方运算分别用相应的键“+” 、 “-” 、 “*”或空格、 “/” 、 “^”来表示,也可通过基本输入模板来输入。
Mathematica 支持所有的常用的数学函数,下面介绍一些简单而 又常用的数学函数: Sin[x] 正弦函数
Tan[x] Sec[x] 正切函数 正割函数 Cos[x] Cot[x] Csc[x] 余弦函数 余切函数 余割函数
ArcSin[x] ArcTan[x]
Exp[x] Log[x] Abs[x] n!
mathematica简介

In[1]:=p1=1+x;p2=1-x^2;p1+p2
注意:从 Out[5]和 Out[6]可以看到,乘法 和除法其实什么也没做,需要用前面介绍的化 简函数将结果化简。
1 x2 Out[6]= 1 x
PolynomialQuotient[p1,p2,x]
求 x 的多项式 p1 被 p2 除的商
使用等号给变量赋值,具体格式如下:
x =Value x = y =Value {x,y,…}={Value1,Value2,…} 给 x 赋值。 同时给 x,y 赋相同的值。 同时给 x,y,„赋不同的值。
为了避免隐蔽的错误,应该及时清除不再使用的变量,这时可以 用 “Clear” 命令, 格式为 “Clear[变量名]” ; 或者可以用 “ x= .” 清除变量 x 的值。
每次运行结束后, Mathematica 会自动在输入的式子前面加上 “In[n]:=” (n 表示输入命令的序列号) ,在输出的答案前面加上 “Out[n]=” (n 表示输出结果的序列号) ,以便分清输入和输出并 自动加上编号。可以用“%”表示前一个输出的内容, “%%” 表 示倒数第 2 个输出的内容,依此类推, “% n”表示第 n 个(即 Out[n])输出的内容。也就是说 Mathematica 输出的内容被系统 记忆,它们可以像其它变量一样在后面的计算中引用。
(1)函数名的首字符用大写,后面的字符一般用小写,当函数名 分成几段时, 每段的首字符应大写, 函数名中不能含有空格。
(2)参数用方括号括起来,不能用圆括号,Mathematica 认为圆 括号表示相乘。
三、基本代数运算
下面介绍一些实现基本代数运算的函数,用于变换数学表达式、解 方程和解不等式。Mathematica 具有强大的符号运算功能,下面列 举的函数均可代入具有字母的表达式进行计算,得到精确解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
119项目四 无穷级数与微分方程(仅供学习交流)实验1 无穷级数(基础实验)实验目的观察无穷级数部分和的变化趋势,进一步理解级数的审敛法以及幂级数部分和对函数的 逼近. 掌握用Mathematica 求无穷级数的和, 求幂级数的收敛域, 展开函数为幂级数以及展 开周期函数为傅里叶级数的方法.基本命令1. 求无穷和的命令Sum该命令可用来求无穷和. 例如,输入 Sum[1/n^2,{n,l,Infinity}]则输出无穷级数的和为.6/2π 命令Sum 与数学中的求和号∑相当. 2. 将函数展开为幂级数的命令Series 该命令的基本格式为Series[f[x],{x,x0,n}]它将)(x f 展开成关于0x x -的幂级数. 幂级数的最高次幂为,)(0n x x -余项用10)(+-n x x 表 示. 例如,输入Series[y[x],{x,0,5}] 则输出带皮亚诺余项的麦克劳林级数[][][]()[]()[]()[][]654433201201024106102100x o x y x y x y x y x y y ++++''+'+ 3. 去掉余项的命令Normal在将)(x f 展开成幂级数后, 有时为了近似计算或作图, 需要把余项去掉. 只要使用 Normal 命令. 例如,输入Series[Exp[x],{x,0,6}] Normal[%] 则输出765432]x [O !6x !5x !4x !3x !2x x 1+++++++ !6x 5x 4x !3x !2x x 165432++++++ 4. 强制求值的命令Evaluate如果函数是用Normal 命令定义的, 则当对它进行作图或数值计算时, 可能会出现问题. 例如,输入fx=Normal[Series[Exp[x],{x,0,3}]] Plot[fx,{x,-3,3}]则只能输出去掉余项后的展开式 6x 2x x 132+++120 而得不到函数的图形. 这时要使用强制求值命令Evaluate, 改成输入 Plot[Evaluate[fx],{x,-3,3}] 则输出上述函数的图形.5. 作散点图的命令ListPlotListPlot [ ]为平面内作散点图的命令, 其对象是数集,例如,输入ListPlot[Table[j^2,{j,16}],PlotStyle->PointSize[0,012]]则输出坐标为}16,16{,},3,3{},2,2{},1,1{2222 的散点图(图1.1).图1.16. 符号“/;”用于定义某种规则,“/;”后面是条件. 例如,输入Clear[g,gf];g[x_]:=x/;0<=x<1 g[x_]:=-x/;-1<=x<0 g[x_]:=g[x –2]/;x>=1则得到分段的周期函数⎪⎩⎪⎨⎧≥-<≤<≤--=1x ),2x (g 1x 0,x 0x 1,x )x (g再输入gf=Plot[g[x],{x,-1,6}] 则输出函数)(x g 的图形1.2.图1.2注:用Which命令也可以定义分段函数, 从这个例子中看到用“…(表达式)/; …(条件)”来定义周期性分段函数更方便些. 用Plot命令可以作出分段函数的图形, 但用Mathematica命令求分段函数的导数或积分时往往会有问题. 用Which定义的分段函数可以求导但不能积分. Mathematica内部函数中有一些也是分段函数. 如:Mod[x,1],Abs[x],Floor[x]和UnitStep[x]. 其中只有单位阶跃函数UnitStep[x]可以用Mathematica命令来求导和求定积分. 因此在求分段函数的傅里叶系数时, 对分段函数的积分往往要分区来积. 在被积函数可以用单位阶跃函数UnitStep的四则运算和复合运算表达时, 计算傅里叶系数就比较方便了.实验举例数项级数例1.1 (教材例1.1)(1)观察级数∑∞=12 1n n的部分和序列的变化趋势.(2) 观察级数∑∞=11n n的部分和序列的变化趋势.输入s[n_]=Sum[1/k^2,{k,n}];data=Table[s[n],{n,100}];ListPlot[data];N[Sum[1/k^2,{k,Infinity}]]N[Sum[1/k^2,{k,Infinity}],40]则输出(1)级数的近似值为1.64493.输入s[n_]=Sum[1/k,{k,n}];data=Table[s[n],{n,50}];ListPlot[data,PlotStyle->PointSize[0.02]];则输出(2)中级数部分和的的变化趋势图1.4.121122例1.2 (教材 例1.2) 画出级数∑∞=--111)1(n n n的部分和分布图. 输入命令Clear[sn,g];sn=0;n=1;g={};m=3;While[1/n>10^-m,sn=sn+(-1)^(n-1)/n;g=Append[g,Graphics[{RGBColor[Abs[Sin[n]],0,1/n],Line[{{sn,0},{sn,1}}]}]];n++];Show[g,PlotRange->{-0.2,1.3},Axes->True];则输出所给级数部分和的图形(图1.5),从图中可观察到它收敛于0.693附近的一个数.例1.3 求∑∞=++123841n n n的值.输入Sum[x^(3k),{k,1,Infinity}] 得到和函数33x 1x +--例1.4 (教材 例1.3) 设,!10n a nn = 求∑∞=1n na.输入Clear[a];a[n_]=10^n/(n!);123vals=Table[a[n],{n,1,25}];ListPlot[vals,PlotStyle->PointSize[0.012]]则输出n a 的散点图(1.6),从图中可观察n a 的变化趋势. 输入 Sum[a[n],{n,l,Infinity}]图1.6求幂级数的收敛域 例1.5 (教材 例1.4) 求∑∞=+-021)3(4n nn n x 的收敛域与和函数.输入Clear[a];a[n_]=4^(2n)*(x-3)^n/(n+1); stepone=a[n+1]/a[n]//Simplify则输出n2)x 3)(n 1(16++-+再输入steptwo=Limit[stepone,n->Infinity] 则输出)x 3(16+-这里对a[n+1]和a[n]都没有加绝对值. 因此上式的绝对值小于1时, 幂级数收敛; 大于1 时发散. 为了求出收敛区间的端点, 输入ydd=Solve[steptwo==1,x] zdd=Solve[steptwo==-1,x]则输出⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧→1647x 1649x 与由此可知,当16491647<<x 时,级数收敛,当1647<x 或1649>x 时,级数发散.为了判断端点的敛散性, 输入 Simplify[a[n]/.x->(49/16)] 则输出右端点处幂级数的一般项为124 1n 1+ 因此,在端点1649=x 处,级数发散. 再输入Simplify[a[n]/.x->(47/16)] 则输出左端点处幂级数的一般项为1n )1(n+- 因此,在端点1647=x 处, 级数收敛.也可以在收敛域内求得这个级数的和函数. 输入 Sum[4^(2n)*(x-3)^n/(n+1),{n,0,Infinity}] 则输出)x 3(16)]x 3(161[Log +-+---函数的幂级数展开例1.6 (教材 例1.5) 求x cos 的6阶麦克劳林展开式. 输入Series[Cos[x],{x,0,6}] 则输出7642]x [o 720x 24x 2x 1+-+-注:这是带皮亚诺余项的麦克劳林展开式.例1.6 (教材 例1.6) 求x ln 在1=x 处的6阶泰勒展开式.输入Series[Log[x],{x,1,6}] 则输出.]x [o 6)1x (5)1x (4)1x (3)1x (2)1x ()1x (765432+---+---+---例1.7 (教材 例1.7) 求x arctan 的5阶泰勒展开式. 输入serl=Series[ArcTan[x],{x,0,5}]; Poly=Normal[serl]则输出x arctan 的近似多项式5x 3x x 53+-通过作图把x arctan 和它的近似多项式进行比较. 输入Plot[Evaluate[{ArcTan[x],Poly}],{x,-3/2,3/2},PlotStyle->{Dashing[{0.01}],GrayLevel[0]},AspectRatio->l]则输出所作图形(图1.7), 图中虚线为函数x arctan ,实线为它的近似多项式.125例1.9 求()()2211+--x x e 在1=x 处的8阶泰勒展开, 并通过作图比较函数和它的近似多项式. 输入Clear[f];f[x_]=Exp[-(x-1)^2*(x+1)^2];poly2=Normal[Series[f[x],{x,1,8}]]Plot[Evaluate[{f[x],poly2}],{x,-1.75,1.75},PlotRange->{-2,3/2},PlotStyle->{Dashing[{0.01}], GrayLevel[0]}]则得到近似多项式和它们的图1.8.()()()()++-++-++--+--54321161714141x x x x()()()876117312814x x x +--+--+- 图1.8126 例 1.10 求函数x sin 在0=x 处的91,,7,5,3 阶泰勒展开, 通过作图比较函数和它的近似多项式, 并形成动画进一步观察. 因为()())(!121sin 22120++=++-=∑n k nk kx o k x x 所以输入Do[Plot[{Sum[(-1)^j*x^(2j+1)/(2j+1)!,{j,0,k}],Sin[x]},{x,-40,40},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}],{k,1,45}]则输出为x sin 的3阶和91阶泰勒展开的图形. 选中其中一幅图形,双击后形成动画. 图1.9是最后一幅图.例1.11 利用幂级数展开式计算5240(精确到1010-). 因为.3113324324051455⎪⎭⎫ ⎝⎛-=-=根据m x )1(+在0=x 处的展开式有⎪⎭⎫⎝⎛-⋅⋅⋅-⋅⋅⋅-⋅-= 123824531!3594131!2541315113240 故前)2(>n n 项部分和为⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⋅⋅--⋅-=∑∏-===12411431!515315113n k k kk i n k i S 输入命令s[n_]=3(1-1/(5*3^4)-Sum[Product[5i-1,{i,1,k-1}]/(5^k k!3^(4k)),{k,2,n-1}]); r[n_]=Product[5i-1,{i,1,n-1}]/5^n/n!3^(4n-5)/80;127delta=10^(-10);n0=100;Do[Print["n=",n,",","s[n]=",N[s[n],20]];If[r[n]<delta,Break[]];If[n==n0,Print["failed"]],{n,n0}]则输出结果为.992555739.22405≈傅里叶级数例1.12 (教材 例1.8) 设)(x g 是以π2为周期的周期函数,它在[]ππ,-的表达式是⎩⎨⎧<≤<≤--=ππx x x g 0,10,1)(将)(x g 展开成傅里叶级数. 输入Clear[g];g[x_]:=-1/;-Pi<=x<0 g[x_]:=1/;0<=x<Pi g[x_]:=g[x-2Pi]/;Pi<=xPlot[g[x],{x,-Pi,5 Pi},PlotStyle->{RGBColor[0,1,0]}];则输出)(x g 的图形 (图1.10).因为)(x g 是奇函数, 所以它的傅里叶展开式中只含正弦项. 输入b2[n_]:=b2[n]=2 Integrate[1*Sin[n*x],{x,0,Pi}]/Pi; fourier2[n_,x_]:=Sum[b2[k]*Sin[k*x],{k,1,n}];tu[n_]:=Plot[{g[x],Evaluate[fourier2[n,x]]}, {x,-Pi,5 Pi},PlotStyle->{RGBColor[0,1,0],RGBColor[1,0.3,0.5]},DisplayFunction->Identity];(*tu[n]是以n 为参数的作图命令*)tu2=Table[tu[n],{n,1,30,5}];(*tu2是用Table 命令作出的6个图形的集合*)toshow=Partition[tu2,2];(*Partition 是对集合tu2作分割, 2为分割的参数*)Show[GraphicsArray[toshow]](*GraphicsArray 是把图形排列的命令*)则输出6个排列着的图形(图1.11),每两个图形排成一行. 可以看到n 越大, )(x g 的傅里叶级数的前n 项和与)(x g 越接近.128实验习题1.求下列级数的和:(1);21∑∞=k kk(2);)12(112∑∞=-k k (3);)2(112∑∞=k k (4).)1(11∑∞=--k k k2. 求幂级数∑∞=+--012)5()1(n nn x 的收敛域与和函数.3. 求函数)1ln()1(x x ++的6阶麦克劳林多项式.4. 求x arcsin 的6阶麦克劳林多项式.5. 设1)(2+=x xx f ,求)(x f 的5阶和10阶麦克劳林多项式,把两个近似多项式和函数的图形作在一个坐标系内.6. 设)(x f 在一个周期内的表达式为⎪⎭⎫ ⎝⎛<≤--=21211)(2x x x f , 将它展开为傅里叶级数(取6项), 并作图.7. 设)(x f 在一个周期内的表达式为⎩⎨⎧<≤-<≤=21,210,1)(x x x x f , 将它展开为傅里叶级数(取8项), 并作图. 8. 求级数∑∞=1sin k k k的和的近似值.129实验2 微分方程(基础实验)实验目的 理解常微分方程解的概念以及积分曲线和方向场的概念,掌握利用 Mathematica 求微分方程及方程组解的常用命令和方法.基本命令1. 求微分方程的解的命令DSolve对于可以用积分方法求解的微分方程和微分方程组,可用Dsolve 命令来求其通解或特解. 例如,求方程023=+'+''y y y 的通解, 输入DSolve[y ''[x]+3y '[x]+2y[x]==0,y[x],x]则输出含有两个任意常数C[1]和C[2]的通解:{}{}]2[C e ]1[C e ]x [y x x 2--+→注:在上述命令中,一阶导数符号 ' 是通过键盘上的单引号 ' 输入的,二阶导数符号 '' 要 输入两个单引号,而不能输入一个双引号.又如,求解微分方程的初值问题:,10,6,03400='==+'+''==x x y y y y y输入Dsolve[{y''[x]+4 y'[x]+3y[x]==0,y[0]==6, y'[0]==10},y[x],x](*大括号把方程和初始条件放在一起*) 则输出{}{}x 2x 3e 148(e ]x [y +-→-2. 求微分方程的数值解的命令NDSolve对于不可以用积分方法求解的微分方程初值问题,可以用NDSolve 命令来求其特解.例如 要求方程5.0,032=+='=x y x y y 的近似解)5.10(≤≤x , 输入NDSolve[{y'[x]==y[x]^2+x^3,y[0]==0.5},y[x],{x,0,1.5}] (*命令中的{x,0,1.5}表示相应的区间*) 则输出{{y->InterpolatingFunction[{{0.,1.5}},< >]}}注:因为NDSolve 命令得到的输出是解)(x y y =的近似值. 首先在区间[0,1.5]内插入一系 列点n x x x ,,,21 , 计算出在这些点上函数的近似值n y y y ,,,21 , 再通过插值方法得到)(x y y =在区间上的近似解.3. 一阶微分方程的方向场一般地,我们可把一阶微分方程写为),(y x f y ='的形式,其中),(y x f 是已知函数. 上述微分方程表明:未知函数y 在点x 处的斜率等于函数f 在点),(y x 处的函数值. 因此,可在Oxy 平面上的每一点, 作出过该点的以),(y x f 为斜率 的一条很短的直线(即是未知函数y 的切线). 这样得到的一个图形就是微分方程),(y x f y =' 的方向场. 为了便于观察, 实际上只要在Oxy 平面上取适当多的点,作出在这些点的函数的 切线. 顺着斜率的走向画出符合初始条件的解,就可以得到方程),(y x f y ='的近似的积分曲 线.130 例如, 画出0)0(,12=-=y y dxdy的方向场. 输入<<Graphics`PlotField`g1=PlotVectorField[{1,1-y^2},{x,-3,3},{y,-2,2}, Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}];则输出方向场的图形(图2.1), 从图中可以观察到, 当初始条件为2/10=y 时, 这个微分方程的解介于1-和1之间, 且当x 趋向于-∞或∞时, )(x y 分别趋向于1-与1.下面求解这个微分方程, 并在同一坐标系中画出方程的解与方向场的图解. 输入sol=DSolve[{y'[x]==1-y[x]^2,y[0]==0},y[x],x];g2=Plot[sol[[1,1,2]],{x,-3,3},PlotStyle->{Hue[0.1],Thickness[0.005]}]; Show[g2,g1,Axes->None,Frame->True];则输出微分方程的解xxe e x y 2211)(++-=,以及解曲线与方向场的图形(图2.2). 从图中可以看到, 微分方程的解与方向场的箭头方向相吻合.实验内容用Dsolve 命令求解微分方程例2.1 (教材 例2.1) 求微分方程 22x xe xy y -=+'的通解. 输入Clear[x,y];DSolve[y '[x]+2x*y[x]==x*Exp[-x^2],y[x],x]或DSolve[D[y[x],x]+2x*y[x]==x*Exp[-x^2],y[x],x] 则输出微分方程的通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+→--]1[C e x e 21]x [y 22x 2x其中C[1]是任意常数.例2.2 (教材 例2.2) 求微分方程0=-+'x e y y x 在初始条件e y x 21==下的特解.输入Clear[x,y];DSolve[{x*y ' [x]+y[x]-Exp[x]==0,y[1]==2 E},y[x],x]则输出所求特解:131⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧+→x e e ]x [y x 例2.3 (教材 例2.3) 求微分方程x e y y y x 2cos 52=+'-''的通解.输入DSolve[y ''[x]-2y '[x]+5y[x]==Exp[x]*Cos[2 x],y[x],x]//Simplify则输出所求通解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧-++→])x 2[Sin ])1[c 4x (2]x 2[Cos ])2[c 81((e 81]x [y x例2.4 (教材 例2.4) 求解微分方程x e x y +=''2, 并作出其积分曲线.输入g1=Table[Plot[E^x+x^3/3+c1+x*c2,{x,-5,5},DisplayFunction->Identity],{c1,-10,10,5},{c2,-5,5,5}];Show[g1,DisplayFunction->$DisplayFunction];图2.3例2.5 (教材 例2.5) 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++02y x dtdy e y x dtdxt 在初始条件0,100====t t y x 下的特解.输入Clear[x,y,t];DSolve[{x' [t]+x[t]+2 y[t]==Exp[t], y'[t] -x[t]- y[t]==0,x[0]==1,y[0]==0},{x[t],y[t]},t]则输出所求特解:⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+-→→])t [Sin ]t [Cos e (21]t [y ],t [Cos ]t [x t例2.6 验证c y y x =+--)3305(15152是微分方程2)(42-='y x x y 的通解. 输入命令132 <<Graphics`PlotField` <<Graphics`ImplicitPlot`sol=(-5x^3-30y+3y^5)/15==C;g1=ImplicitPlot[sol/.Table[{C->n},{n,-3,3}],{x,-3,3}]; g2=PlotVectorField[{1,x^2/(y^4-2)},{x,-3,3},{y,-3,3}, Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}]; g=Show[g2,g1,Axes->None,Frame->True]; Show[GraphicsArray[{g1,g2,g}]];则分别输出积分曲线如图2.4(a), 微分方程的方向场如图2.4(b). 以及在同一坐标系中画出积分曲线和方向场的图形如下图2.4 (c).图2.4从图 2.4(c)中可以看出微分方程的积分曲线与方向场的箭头方向吻合, 且当∞→x 时, 无论初始条件是什么, 所有的解都趋向于一条直线方程.例2.7 (教材 例2.6) 求解微分方程,)1(122/5+=+-x x y dx dy 并作出积分曲线. 输入<<Graphics`PlotField`DSolve[y' [x]-2y[x]/(x+1)==(x+1)^(5/2),y[x],x]则输出所给积分方程的解为⎭⎬⎫⎩⎨⎧⎭⎬⎫⎩⎨⎧+++→]1[C )x 1()x 1(32]x [y 22/7下面在同一坐标系中作出这个微分方程的方向场和积分曲线(设),3,2,1,0,1,2,3---=C 输入t=Table[2(1+x)^(7/2)/3+(1+x)^2c,{c,-1,1}];g1=Plot[Evaluate[t],{x,-1,1},PlotRange->{{-1,1},{-2,2}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g2=PlotVectorField[{1,-2y/(x+1)+(x+1)^(5/2)},{x,-0.999,1},{y,-4,4},Frame->True,ScaleFunction->(1&), ScaleFactor->0.16,HeadLength->0.01, PlotPoints->{20,25},DisplayFunction->Identity];Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction];133则输出积分曲线的图形(图2.5).图2.5例2.8 求解微分方程,2)21(22-+='-y x y xy 并作出其积分曲线. 输入命令<<Graphics`PlotField`DSolve[1-2*x*y[x]*y' [x]==x^2+(y[x])^2-2,y[x],x]则得到微分方程的解为.)2(323C y x x y ++-+=我们在33≤≤-C 时作出积分曲线, 输入命令t1=Table[(3+Sqrt[3])Sqrt[3+24x^2-4x^4-4*c*x]/(6*x),{c,-3,3}]; t2=Table[(3-Sqrt[3])Sqrt[3+24x^2-4x^4-4*c*x]/(6*x),{c,-3,3}]; gg1=Plot[Evaluate[t1],{x,-3,3},PlotRange->{{-3,3},{-3,3}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];gg2=Plot[Evaluate[t2],{x,-3,3},PlotRange->{{-3,3},{-3,3}},PlotStyle->RGBColor[1,0,0],DisplayFunction->Identity];g1=ContourPlot[y-x^3/3-x*(-2+y^2),{x,-3,3},{y,-3,3},PlotRange->{-3,3},Contours->7,ContourShading->False,PlotPoints->50,DisplayFunction->Identity]; g2=PlotVectorField[{1,(x^2+y^2-2)/(1-2*x*y)},{x,-3,3},{y,-3,3},Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}, DisplayFunction->Identity]; Show[g1,g2,Axes->None,Frame->True,DisplayFunction->$DisplayFunction]; Show[gg1,gg2,g2,Axes->None,Frame->True,134 DisplayFunction->$DisplayFunction];则输出微分方程的向量场与积分曲线, 并输出等值线的图2.6.图2.6用NDSolve 命令求微积分方程的近似解例2.9 (教材 例2.7) 求初值问题:1,0)1()1(2.1=='-++=x yy xy y xy 在区间[1.2,4]上的近似解并作图. 输入fl=NDSolve[{(1+x*y[x])*y[x]+(1-x*y[x])*y'[x]==0,y[1.2]==1},y,{x,1.2,4}]则输出为数值近似解(插值函数)的形式:{{y->InterpolatingFunction[{{1.2,4.}},< >]}}用Plot 命令可以把它的图形画出来.不过还需要先使用强制求值命令Evalu-ate, 输入 Plot[Evaluate[y[x]/.fl],{x,1.2,4}] 则输出近似解的图形(图2.7).图2.7如果要求区间[1.2,4]内某一点的函数的近似值, 例如8.1=x y ,只要输入y[1.8]/.fl 则输出所求结果{3.8341}135例2.10 (教材 例2.8) 求范德波尔(Van der Pel)方程5.0,0,0)1(02-='==+'-+''==x x y yy y y y在区间[0,20]上的近似解. 输入Clear[x,y];NDSolve[{y''[x]+(y[x]^2-1)*y'[x]+y[x]==0,y[0]==0,y'[0]==-0.5},y,{x,0,20}]; Plot[Evaluate[y[x]/.%],{x,0,20}]可以观察到近似解的图形(图2.8).图2.8⎪⎩⎪⎨⎧==+-'1)1(01sin 2y x y x y x 的数值解, 并作出数值解的图形.输入命令<<Graphics`PlotField`sol=NDSolve[{x*y'[x]-x^2*y[x]*Sin[x]+1==0,y[1]==1},y[x],{x,1,4}];f[x_]=Evaluate[y[x]/.sol];g1=Plot[f[x],{x,1,4},PlotRange->All,DisplayFunction->Identity];g2=PlotVectorField[{1,(x^2*y*Sin[x]-1)/x},{x,1,4},{y,-2,9},Frame->True,ScaleFunction->(1&),ScaleFactor->0.16, HeadLength->0.01,PlotPoints->{20,25}, DisplayFunction->Identity];136 g=Show[g1,g2,Axes->None,Frame->True]; Show[GraphicsArray[{g1,g}],DisplayFunction->$DisplayFunction];则输出所给微分方程的数值解及数值解的图2.9.例2.11 (教材 例2.9) 求出初值问题⎪⎩⎪⎨⎧='==+'+''0)0(,1)0(cos sin 22y y xy x y y 的数值解, 并作出数值解的图形.输入NDSolve[{y''[x]+Sin[x]^2*y'[x]+y[x]==Cos[x]^2,y[0]==1,y'[0]==0},y[x],{x,0,10}]Plot[Evaluate[y[x]/.%],{x,0,10}];则输出所求微分方程的数值解及数值解的图形(图2.10).图2.10例2.12 (教材 例2.10) 洛伦兹(Lorenz)方程组是由三个一阶微分方程组成的方程组.这三个方程看似简单, 也没有包含复杂的函数, 但它的解却很有趣和耐人寻味. 试求解洛伦兹方程组137,0)0(,4)0(,12)0()(4)()()()()(45)()()()(16)(16)(⎪⎪⎩⎪⎪⎨⎧===-='-+-='-='z y x t z t y t x t z t y t x t z t x t y t x t y t x 并画出解曲线的图形.输入Clear[eq,x,y,z]eq=Sequence[x'[t]==16*y[t]-16*x[t],y'[t]==-x[t]*z[t]-y[t]+45x[t],z'[t]==x[t]*y[t]-4z[t]];sol1=NDSolve[{eq,x[0]==12,y[0]==4,z[0]==0},{x[t],y[t],z[t]},{t,0,16},MaxSteps->10000];g1=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol1],{t,0,16},PlotPoints->14400,Boxed->False,Axes->None];则输出所求数值解的图形(图2.11(a)). 从图中可以看出洛伦兹微分方程组具有一个奇异吸引子, 这个吸引子紧紧地把解的图形“吸”在一起. 有趣的是, 无论把解的曲线画得多长, 这些曲线也不相交.图2.11改变初值为,10)0(,10)0(,6)0(=-==z y x 输入sol2=NDSolve[{eq,x[0]==6,y[0]==-10,z[0]==10},{x[t],y[t],z[t]},{t,0,24},MaxSteps->10000];g2=ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.sol2],{t,0,24},PlotPoints->14400,Boxed->False,Axes->None];Show[GraphicsArray[{g1,g2}]];则输出所求数值解的图形(图2.11(b)). 从图中可以看出奇异吸引子又出现了, 它把解“吸”在某个区域内, 使得所有的解好象是有规则地依某种模式缠绕.138 实验习题1. 求下列微分方程的通解:(1) ;0136=+'+''y y y(2) ();024=+''+y y y (3) ;2sin 52x e y y y x =+'-''(4) .)1(963x e x y y y +=+'-'' 2. 求下列微分方程的特解:(1) ;15,0,029400='==+'+''==x x y y y y y (2) .1,1,02sin ='==++''==ππx x y y x y y3. 求微分方程0cos 2)1(2=-+'-x xy y x 在初始条件10==x y下的特解.分别求精确解和数值解)10(≤≤x 并作图.4. 求微分方程组⎪⎪⎩⎪⎪⎨⎧=--=++t t e y x dt dy e y x dt dx 235的通解.5. 求微分方程组⎪⎪⎩⎪⎨⎧==+-==-+==4,081,0300t t y y x dtdyx y x dtdx的特解.6. 求欧拉方程组324x y y x y x =-'+''的通解.7. 求方程5,0,011='==+'+''==x x y y y y x y 在区间[0,4]上的近似解.实验3 抛射体的运动(续)(综合实验)实验目的 通过微分方程建模和Mathematica 软件,在项目一实验5的基础上,进一步研 究在考虑空气阻力的情况下抛射体的运动.问题 根据侦察,发现离我军大炮阵地水平距离10km 的前方有一敌军的坦克群正以每小 时50km 向我军阵地驶来,现欲发射炮弹摧毁敌军坦克群. 为在最短时间内有效摧毁敌军坦 克,要求每门大炮都能进行精射击,这样问题就可简化为单门大炮对移动坦克的精确射击 问题. 假设炮弹发射速度可控制在0.2km/s 至0.5km/s 之间,问应选择怎样的炮弹发射速度和 怎样的发射角度可以最有效摧毁敌军坦克.说明 本节我们研究受到重力和空气阻力约束的抛射体的射程. 用))(),((t y t x 记抛射体 的位置, 其中x 轴是运动的水平方向, y 轴是垂直方向. 通过在0=y 的约束下最大化x , 可以 计算出使抛射体的射程最大的发射角. 假设0=t 时抛射体(炮弹)在原点(0,0)以与水平线夹角 为,α初始速度为0v 发射出去. 它受到的空气阻力为.,⎪⎭⎫⎝⎛-=-=dt dy dt dx k kv F r (3.1)重力为139).,0(mg F g -= (3.2)在推导)(t x 和)(t y 所满足的微分方程之前, 补充一点说明:虽然我们将位置变量),(t x )(t y 仅写作t 的函数,但实际上位置变量还依赖于几个其它的变量或参数. 特别是,x 和y 也依赖于发射角α、阻力系数k 、质量m 及重力加速度g 等.为了推导x 和y 的方程, 按照牛顿定律,ma F =并结合重力的公式(3.2)和空气阻力的公 式(3.1), 得到微分方程0)()(='+''t x k t x m (3.3)0)()(=+'+''mg t y k t y m (3.4)根据前面所述假设知, ),(t x )(t y 满足下列初始条件0)0(,0)0(==y x ,.sin )0(,cos )0(00ααv y v x ='=' (3.5)先求解)(t x ,由方程(3.3),令,x v '=可将其化为一阶微分方程.0=+'kv v m易求出其通解 .)(t m k Ce t v -=由,cos )0()0(0αv x v ='= 得αcos 0v C =,所以 .cos )(0t m k e v t v -=α从,x v '=通过积分得到x , 即 .cos )(0D e v k m t x t m k+⎪⎭⎫ ⎝⎛-=-α 由,0)0(=x 得,cos 0αv k m D ⎪⎭⎫ ⎝⎛= 所以 )1(cos )(0t m ke v k m t x --⎪⎭⎫ ⎝⎛=α (3.6) 类似地,可从方程(3.4)解出y . 令,y v '= 方程化为一阶微分方程, 两端除以m ,得.g v m k v -=+' 再在上述方程两端乘以积分因子.t m k e 得 ,t m k t m k t m k ge v e mk v e -=+' 即 ,)(t m kt m k ge ve dt d -= 两端积分得 .C e kgm ve t m k t m k +-= 所以 .t m k Ce kgm v -+-= 利用初始条件αsin )0()0(0v v y =='确定其中的常数C 后, 积分v 得到y ,再次利用初始条 件0)0(=y 确定任意常数后,则得到140 .sin )1(0αt m kt m k e v k m e k m t k m k gm y ---+⎪⎪⎭⎫ ⎝⎛--= (3.7) 下面我们利用公式(3.6)与(3.7)来描绘炮弹运行的典型图形. 假定炮弹发射的初速度为0.25km/s, 发射角为 55, 输入Clear[a,t,x,y,g,m,k]x[v_,a_,t_]:=(m/k)*v*Cos[a Pi/180]*(1-Exp[-(k/m)*t])y[v_,a_,t_]:=(g*m/k)((m/k)-t-(m/k)*Exp[-(k/m)*t])+(m/k)*v*Sin[a Pi/180]*(1-Exp[-(k/m)*t])g=9.8;m=5.0;k=0.01;炮弹飞行的时间由炮弹落地时的条件0=y 所确定. 输入FindRoot[y[350,55,t]==0,{t,50}]则输出炮弹飞行的时间{t->57.4124}当发射角 65=α时, 输入x[350,55, 57.4124]//N则输出炮弹的最大射程为10888.5现在我们可以画出炮弹运行的典型轨迹了. 输入ParametricPlot[{x[350,55,t],y[350,55,t]},{t,0,57.4124},PlotRange->{0,11000},AxesLabel->{x,y}]则输出图图3.1实验报告在上述假设下,进一步研究下列问题:(1) 选择一个初始速度和发射角,利用Mathematica 画出炮弹运行的典型轨迹.(2) 假定坦克在大炮前方10km 处静止不动,炮弹发射的初速度为0.32km/s,应选择什么样 的发射角才能击中坦克?画出炮弹运行的几个轨迹图,通过实验数据和图形来说明你的结论 的合理性.(3) 假定坦克在大炮前方10km 处静止不动,探索降低或调高炮弹发射的初速度的情况 下,应如何选择炮弹的发射角?从上述讨论中总结出最合理有效的发射速度和发射角.(4) 在上题结论的基础上,继续探索,假定坦克在大炮前方10km 处以每小时50km 向大炮 方向前进,此时应如何制定迅速摧毁敌军坦克的方案?141注:在研究过程中,还要包括适当改变阻力系数k 与炮弹的质量m 所带来的变化.实验4 蹦极跳运动(综合实验)实验目的 利用Mathematica 软件,通过微分方程建模,研究蹦极跳运动.问题 在不考虑空气阻力和考虑空气阻力等多种情况下,研究蹦极跳运动中,蹦极者与蹦 极绳设计之间的各种关系.说明 蹦极绳相当于一根粗橡皮筋或有弹性的绳子. 当受到张力使之超过其自然长度,绳 子会产生一个线性回复力, 即绳子会产生一个力使它恢复到自然长度, 而这个力的大小与它 被拉伸的长度成正比. 在一次完美的蹦极跳过程中, 蹦极者爬上一座高桥或高的建筑物, 把 绳的一头系在自己身上, 另一头系在一个固定物体如桥栏杆上, 当他跳离桥时, 激动人心的 时刻就到来了. 这里要分析的是蹦极者从跳出那一瞬间起他的运动规律.首先要建立坐标系. 假设蹦极者的运动轨迹是垂直的, 因此我们只要用一个坐标来确 定他在时刻t 的位置. 设y 是垂直坐标轴, 单位为英尺, 正向朝下, 选择0=y 为桥平面, 时间 t 的单位为秒, 蹦极者跳出的瞬间为,0=t 则)(t y 表示t 时刻蹦极者的位置. 下面我们要求出 )(t y 的表达式.由牛顿第二定律, 物体的质量乘以加速度等于物体所受的力. 我们假设蹦极者所受的力 只有重力、空气阻力和蹦极绳产生的回复力. 当然, 直到蹦极者降落的距离大于蹦极绳的自 然长度时, 蹦极绳才会产生回复力. 为简单起见, 假设空气阻力的大小与速度成正比, 比例 系数为1, 蹦极绳回复力的比例系数为0.4. 这些假设是合理的, 所得到的数学结果与研究所 做的蹦极实验非常吻合. 重力加速度./322s ft g =现在我们来考虑一次具体的蹦极跳. 假设绳的自然长度为,200ft L = 蹦极者的体重为 160lb ①,则他的质量为532/160==m 斯②. 在他到达绳的自然长度(即)200-=-=L y 前, 蹦 极者的坠落满足下列初值问题:,1v mg dt dy --= .0)0(=v 利用Mathematica 求解上述问题. 输入g=32; m=5; L=200;{{v1[t_],y1[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m,y'[t]==v[t],v[0]==0,y[0]==0},{v,y},t]则输出)}}t e e 55(e 160),e 1(e 160{{5/t 5/t 5/t 5/t 5/t +--+----蹦极者坠落L 英尺所用的时间为t1=t/.FindRoot[y1[t]==-L,{t,2}]4.00609现在我们需要找到当蹦极绳产生回复力后的运动初始条件. 当1t t >时, 蹦极者的坠落 满足方程)(4.01y L mv m g dt dv +---= 初始条件为).1(1)1(,)1(t v t v L t y =-=解初值问题:{{v2[t_],y2[t_]}}={v[t],y[t]}/.DSolve[{v'[t]==-g-v[t]/m-0.4*(L+y[t])/m,y'[t]==v[t],v[t1]==v1[t1],y[t1]==-L},{v,y},t]142 则输出下列结果)}}e )i 45.1587.4200(_e )i 45.1587.4200(_e )i 42.2333.0(e )i 98.139901.3704()i 65.1083528.132((e )i 262116.0146921.0(),e )i 342.233364.617(_e )i 1007423.11068557.2(e )i 99.11191001673.4()i 3019.73961.299((e )i 262116.0146921.0{{(t )i 264575.01.0()i 11982.2400609.0(t )i 264575.01.0(400609.0t )i 52915.0.0()i 05991.1801218.0(t )i 52915.0.0(400609.0t )i 264575.01.0(t )i 52915.0.0()i 05991.1801218.0(t )i 52915.0.0()i 11982.2400609.0(1314t )i 52915.0.0(400609.014t )i 264575.01.0(++++++++++--++++++--++---+-++-++--+⨯-⨯--⨯---这个解是用复指数函数来表示的.现在蹦极者的位置由命令bungeey[t_]=If[t<t1,y1[t],y2[t]]给出, 输入命令Plot[bungeey[t],{t,0,40},PlotRange->All]则输出位置-时间图形(图4.1)图4.1从上图可以看出, 蹦极者在大约13s 内由桥面坠落770ft, 然后弹回到桥面下550ft, 上下 振动几次, 最终降落到桥面下大约600ft 处.实验报告1.在上述问题中(),160,200==w L 求出需要多长时间蹦极者才能到达他运动轨迹上的 最低点, 他能下降到桥面下多少英尺?2.用图描述一个体重为195lb, 用200ft 长绳子的蹦极者的坠落. 在绳子对他产生力之前, 他能做多长时间的“自由”降落?3.假设你有一根300ft 长的蹦极索, 在一组坐标轴上画出你所在实验组的全体成员的运 动轨迹草图.4.一个55岁, 体重185lb 的蹦极者, 用一根250ft 长的蹦极索. 在降落过程中, 他达到的 最大速度是多少? 当他最终停止运动时, 他被挂在桥面下多少英尺?5.用不同的空气阻力系数和蹦极索常数做实验, 确定一组合理的参数, 使得在这组参数下, 一个160lb的蹦极者可以回弹到蹦极索的自然长度以上.6.科罗拉多的皇家乔治桥(它跨越皇家乔治峡谷)距谷底1053ft, 一个175lb的蹦极者希望能正好碰到谷底, 则他应使用多长的绳子?7.假如上题中的蹦极者体重增加10lb, 再用同样长的绳子从皇家乔治桥上跳下, 则当他撞到乔治峡谷谷底时, 他的坠落速度是多少?143。