Tiesinėje terpėje, pavyzdžiui, vakuume, sklindančius signalus aprašo tiesinės diferencialinės lygtys. Jei dvi funkcijos $f(x)$ ir $g(x)$ yra šių lygčių sprendiniai, tai, kaip žinome, jų suma $c_1 f(x)+c_2 g(x)$, kur $c_1$ ir $c_2$ yra laisvai parenkamos pastoviosios, taip pat yra tos pačios lygties sprendinys. Fizikoje šis teiginys turi fundamentalią reikšmę ir vadinamas superpozicijos principu. Jo dėka, pavyzdžiui, galime nagrinėti elektromagnetinių bangų sklidimą, visiškai neatsižvelgdami į tai, kad mūsų siunčiamos bangos sklinda terpėje, kuri jau yra ,,užpildyta'' kitų šaltinių spinduliuojamomis bangomis. Visa kvantinė mechanika paremta šiuo fundamentaliuoju principu. Fizikos Nobelio premijos lauretas R. Feynmanas apie banginių funkcijų superpozicijos principą yra taip pasakęs: jei ateityje ir žlugs visa kvantinė mechanika, tai superpozicijos principas kris paskutinis. Kai galioja superpozicijos principas, galima naudotis vienos iš labiausiai išvystytų matematikos sričių — tiesinių matematinių erdvių ir tiesinių diferencialinių lygčių — tyrimo metodais.
Tačiau superpozicijos principą galima taikyti toli gražu ne visada. Fizikoje žinomos terpės, kuriose sklindantys signalai sąveikauja. Pavyzdžiui, dėl signalų sąveikos (pastarosios intensyvumą apsprendžia tiek terpė, tiek pačių signalų stiprumas) gali atsirasti trečias signalas, o abu jį sukėlę signalai išnykti. Tokių netiesinių reiškinių supratimui bei analizei ,,tiesiniai metodai'' jau netinka. Nors netiesinė analizė šiuo metu vystosi labai intensyviai, kol kas dar nėra aišku, ar galima sukurti kokį nors universalų metodą netiesinėms diferencialinėms lygtims spręsti. Todėl daugelis fizikos požiūriu įdomių netiesinių diferencialinių lygčių vadinamos mokslininkų, kurie jas užrašė ir tyrė, vardais. Čia susipažinsime su dviem netiesinių bangų sklidimą aprašančiomis lygtimis, būtent, Burgerso ir Kortweg-de Vries lygtimis. Jų sprendiniai aprašo solitonines bangas arba paprasčiau — solitonus, t.y. lokalizuotus erdvėje bangų paketus, kurių savybės daug kuo primena dalelių savybes.
Hiperbolinis tangentas ir kintamųjų pakeitimas
Kai kuriuos Burgerso ir Korteweg-de Vries lygčių sprendinius galima gana paprastai rasti pasitelkus hiberbolinio tangento funkcines eilutes [Malfliet92,Hereman86]. Hiperbolinis tangentas $\tah(z)$ Mathematica kalboje žymimas \boldmath$Tanh[z]$. Jo grafikas
S01<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&\mathrm{Plot}[\mathrm{Tanh}[z],\{z ,\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{z_{min}}$},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{z_{max}}$}\},\mathrm{AxesLabel}\to \{z,"th(z)"\},
\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}]
\end{eqnarray*}
Piešti nuo \boldmath$z_{min}$=" >
iki \boldmath$z_{max}$=" >
Piešimo parinktys: 360,PlotRange-> All}"]" >
MSPBlock[{$$r1,$$r2,$$parinktys},
MSPShow[Plot[Tanh[z], {z, $$r1, $$r2}, AxesLabel -> {"z", "th(z)"},Evaluate[Sequence@@$$parinktys]]]
]
]]>200807131551441submitasVykdyti
primena paprasto arktangento grafiką. Kad būtų galima susieti sprendinius su hiperboliniu tangentu, banginėje lygtyje reikia pereiti į kartu su banga ,,bėgančią'' koordinačių sistemą. Tada naujoje koordinačių sistemoje Burgerso ir Korteweg-de Vries lygčių sprendinius $S(Y)$ pavyksta išreikšti hiperbolinio tangento $Y=\mathrm{th}(z)$ laipsnių suma:
S(Y)=\sum _{m=0}^M a_m Y^m.
Kadangi kintamųjų pakeitimą reikia atlikti ne algebrinėje, o diferencialinėje lygtyje, prisiminkime, kaip tai daroma. Kintamąjį $z$ keisime nauju kintamuoju $Y=\tah(z)$. Šiam tikslui pasinaudosime sudėtinių funkcijų diferencijavimo taisykle
\frac{\mathrm{d} f[Y(z)]}{\mathrm{d} z}=\frac{\mathrm{d} f[Y(z)]}{\mathrm{d} Y(z)}\, \frac{\mathrm{d} Y(z)}{\mathrm{d} z}
ir hiperbolinio tangento savybėmis {$1-\mathrm{th} ^2 (z)=1/\mathrm{ch} ^2 (z)=\mathrm{sech}^2(z)$}. Funkcijos $f[\mathrm{th}(z)]$, kurios argumentas yra $\mathrm{th}(z)$, išvestinė lygi
S02<\![CDATA[\boldmath\begin{eqnarray*}
&&\mathrm{D}[f[\mathrm{Tanh}[z]], \{z, 1\}]
\end{eqnarray*}
rz1=D[f[Tanh[z]], {z, 1}];
MSPFormat[rz1,StandardForm]
]]>200807131346552submitasVykdyti
arba įprastiniais analizės žymėjimais
\frac{\mathrm{d} f[\mathrm{th} (z)]}{\mathrm{d} z}=\mathrm{sech} ^2 (z) \frac{\mathrm{d} f[\mathrm{th}(z)]}{\mathrm{d} \mathrm{th} (z)}.
Tam, kad gautosios išraiškos dešinioji pusė priklausytų tik nuo $\mathrm{th}(z)$, pakeiskime $\mathrm{sech} (z)\rightarrow \sqrt{\vphantom{x^2}\smash{1-\mathrm{th} ^2 (z)}}$. Po to hiperbolinį tangentą peržymėkime nauju simboliu $\mathrm{th}(z)\rightarrow Y$.
S03<\![CDATA[\boldmath\begin{eqnarray*}
&&pakeitimas1=Sech[z]\to \sqrt{1-\mathrm{Tanh}[z]^2};\\
&&pakeitimas2=\mathrm{Tanh} [z]\to Y;
\end{eqnarray*} ]]>200807131551443submitasVykdyti
Surinkę viską į vieną vietą turėsime, kad išvestinė $\mathrm{d} f[Y(z)]/\mathrm{d} z$ lygi
S04<\![CDATA[\boldmath\begin{eqnarray*}
&&\mathrm{D}[f[\mathrm{Tanh} [z]],\{z,1\}]/.pakeitimas1/.pakeitimas2
\end{eqnarray*}
MSPSessionVariable[pakeitimas1,Null];
MSPSessionVariable[pakeitimas2,Null];
pakeitimas1 = Sech[z] -> Sqrt[1 - Tanh[z]^2];
pakeitimas2 = Tanh[z] -> Y;
rz2=D[f[Tanh[z]], {z, 1}] /. pakeitimas1 /. pakeitimas2;
MSPFormat[rz2,StandardForm]
]]>200807131357014submitasVykdyti
Taigi,
\frac{\mathrm{d} f[Y(z)]}{\mathrm{d} z}=\bigl(1-Y^2 (z)\bigr)\,\frac{\mathrm{d} f[Y(z)]}{\mathrm{d} Y(z)}.
Panašiai skaičiuojame antros, trečios ir aukštesnių eilių išvestinės:
S05<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&\mathrm{D}[f[\mathrm{Tanh} [z]],\{z,\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{n}$}\}]/.pakeitimas1/.pakeitimas2//\mathrm{Simplify}
\end{eqnarray*}
Išvestinės eilė \boldmath$n$=" >
MSPSessionVariable[pakeitimas1];
MSPSessionVariable[pakeitimas2];
MSPBlock[{$$n1},
rz3=Simplify[D[f[Tanh[z]], {z, $$n1}] /. pakeitimas1 /. pakeitimas2];
MSPFormat[rz3,StandardForm]
]
]]>200807131615105submitasVykdyti
Kaip matome, su Mathematica kintamųjų pakeitimus diferencialiniuose operatoriuose galima atlikti greičiau nei skaičiuojant popieriuje, o svarbiausia — neįveliant klaidų. Ką tik aptartą procedūrą nesunku apibendrinti keliems kintamiesiems ir automatizuoti. Tiesa, suprasti, kaip tokia automatinė procedūra veikia, yra kiek sudėtingiau, todėl jos aprašymą nukėlėme į pagalbinį sąsiuvinį url:{FizikaSuKompiuteriu28Solitonai_Papildomas.nb}. (kol kas neprieinama)
<--pagebreak-->
Burgerso lygtis
Tai viena paprasčiausių netiesinių diferencialinių lygčių, kurios banginis sprendinys yra žinomas. Burgerso lygtis aprašo bangą, sklindančią siauru kanalu, kuri susidaro staiga atidarius šliuzą. Nagrinėjamu vienmačiu atveju Burgerso lygtis turi pavidalą
\frac{\partial u(x,t)}{\partial t}+u(x,t)\frac{\partial u(x,t)}{\partial
x}-\frac{\partial ^2 u(x,t)}{\partial {x^2}}=0.
Čia $u(x,t)$ yra bangos amplitudė $x$ taške $t$ laiko momentu. Netiesiškumas diferencialinėje lygtyje slypi antrame naryje, nes į jį ieškomoji funkcija $u(x,t)$ įeina du kartus. Ieškosime tik bėgančių bangų sprendinio, — tokio, kuriame laiką ir koordinatę sieja sąryšis $z=c(x-v t)$, kur $v$ — bangos greitis. Bangos amplitudė tuomet yra vieno kintamojo funkcija $u(x,t)=U(z)$. Simboliu $U(z)$ pažymėjome naują ieškomą sprendinį, kuris, kaip pamatysime, vaizduos judantį $v$ greičiu solitoną. Pereinant iš stacionariosios į judančią koordinačių sistemą dalinės išvestinės keičiamos pilnosiomis
Lygtyse patogumo dėlei įvesta pastovioji $c$, kurios sutapimas su raide $c$ formulėje $z=c(x-v t)$, kaip tuoj pamatysime, nėra atsitiktinis.
Dabar nuo argumento $z$ ir funkcijos $U(z)$ pereisime prie argumento $Y=\mathrm{th}(z)$ ir naujos funkcijos $S(Y)$. Pasinaudoję jau aprašytu kintamųjų pakeitimu diferencialiniame operatoriuje, gausime tokią netiesinę diferencialinę lygtį naujai funkcijai $S(Y)$:
-v S(Y)+\frac{1}{2} S^2(Y)-c(1-Y^2) \frac{\mathrm{d} S(Y)}{\mathrm{d} Y}=0.
S06<\![CDATA[\boldmath\begin{eqnarray*}
&&modifikuotaBurgersoLygtis[S\_]:=\frac{S^2}{2}-v S- c [1-Y^2] \mathrm{D}[S, Y]
\end{eqnarray*} ]]>200807131600496submitasVykdyti
Yra pastebėta, kad kai kurių netiesinių banginių diferencialinių lygčių sprendinius galima užrašyti baigtinėmis hiperbolinio tangento eilutėmis. Tokio pavidalo $S(Y)$ sprendinio ir ieškosime:
S(Y)=\sum _{m=0}^M a_m Y^m .
Pastebėsime, kad išmetus netiesinį narį Burgerso lygtis virsta dalelių difuzijos lygtimi. Koks turėtų būti didžiausias eilutės narys $M$? Tai nustatysime iš laipsnio rodiklių balanso tarp tiesinio difuzinio $\frac{\partial^2 u(x,t)}{\partial x^2}$, ,,atsakingo'' už bangos fronto išplitimą, ir netiesinio $u(x,t)\frac{\partial u(x,t)}{\partial x}$ nario Burgerso lygtyje. Šie nariai veikia į ,,priešingas puses'', todėl tik juos subalansavę galime tikėtis stacionaraus solitoninio sprendinio, t.y. bangos, kuri sklisdama nekeičia savo formos. Balansui nustatyti sulyginsime narius su didžiausiais laipsnio rodikliais. Tai nariai $S^2(Y)$ ir $Y^2\mathrm{d} S(Y)/\mathrm{d} Y$ modifikuotoje Burgerso lygtyje. Pirmojo iš jų didžiausias laipsnio rodiklis yra $2 M$, o antrojo— $2+M-1$. Juos sulyginę turime $2 M=2+M-1$, iš kur randame, kad lygybė galima tik esant $M=1$. Tokiu būdu didžiausias eilutės $S(Y)$ narys yra proporcingas $Y$, ir mūsų ieškomas sprendinys turi pavidalą $S(Y)=a_0+a_1 Y$, kurį įstatę į diferencialinę lygtį gauname:
S07<\![CDATA[\boldmath\begin{eqnarray*}
&&S1=a_0+Y a_1;\\
&&algebrineBurgersoLygtis=modifikuotaBurgersoLygtis[S1]
\end{eqnarray*}
MSPSessionVariable[algebrineBurgersoLygtis,Null];
MSPSessionVariable[S1,Null];
modifikuotaBurgersoLygtis[S_] := (-v)*S + S^2/2 - c*(1 - Y^2)*D[S, Y];
S1 = Subscript[a, 0] + Subscript[a, 1]*Y;
algebrineBurgersoLygtis=modifikuotaBurgersoLygtis[S1];
MSPFormat[algebrineBurgersoLygtis,StandardForm]
]]>200807141831457submitasVykdyti
Lygtis sprendinį turės tik tada, kai koeficientai prie tų pačių $Y$ laipsnių bus lygūs nuliui.
Kiekvieną $Y$ laipsnį, kaip ir laipsninės eilutės atveju, galime laikyti nepriklausoma funkcija. Koeficientus prie tų pačių $Y$ laipsnių surenkame komanda $ \boldmath \mathrm{CoefficientList}[~]$.
S08<\![CDATA[\boldmath\begin{eqnarray*}
&&lygtys1=\mathrm{Thread}[\mathrm{Equal}[\mathrm{CoefficientList}[algebrineBurgersoLygtis,Y],0]]
\end{eqnarray*}
MSPSessionVariable[lygtys1,Null];
MSPSessionVariable[algebrineBurgersoLygtis];
lygtys1=Thread[Equal[CoefficientList[algebrineBurgersoLygtis,Y],0]];
MSPFormat[lygtys1,StandardForm]
]]>200807131624468submitasVykdyti
Gautą lygčių sistemą (tris lygtis ir tris nežinomuosius) išspręskime koeficientų $a_0$, $a_1$ ir $c$ atžvilgiu
S09<\![CDATA[\boldmath\begin{eqnarray*}
&&sprendiniai1=\mathrm{Solve}[lygtys1,\{a_0,a_1,c\}]
\end{eqnarray*}
MSPSessionVariable[lygtys1];
MSPSessionVariable[sprendiniai1,Null];
sprendiniai1 = Solve[lygtys1, {Subscript[a, 0], Subscript[a, 1], c}];
MSPFormat[sprendiniai1,StandardForm]
]]>200807131624469submitasVykdyti
Matome, kad gautoji sistema turi nevienareikšmį sprendinį. Paimkime vieną iš jų, pavyzdžiui, bendresnį priešpaskutinįjį, ir įstatykime jį į spėjamos formos pavidalą \boldmath$S1$:
S10<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&sprendinys3 = S1 /. sprendiniai1[[\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{n}$}]]
\end{eqnarray*}
Sprendinio eilės numeris \boldmath$n$=" >
Funkciją $Y$ pakeitę hiperboliniu tangentu $Y=\mathrm{th}(z)$, o jo argumentą $z$ — bėgančios bangos sąryšiu $z=c(x-v t)$, gauname solitoninį Burgerso lygties sprendinį
S11<\![CDATA[\boldmath\begin{eqnarray*}
&&solitonas1 = sprendinys3 /. Y \to \mathrm{Tanh}[c(x - v t)] /. c \to v/2 // \mathrm{Factor}
\end{eqnarray*}
MSPSessionVariable[solitonas1,Null];
MSPSessionVariable[sprendinys3,Null];
solitonas1 = sprendinys3 /. Y -> Tanh[c(x - v t)] /. c -> v/2 // Factor;
MSPFormat[solitonas1,StandardForm]
]]>2008071418314511submitasVykdyti
Pavaizduokime $v=1$ ir $2$ greičiu judančius solitonus, pavyzdžiui, laiko momentais $t=0$ ir $2$.
S12<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&\mathrm{Plot}[\mathrm{Evaluate}[\{solitonas1 /. \{\{v \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{v_1}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_1}$}\}, \{v \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{v_2}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_1}$}\},
\{v \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{v_1}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_2}$}\}, \{v \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{v_2}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_2}$}\}\}\}], \\[3pt]
&& \qquad \{x, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{min}}$}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{max}}$}\},
\mathrm{AxesLabel} \to \{"x", "u(x,t=t1;t2)"\}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}
]
\end{eqnarray*}
Solitonų greičiai \boldmath$v_1$=" > ir \boldmath$v_2$=" >
ir laiko momentai
\boldmath$t_1$=" > ir \boldmath$t_2$=" >
Piešti nuo \boldmath$x_{min}$=" >
iki \boldmath$x_{max}$=" >
Piešimo parinktys: 360,PlotStyle-> {RGBColor[1, 0, 0], RGBColor[0, 0, 1]}}"]" >
MSPSessionVariable[solitonas1,Null];
MSPBlock[{$$v1,$$v2,$$t1,$$t2,$$r1,$$r2,$$parinktys},
MSPShow[
Plot[Evaluate[{solitonas1 /. {{v -> $$v1, t -> $$t1}, {v -> $$v2, t -> $$t1},
{v -> $$v1, t -> $$t2}, {v -> $$v2, t -> $$t2}}}], {x, $$r1, $$r2},
AxesLabel -> {"x", "u(x,t="<>ToString[$$t1]<>";"<>ToString[$$t2]<>")"},Evaluate[Sequence@@$$parinktys]]
]]
]]>2008071422461012submitasVykdyti
Brėžinyje pavaizduoti solitonai panašūs į judantį laiptelį, todėl angliškai jie yra vadinami kink (išlinkimas) ir yra naudojami smūginėms bangoms skysčiuose aprašyti. Atkreipkite dėmesį, kad solitono greitis priklauso nuo jo amplitudės: kuo solitonas aukštesnis, tuo greičiau jis sklinda. Tai gana bendra solitoninių sprendinių savybė.
Kortweg-de Vries (KdV) lygtis
Žymioji KdV lygtis
\frac{\partial u(x,t)}{\partial t}-6u(x,t)\frac{\partial u(x,t)}{\partial x}
+\frac{\partial^3 u(x,t)}{\partial x^3}=0.\tag{1}
laikoma šiuolaikinės netiesinių bangų sklidimo teorijos pirmtake. Ji aprašo netiesines elektrines grandines, fononų anharmoniškumą kietojo kūno gardelėje, o taip pat taikoma modeliuojant daugiakomponentę plazmą [Dodd82].
Banginius lygties sprendinius rasime atlikę tuos pačius pakeitimus, kaip ir Burgerso lygtyje. Pirmiausia, perėję į judančią kartu su banga koordinačių sistemą $z=c(x-v t)$ iš KdV lygties gauname lygtį $U(z)$ funkcijai
-c v U(z)-3c U^2 (z)+c^3 \frac{\mathrm{d}^2 U(z)}{\mathrm{d} z^2}=0.
Tada argumentą $z$ pakeitę nauju argumentu $Y=\mathrm{th}(z)$ ir pasinaudoję skyriaus pradžioje gautomis kintamųjų pakeitimo diferencialiniame operatoriuje formulėmis, turime
-v S(Y)-3 S^2 (Y)-2 c^2 Y\bigl(1- Y^2\bigr) \frac{\mathrm{d} S(Y)}{\mathrm{d} Y} +c^2\bigl(1-Y^2\bigr)^2 \frac{\mathrm{d}^2 S(Y)}{\mathrm{d} Y^2}=0,
S13<\![CDATA[\boldmath\begin{eqnarray*}
&&KdVlygtis[S_] := -v S - 3 S^2 - 2 c^2 Y (1 - Y^2) \mathrm{D}[S, \{Y, 1\}] +
c^2 (1 - Y^2)^2 \mathrm{D}[S, \{Y, 2\}]
\end{eqnarray*} ]]>2008071419204813submitasVykdyti
Kaip ir anksčiau, parametrą $M$, lemiantį eilutės skleidinio narių skaičių, rasime sulyginę netiesinio nario $S^2 (Y)$ laipsnio rodiklį su aukščiausią išvestinę turinčio tiesinio nario $Y^4 \mathrm{d}^2 S/\mathrm{d} Y^2$ laipsnio rodikliu: $2M=4+(M-2)$. Tokiu būdu gauname, kad KdV lygčiai $M=2$.
S14<\![CDATA[\boldmath\begin{eqnarray*}
&&S2=a_2 Y^2+a_1 Y+a_0;
\end{eqnarray*} ]]>2008071419204814submitasVykdyti
Jo koeficientus reikia nustatyti. Kaip darėme su Burgerso lygtimi, surenkame narius prie tų pačių $Y$ laipsnių ir gautas išraiškas prilyginame nuliui. Po to sprendžiame gautą tiesinių lygčių sistemą. Tik šį kartą konstantos $c$ atžvilgiu lygties nespręskime. Koeficientams $a_0$, $a_1$, $a_2$ surasti pakanka pirmųjų trijų lygčių. Paėmę visas lygtis gausime perpildytą sistemą, kurią tenkins tik trivialūs sprendiniai. Vietoje pirmųjų lygčių paėmus kitas tris galima taip pat (nors ir ne visada) gauti solitoninį sprendinį (išmėginkite patys).
S16<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&lygtys2=\mathrm{Part}[\mathrm{Thread}[\mathrm{Equal}[\mathrm{CoefficientList}[algebrineKdVlygtis,Y],0]],\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{n}$}]
\end{eqnarray*}
Išrenkamos lygtys \boldmath$n$=" >
Iš visų sprendinių pasirinksime antrąjį, nes kiti duoda nulinius solitonus. Įstatę jį į \boldmath$S2$, turime
S18<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&sprendinys2 = S2 /. sprendiniai2[[\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{m}\smash{n}$}]]
\end{eqnarray*}
Sprendinio eilės numeris \boldmath$n$=" >
Atlikę atvirkštinį pakeitimą $Y=\mathrm{th}(z)$ ir vietoje $z$ įstatę $z=c(x-v t)$, randame ieškomą KdV lygties solitoninį sprendinį:
S19<\![CDATA[\boldmath\begin{eqnarray*}
&&solitonas2 = sprendinys2 /. Y \to \mathrm{Tanh}[c(x - v t)] // \mathrm{Factor}
\end{eqnarray*}
MSPSessionVariable[solitonas2,Null];
MSPSessionVariable[sprendinys2,Null];
solitonas2 = sprendinys2 /. Y -> Tanh[c(x - v t)] // Factor;
MSPFormat[solitonas2,StandardForm]
]]>2008071423295119submitasVykdyti
Konstantą $c$ rasime iš fizikinės sąlygos: sprendinys turi artėti į nulį, kai $x\rightarrow \pm \infty$. Jei to nepareikalautume, solitono energija galėtų būti begalinė, o tai neįmanoma. Kai sąlyga išpildyta, hiperbolinis tangentas lygus $\pm 1$.
S20<\![CDATA[\boldmath\begin{eqnarray*}
&&\{\mathrm{Limit}[solitonas2, \mathrm{Tanh}[c (-t v + x)] \to 1] // \mathrm{Evaluate} // \mathrm{Factor},\\
&&\mathrm{Limit}[solitonas2, \mathrm{Tanh}[c (-t v + x)] \to -1] // \mathrm{Evaluate} // \mathrm{Factor}\}
\end{eqnarray*}
MSPSessionVariable[solitonas2,Null];
rz33={Limit[solitonas2, Tanh[c (-t v + x)] -> 1] // Evaluate // Factor,
Limit[solitonas2, Tanh[c (-t v + x)] -> -1] // Evaluate // Factor};
MSPFormat[rz33,StandardForm]
]]>2008071423220220submitasVykdyti
Iš gauto atsakymo seka, kad sąlygą galėsime patenkinti tik imdami $4 c^2=v$. Taigi, gerai žinomas KdV lygties solitoninis sprendinys, savo forma primenantis apverstą varpą, yra užrašomas visai paprasta formule
S21<\![CDATA[\boldmath\begin{eqnarray*}
&&KdVsolitonas = solitonas2 /. (v \to 4 c^2)] // \mathrm{Simplify}
\end{eqnarray*}
MSPSessionVariable[solitonas2,Null];
MSPSessionVariable[KdVsolitonas,Null];
KdVsolitonas = Simplify[solitonas2 /. v -> 4*c^2];
MSPFormat[KdVsolitonas,StandardForm]
]]>2008071423120121submitasVykdyti
Paėmę $c=1$ ir $1{,}35$ pavaizduokime KdV solitono padėtis dviem laiko momentais $t=0$ ir $t=0{,}5$. Iš jų galime spręsti apie solitono judėjimo greitį
S22<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&\mathrm{Plot}[\mathrm{Evaluate}[\{KdVsolitonas /. \{\{c \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{c_1}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_1}$}\}, \{c \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{c_2}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_1}$}\},
\{c \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{v_1}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_2}$}\}, \{c \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{c_2}$}, t \to \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_2}$}\}\}\}], \\[3pt]
&& \qquad \{x, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{min}}$}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{max}}$}\},
\mathrm{AxesLabel} \to \{"x", "u(x,t=t_1;t_2)"\}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}
]
\end{eqnarray*}
Solitonų greičiai \boldmath$c_1$=" > ir \boldmath$c_2$=" >
ir laiko momentai
\boldmath$t_1$=" > ir \boldmath$t_2$=" >
Piešti nuo \boldmath$x_{min}$=" >
iki \boldmath$x_{max}$=" >
Piešimo parinktys: 360,PlotStyle-> {RGBColor[1, 0, 0], RGBColor[0, 0, 1]}}"]" >
MSPSessionVariable[KdVsolitonas,Null];
MSPBlock[{$$v1,$$v2,$$t1,$$t2,$$r1,$$r2,$$parinktys},
MSPShow[
Plot[Evaluate[{KdVsolitonas /. {{c -> $$v1, t -> $$t1}, {c -> $$v2, t -> $$t1},
{c -> $$v1, t -> $$t2}, {c -> $$v2, t -> $$t2}}}], {x, $$r1, $$r2},
AxesLabel -> {"x", "u(x,t="<>ToString[$$t1]<>";"<>ToString[$$t2]<>")"},Evaluate[Sequence@@$$parinktys]]
]]
]]>2008071423220222submitasVykdyti
Kaip ir Burgerso solitono atveju, didesnės amplitudės KdV lygties solitonas juda didesniu greičiu, kuo akivaizdžiai įsitikinsite pažiūrėję sukurtą animaciją. (dar neparuošta)
Multisolitonai
KdV lygtis turi ir sprendinius, vaizduojančius ne vieną, o kelis vienu metu skirtingais greičiais judančius solitonus. Mūsų naudotas paprastas metodas, deja, tokių multisolitoninių sprendinių rasti neleidžia. Tam tektų pasitelkti žymiai sudėtingesnį matematinį aparatą — atvirkštinės sklaidos teoriją. Nuoseklų uždavinio sprendimą skaitytojas ras G. Baumanno knygoje [Baumann96]. Skaitiniai KdV lygties sprendimo metodai aptarti daugelyje knygų, pavyzdžiui, [Kinzel98]. Paprasčiausias multisolitoninis sprendinys — bisolitonas — aprašo du sąveikaujančius solitonus. KdV lygties bisolitonas išreiškiamas hiperbolinio kosinuso funkcijomis ir turi tokį pavidalą:
S23<\![CDATA[\boldmath\begin{eqnarray*}
&&bisolitonas = -12 \frac{(3 + 4 \mathrm{Cosh}[2 x - 8 t] + \mathrm{Cosh}[4 x -
64 t])}{(3 \mathrm{Cosh}[x - 28 t] + \mathrm{Cosh}[3 x - 36 t])^2};
\end{eqnarray*} ]]>2008071518013123submitasVykdyti
Kaip matome, tenkina. Imkime įvairius laiko momentus, pavyzdžiui {$t=-0{,}4$; $-0{,}2$; $0$; $0{,}2$; $0{,}4$; $0{,}6$} ir brėžinyje atidėkime šios funkcijos priklausomybę nuo koordinatės $x$.
S25<\![CDATA[\boldmath\begin{eqnarray*}
&&\\
&&\mathrm{Show}[\mathrm{GraphicsArray}[\mathrm{Partition}[\mathrm{Map}[
\mathrm{Plot}[\mathrm{Evaluate}[-bisolitonas /. t \to \#], \{x, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{min}}$}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{max}}$}\}, \\[3pt]
&&\qquad \mathrm{AxesLabel} \to \{"x", " "\},
\mathrm{PlotLabel} \to "t=" <> \mathrm{ToString}[\#],
\mathrm{DisplayFunction} \to \mathrm{Identity},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}] \&,\\[3pt]
&&\qquad\qquad \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_1}$}], 3]], \mathrm{DisplayFunction} \to \\$\mathrm{DisplayFunction},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}];
\end{eqnarray*}
Laiko momentai
\boldmath$t_1$=" > (jų bendras skaičius turi dalintis iš 3)
Piešti nuo \boldmath$x_{min}$=" >
iki \boldmath$x_{max}$=" >
Atskiro grafiko piešimo parinktys: RGBColor[0, 0, 1],PlotRange -> {{-7.6, 7.6}, {0, 8}}}"]" >
Viso grafiko parinktys: 760}"]" >
Dar aiškiau bisolitono sprendinį įsivaizduosite pažiūrėję šią sukurtą animaciją. (dar neparuošta)
Kad būtų gražiau, bisolitoną apvertėme aukštyn kojom. Matome, kad iš kairės į dešinę greičiau juda didesnysis solitonas, kuris $t=0$ laiko momentu pasiveja mažesnįjį ir jį aplenkia. Įdomu tai, kad po susidūrimo išsiskyrę solitonai išlaiko savo pavidalą, t.y. jie juda taip, tartum būtų nepriklausomi objektai. Tai grynai netiesinis reiškinys, kuris neturi nieko bendro su dviejų nepriklausomų sprendinių superpozicija. Tuo galima įsitikinti, palyginus bisolitoninį ir monosolitonius sprendinius, o taip pat pastebėjus, kad solitonams persiklojus jų suminė amplitudė nėra lygi pirminių solitonų amplitudžių sumai. Iš brėžinių matome, kad suminė amplitudė pasidarė netgi mažesnė už didesniojo solitono amplitudę. Nepaisant to, kad po susidūrimo, t.y. solitonams prasilenkus, jų amplitudės visiškai atsistato, vis dėlto galime nustatyti, ar solitonai buvo susidūrę. Tai susiję su dar viena svarbia netiesinės solitonų sąveikos ypatybe — papildomu faziniu postūmiu. Jį lengva suvokti iš trimačio susidūrimo vaizdo, kurio $x$ ir $y$ ašys vaizduoja atitinkamai koordinatę ir laiką, o $z$ ašis — bisolitono amplitudę. Trimatį grafiką gausime \boldmath$\mathrm{StackGraphics}[~]$ (jis apibrėžtas standartiniame pakete \boldmath$\mathrm{Graphics}{}^\backprime\mathrm{Graphics3D}{}^\backprime}$), greta ,,sustatydami'' dvimačius grafikus:
Pirmiausia \boldmath$\mathrm{Table}[~]$ sugeneruojame eilę dvimačių grafikų. Tada juos visus patalpiname greta vienas kito:
S26<\![CDATA[\boldmath\begin{eqnarray*}
&&<< \mathrm{Graphics}^\backprime\mathrm{Graphics3D}^\backprime\\
&&xtBisolitonas = \mathrm{Table}[\mathrm{Plot}[-bisolitonas, \{x, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{min}}$}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{x_{max}}$}\},
\mathrm{DisplayFunction} \to \mathrm{Identity},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}],\\[3pt]
&&\quad \{t, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_{1}}$}, \fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_{2}}$},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{t_{step}}$}\}];\\[7pt]
&&\mathrm{Show}[\mathrm{StackGraphics}[xtBisolitonas], \mathrm{AxesLabel} \to \{"x", "t", ""\}, \mathrm{DisplayFunction} \to \\$\mathrm{DisplayFunction},\fcolorbox[rgb]{1,0,0}{1,1,1}{$\vphantom{v}\smash{parinktys}$}]
\end{eqnarray*}
Laiko momentai nuo
\boldmath$t_1$=" >
iki \boldmath$t_2$=" > žingsniu
\boldmath$t_{step}$=" >
Piešti nuo \boldmath$x_{min}$=" >
iki \boldmath$x_{max}$=" >
Atskiro grafiko piešimo parinktys: Thickness[0.005]}"]" >
Viso piešinio parinktys: 600,Ticks -> {Automatic, Automatic, {0, 4, 8}},BoxRatios -> {3, 3, 0.5},ViewPoint -> {-2, -4, 2},Axes -> True,PlotRange -> All, Boxed -> False}"]" >
"Gyvas" grafikas If[ $$d3 === "on", "checked=\"checked\" "]>
Iš grafiko aiškiai matyti, kad mažesnio solitono viršūnė nėra vienoje tiesėje: po susidūrimo ji pasistumia link neigiamų $x$ verčių. Jei norite susidūrimą stebėti iš kito taško, pakeiskite parinktį \boldmath$\mathrm{ViewPoint}$.
Brėžinį galima interpretuoti tiek bangų, tiek ir dalelių požiūriu. Nuo paprastų bangų solitonai skiriasi tuo, kad tarpusavyje sąveikauja: didesnės bangos keterai persiritus per mažesnę, stebime fazinį postūmį, kurio nebūna susidūrus paprastoms tiesinėms bangoms, — pastarosios susitinka ir išsiskiria viena kitos ,,nepastebėdamos''. Solitonų susidūrimą galima interpretuoti ir kaip dalelių, kurių kinetinė energija yra proporcinga nupiešto gūbrio plotui, sklaidą. Pavijusi lėtesnę dalelę, greitesnė ,,perpumpuoja'' į ją savo energiją, tuo pačiu ,,stumtelėdama'' šią į priekį, o pati sulėtėja (sumažėja). Tą galima pamatyti žiūrint bisolitono animaciją. Šis reiškinys labiau būdingas dalelėms nei bangoms.
Literatūra
W. Malfliet, "Solitary wave solutions of nonlinear wave equations", Am. J. Phys, Vol. 60, No 7, p.650-654 (1992)
W. Hereman, P. Banerjee, A. Korpel, G. Assanto, A. Van Immerzele, A. Meerpoel,"Exact solitary wave solutions of nonlinear evolution and wave equations using a new direct algebraic method", J. Phys. A: Math. Gen. Vol.19, p.607-628 (1986)
R. K. Dodd, J.E. Eilbeck, J. D. Gibbon, H. C. Morris, "Solitons and Nonlinear Wave Equations". Academic Press Inc., London (1982)
G. Baumann, "Mathematica in Theoretical Physics: selected examples from classical mechanics to fractals", Springer-Verlag, p.200-220 (1996)
W. Kinzel, G. Reents, "Physics by Computer: programing physical problems using Mathematica and C", Springer-Verlag, p.136-144 (1998)
W. Malfliet, "Solitary wave solutions of nonlinear wave equations", Am. J. Phys, Vol. 60, No 7, p.650-654 (1992)