Javascript must be enabled in your browser to use this page.
Please enable Javascript under your Tools menu in your browser.
Once javascript is enabled Click here to go back to �нтеллектуальная Кобринщина

Plot the Results of NDSolve - Wolfram Mathematica

Графическое отображение результатов функции NDSolve

NDSolve решает дифференциальные уравнения численно. Она дает решение в форме, которая может быть легко использована самыми разными способами. Одним из типичный применений является графическое отображение решения.

Возьмем, в качестве примера, уравнение PlotTheResultsOfNDSolveRU_1.gif с начальным условием y(0)=2 и PlotTheResultsOfNDSolveRU_2.gif:

In[1]:=

PlotTheResultsOfNDSolveRU_3.gif

Для функции NDSolve, первым аргументом указывается уравнение, вторым аргументом - функция, для которой находится решение, y(x), а третьим - диапазон значений независимых переменных:

In[2]:=

PlotTheResultsOfNDSolveRU_4.gif

Out[2]=

PlotTheResultsOfNDSolveRU_5.gif

Так строится график решения:

In[3]:=

PlotTheResultsOfNDSolveRU_6.gif

Out[3]=

PlotTheResultsOfNDSolveRU_7.gif

Как правило, график решения строят вместе с графиком его производной (или более чем одной зависимой переменной). Для отображения этих графиков разными цветами, воспользуетесь функцией Evaluate, "обернув" ее вокруг того, что необходимо отобразить графически:

In[4]:=

PlotTheResultsOfNDSolveRU_8.gif

Out[4]=

PlotTheResultsOfNDSolveRU_9.gif

Для систем с двумя и тремя степенями свободы,  график в фазовой плоскости зачастую является более наглядным. Вы можете построить его при помощи функции ParametricPlot:

In[5]:=

PlotTheResultsOfNDSolveRU_10.gif

Out[5]=

PlotTheResultsOfNDSolveRU_11.gif

Очень простым является использование графика в фазовой плоскости совместно с функцией Manipulate, что позволяет варьировать начальные условия:

In[6]:=

PlotTheResultsOfNDSolveRU_12.gif

Out[6]=

Элемент ввода Locator позволяет изменять начальные условия путем перетаскивания точки. Параметр T позволяет контролировать интервал, на ко тором задача решена.

Для уравнения в частных производных зачастую есть несколько вариантов решения. В качестве примера рассмотрим нелинейное волновое уравнение Вольфрама [подробнее]:

In[7]:=

PlotTheResultsOfNDSolveRU_14.gif

Out[7]=

PlotTheResultsOfNDSolveRU_15.gif

Хорошим способом получить общее представление о решении является использование функции Plot3D:

In[8]:=

PlotTheResultsOfNDSolveRU_16.gif

Out[8]=

PlotTheResultsOfNDSolveRU_17.gif

Алтернативным методом, часто дающим полезную информацию о деталях решения, является использование функции DensityPlot:

In[9]:=

PlotTheResultsOfNDSolveRU_18.gif

Out[9]=

PlotTheResultsOfNDSolveRU_19.gif

Для уравнений временной эволюции, подобным этому, зачастую наилучшее восприятие происходит при их отображении в динамике. Как правило, наилучшие результаты можно получить при использовании функции ListAnimate. Для начала создадим список графиков через равные интервалы времение t, при помощи опции PlotRange:

In[10]:=

PlotTheResultsOfNDSolveRU_20.gif

Теперь анимируем список:

In[11]:=

PlotTheResultsOfNDSolveRU_21.gif

Out[11]=

В этом случае трудно заметить волновое движение из-за меняющегося фона, вызванного нулевым начальным условием. Самым легким способом устранить этот эффект является решение соответствующего этому условию ОДУ и вычитанием его из первоначального уравнения:

In[12]:=

PlotTheResultsOfNDSolveRU_23.gif

Out[12]=

PlotTheResultsOfNDSolveRU_24.gif

In[13]:=

PlotTheResultsOfNDSolveRU_25.gif

In[14]:=

PlotTheResultsOfNDSolveRU_26.gif

Out[14]=