這里要介紹的是用Mathematica解微分方程(組),并按照響應的成果,進行相關畫圖,甚至進步履態模擬。
給出微分方程y''(x)+y(x)==1,求其的通解:
DSolveValue[y''[x] + y[x] == 1, y[x], x]
獲得的通解是:c2*sin(x)+c1*cos(x)+1。
顯然,通解是不成能作出圖像的!
可是,我們可以對c1、c2付與分歧的值,再用Show+Table,把所作的圖放到一路(注重,年夜寫字母C是Mathematica的內部函數,是以,作圖的時辰,要把C全數換當作c):
Show[Table[
Plot[1 + c[1] Cos[x] + c[2] Sin[x], {x, -2 Pi, 2 Pi}],
{c[2], -1, 1,0.5}, {c[1], -1, 1, 0.5}]]
用NDSolveValue 可求出微分方程的數值解(俗稱——特解):
NDSolveValue[{y'[x] == Cos[x^6 + x + 1], y[0] == 0}, y[x], {x, -5, 5}]
沒有給出公式,可是不故障作圖:
Plot[%, {x, -5, 5}]
求二元微分方程組的特解:
{xsol, ysol} =
NDSolveValue[{
x'[t] == -3 y[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}]
用互動結果演示一下上圖的作圖過程:
Manipulate[ ParametricPlot[{xsol[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}]
這個讓我想到了聞名的“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] + 28 x[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]
然后在三維空間里,畫出它的圖像:
ParametricPlot3D[Evaluate[{x[t], y[t], z[t]} /. %], {t, 0, 200},
PlotPoints -> 50000]
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!