这里要介绍的是用Mathematica解微分方程(组),并根据相应的结果,进行相关绘图,甚至进行动态模拟。
工具/原料
电脑
Mathematica
方法/步骤
1、给出微分方程y''(x)+y(x)==1,求堤寇辔钒其的通解:DSolveValue[y''[x]+y[x]惺绅寨瞀==1,y[x],x]得到的通解是:c2*sin(x)+c1*cos(x)+1。显然,通解是不可能作出图像的!但是,我们可以对cc2赋予不同的值,再用Show+Table,把所作的图放到一起(注意,大写字母C是Mathematica的内部函数,因此,作图的时候,要把C全部换成c):Show[Table[Plot[1+c[1]Cos[x]+c[2]Sin[x],{x,-2Pi,2Pi}],{c[2],-1,1,0.5},{c[1],-1,1,0.5}]]
2、用NDSolveValue可求出微分方程的数值解(俗称——特解):NDSolveValue[{y'[x]==Cos[x^6+x+1],y[0]==0},y[x],{x,-5,5}]没有给出公式,但是不妨碍作图:Plot[%,{x,-5,5}]
3、求二元微分方程组的特解:{xsol,ysol}=NDSolveValue[{x'[t]==-3y[t]-x[t]^2,y'[t]==Sqrt[3]x[t]-y[t]^3,x[0]==y[0]==1},{x,y},{t,100}]把结果作为参数方程,来进行作图,这是混沌现象:ParametricPlot[{xsol[t],ysol[t]},{t,0,100}]
4、用互动效果演示一下上图的作图过程:Manipulate[P瞢铍库祢arametricPlot[{xs泠贾高框ol[t],ysol[t]},{t,0,a}],{a,0.01,100}]Manipulate[ParametricPlot[{xsol[t],ysol[t]},{t,0,a}],{a,0.01,100,0.1}]Manipulate[ParametricPlot[{xsol[t],ysol[t]},{t,0,a}],{a,0.01,10,0.001}]
5、这个让我想到了著名的“Lorenz吸引子”,需要满足的微分方旯皱镢涛程组是:x'(t)=-10(x(t)+y(t))y'(t)=x(t)(-z(t))+28x(t像粜杵泳)-y(t)z'(t)=x(t)y(t)-(8z(t))/3“Lorenz吸引子”的每一个点由{x(t),y(t),z(t)}确定,t是时间参数。我们先来解出{x(t),y(t),z(t)}当x(0)=z(0)=0,y(0)=1时的数值解:NDSolve[{x'[t]==-10(x[t]-y[t]),y'[t]==-x[t]z[t]+28x[t]-y[t],z'[t]==x[t]y[t]-(8/3)z[t],x[0]==z[0]==0,y[0]==1},{x,y,z},{t,0,200},MaxSteps->Infinity]
6、然后在三维空间里,画出它的图像:ParametricPlot3D[Evaluate[{x[t],y[t],z[t]}/.%],{t,0,200},PlotPoints->50000]