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 �нтеллектуальная Кобринщина

Use Derivatives for Setting Up Differential Equations - Wolfram Mathematica

Использование производных для создания дифференциальных уравнений

Функции Mathematica для решения дифференциальных уравнений могут применяться к различным их классам, включая обычные дифференциальные уравнения (ОДУ), уравнения в частных производных (УРЧП), дифференциально-алгебраические уравнения (ДАУ) и краевые задачи. Использование производных, при создании этих уравнений для дальнейшего решения в Mathematica, имеет важное значение.

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

Самым распространенным способом является использование функции D:

In[8]:=

UseDerivativesForSettingUpDifferentialEquationsRU_1.gif

Out[8]=

UseDerivativesForSettingUpDifferentialEquationsRU_2.gif

Вы можете указать порядок дифференцирования, который, в данном случае, равен 1:

In[4]:=

UseDerivativesForSettingUpDifferentialEquationsRU_3.gif

Out[4]=

UseDerivativesForSettingUpDifferentialEquationsRU_4.gif

Использование символа ' также дает производную f'[t]:

In[9]:=

UseDerivativesForSettingUpDifferentialEquationsRU_5.gif

Out[9]=

UseDerivativesForSettingUpDifferentialEquationsRU_6.gif

Символ ' является краткой формой записи для функции Derivative:

In[10]:=

UseDerivativesForSettingUpDifferentialEquationsRU_7.gif

Out[10]=

UseDerivativesForSettingUpDifferentialEquationsRU_8.gif

Применение команды FullForm показывает, что символ ' и функция Derivative являются эквивалентными:

In[2]:=

UseDerivativesForSettingUpDifferentialEquationsRU_9.gif

Out[2]//FullForm=

UseDerivativesForSettingUpDifferentialEquationsRU_10.gif

    

Используем функцию D для создания и последующего решения ОДУ UseDerivativesForSettingUpDifferentialEquationsRU_11.gif и присвоим этому уравнению название ode:

In[6]:=

UseDerivativesForSettingUpDifferentialEquationsRU_12.gif

Out[6]=

UseDerivativesForSettingUpDifferentialEquationsRU_13.gif

Воспользуемся командой TraditionalForm для того, чтобы вывести на экран ОДУ в том виде, который используется для математического учебника или журнала:

In[7]:=

UseDerivativesForSettingUpDifferentialEquationsRU_14.gif

Out[7]//TraditionalForm=

UseDerivativesForSettingUpDifferentialEquationsRU_15.gif

Создав ОДУ, воспользуемся функцией DSolve для решения уравнения символьно:

In[8]:=

UseDerivativesForSettingUpDifferentialEquationsRU_16.gif

Out[8]=

UseDerivativesForSettingUpDifferentialEquationsRU_17.gif

Решение f[t] представлено в виде правила внутри вложенного списка. Чтобы получить информацию по извлечению решения из списка и его дальнейшего использования, смотриРуководство. Использование решений, данных в виде правил.

В большинстве случаев, ОДУ содержит граничное и начальное условия. Следовательно, довольно часто требуется вычисление производных функций для конкретных значений пер еменных. Это может быть выполнено несколькими способами. В качестве примера рассмотрим UseDerivativesForSettingUpDifferentialEquationsRU_18.gif.

Используем /. (краткую форму записи функции ReplaceAll) для замены t на 0.  Сначала Mathematica выполнит функцию D, а затем выполнит замену:

In[12]:=

UseDerivativesForSettingUpDifferentialEquationsRU_19.gif

Out[12]=

UseDerivativesForSettingUpDifferentialEquationsRU_20.gif

Или же прямо зададим производную UseDerivativesForSettingUpDifferentialEquationsRU_21.gif, используя символ ':

In[13]:=

UseDerivativesForSettingUpDifferentialEquationsRU_22.gif

Out[13]=

UseDerivativesForSettingUpDifferentialEquationsRU_23.gif

Также, можно воспользоваться Derivative:

In[14]:=

UseDerivativesForSettingUpDifferentialEquationsRU_24.gif

Out[14]=

UseDerivativesForSettingUpDifferentialEquationsRU_25.gif

В качестве следующего примера, создадим ОДУ UseDerivativesForSettingUpDifferentialEquationsRU_26.gif, UseDerivativesForSettingUpDifferentialEquationsRU_27.gif, f(0)=0, для последующего решения:

In[1]:=

UseDerivativesForSettingUpDifferentialEquationsRU_28.gif

Out[1]=

UseDerivativesForSettingUpDifferentialEquationsRU_29.gif

Воспользуемся функцией DSolve для того, чтобы получить символьное решение:

In[3]:=

UseDerivativesForSettingUpDifferentialEquationsRU_30.gif

Out[3]=

UseDerivativesForSettingUpDifferentialEquationsRU_31.gif

Конечно же, можно получить решение непосредственно, без создания уравнения:

In[4]:=

UseDerivativesForSettingUpDifferentialEquationsRU_32.gif

Out[4]=

UseDerivativesForSettingUpDifferentialEquationsRU_33.gif

Кроме того, можно выразить ОДУ как УРПЧ и решить его для f[x,t] вместо f[t]:

In[17]:=

UseDerivativesForSettingUpDifferentialEquationsRU_34.gif

Out[17]=

UseDerivativesForSettingUpDifferentialEquationsRU_35.gif

In[19]:=

UseDerivativesForSettingUpDifferentialEquationsRU_36.gif

Out[19]=

UseDerivativesForSettingUpDifferentialEquationsRU_37.gif

Создадим ОДУ UseDerivativesForSettingUpDifferentialEquationsRU_38.gif, f(1)?2 под именем ode2 :

In[4]:=

UseDerivativesForSettingUpDifferentialEquationsRU_39.gif

Out[4]=

UseDerivativesForSettingUpDifferentialEquationsRU_40.gif

Применим функцию DSolve для получения символьного решения:

In[5]:=

UseDerivativesForSettingUpDifferentialEquationsRU_41.gif

Out[5]=

UseDerivativesForSettingUpDifferentialEquationsRU_42.gif

Вместо использования DSolve, можно воспользоваться функцией NDSolve для получения численного решения, которое соответствует заданным значениям переменной x, являющейся частью одного из коэффициентов ОДУ.

Следующий пример показывает решение при x=4. Функция NDSolve дает результат выраженный в виде объектов функции InterpolatingFunction:

In[6]:=

UseDerivativesForSettingUpDifferentialEquationsRU_43.gif

Out[6]=

UseDerivativesForSettingUpDifferentialEquationsRU_44.gif

Следующая функция F дает численные решения для каждого значения x:

In[32]:=

UseDerivativesForSettingUpDifferentialEquationsRU_45.gif

Построим результирующие графики для x=2 и x=4. Команда Evaluate использована для того, чтобы вычислить F перед построением ее г рафиков функцией Plot:

In[34]:=

UseDerivativesForSettingUpDifferentialEquationsRU_46.gif

Out[34]=

UseDerivativesForSettingUpDifferentialEquationsRU_47.gif

Для получения дополнительной информации, обратитесь к разделу Руководство. Графическое отображение результатов функции NDSolve .

    

В Mathematica можно, также, создавать и решать дифференциальные уравнения в частных производных (УРЧП).

Функция f(u,t) использована здесь, чтобы показать различные способы выражения частных производных в Mathematica.

Самым распространенным способом получить частную производную является использование D:

In[6]:=

UseDerivativesForSettingUpDifferentialEquationsRU_48.gif

Out[6]=

UseDerivativesForSettingUpDifferentialEquationsRU_49.gif

In[7]:=

UseDerivativesForSettingUpDifferentialEquationsRU_50.gif

Out[7]=

UseDerivativesForSettingUpDifferentialEquationsRU_51.gif

In[8]:=

UseDerivativesForSettingUpDifferentialEquationsRU_52.gif

Out[8]=

UseDerivativesForSettingUpDifferentialEquationsRU_53.gif

Вы можете сделать то же самое, использовав несколько иной синтаксис для функции D:

In[11]:=

UseDerivativesForSettingUpDifferentialEquationsRU_54.gif

Out[11]=

UseDerivativesForSettingUpDifferentialEquationsRU_55.gif

In[12]:=

UseDerivativesForSettingUpDifferentialEquationsRU_56.gif

Out[12]=

UseDerivativesForSettingUpDifferentialEquationsRU_57.gif

In[13]:=

UseDerivativesForSettingUpDifferentialEquationsRU_58.gif

Out[13]=

UseDerivativesForSettingUpDifferentialEquationsRU_59.gif

Кроме того, можно использовать функцию Derivative:

In[12]:=

UseDerivativesForSettingUpDifferentialEquationsRU_60.gif

Out[12]=

UseDerivativesForSettingUpDifferentialEquationsRU_61.gif

In[13]:=

UseDerivativesForSettingUpDifferentialEquationsRU_62.gif

Out[13]=

UseDerivativesForSettingUpDifferentialEquationsRU_63.gif

In[14]:=

UseDerivativesForSettingUpDifferentialEquationsRU_64.gif

Out[14]=

UseDerivativesForSettingUpDifferentialEquationsRU_65.gif

Команда FullForm показывает, что все эти методы эквивалентны:

In[15]:=

UseDerivativesForSettingUpDifferentialEquationsRU_66.gif

Out[15]//FullForm=

UseDerivativesForSettingUpDifferentialEquationsRU_67.gif

Далее, рассмотрим несколько вариантов УРЧП.

Создадим УРЧП UseDerivativesForSettingUpDifferentialEquationsRU_68.gif для последующего решения:

In[17]:=

UseDerivativesForSettingUpDifferentialEquationsRU_69.gif

Out[17]=

UseDerivativesForSettingUpDifferentialEquationsRU_70.gif

Используем DSolve для нахождения символьного решения УРЧП. Результат дается в виде выражения через произвольную функцию 
UseDerivativesForSettingUpDifferentialEquationsRU_71.gif:

In[19]:=

UseDerivativesForSettingUpDifferentialEquationsRU_72.gif

Out[19]=

UseDerivativesForSettingUpDifferentialEquationsRU_73.gif

Решение может быть, также, выражено через чистую функцию. Function представляет собой чистую функцию в Mathematica:

In[18]:=

UseDerivativesForSettingUpDifferentialEquationsRU_74.gif

Out[18]=

UseDerivativesForSettingUpDifferentialEquationsRU_75.gif

Используем DSolve для получения символьного решения УРЧП UseDerivativesForSettingUpDifferentialEquationsRU_76.gif, f(u,0)?u:

In[10]:=

UseDerivativesForSettingUpDifferentialEquationsRU_77.gif

Out[10]=

UseDerivativesForSettingUpDifferentialEquationsRU_78.gif

Воспользуемся функцией NDSolve для получения численного решения УРЧП UseDerivativesForSettingUpDifferentialEquationsRU_79.gif, f(u,0)?u, f(1,t)?1-t. Сохраним результат под именем sol для дальнейшего использования:

In[14]:=

UseDerivativesForSettingUpDifferentialEquationsRU_80.gif

Out[14]=

UseDerivativesForSettingUpDifferentialEquationsRU_81.gif

Используем функцию Plot3D для визуализации результата, полученного NDSolve:

In[19]:=

UseDerivativesForSettingUpDifferentialEquationsRU_82.gif

Out[19]=

UseDerivativesForSettingUpDifferentialEquationsRU_83.gif

    

В описанных выше случаях, производные и частные производные выражены через переменные. Здесь они определены численно.

Оба приведенных ниже способа могут быть использованы для выражения значений частных производных, таких как UseDerivativesForSettingUpDifferentialEquationsRU_84.gif:

In[29]:=

UseDerivativesForSettingUpDifferentialEquationsRU_85.gif

Out[29]=

UseDerivativesForSettingUpDifferentialEquationsRU_86.gif

In[28]:=

UseDerivativesForSettingUpDifferentialEquationsRU_87.gif

Out[28]=

UseDerivativesForSettingUpDifferentialEquationsRU_88.gif

    

В дополнение к обыкновенным дифференциальным уравнениям и уравнениям в частных производных, Mathematica может решать дифференциально-алгебраические уравнения (ДАУ).

В качестве примера рассмотрим ДАУ UseDerivativesForSettingUpDifferentialEquationsRU_89.gif, b y(t)+x(t)=0, удовлетворяющее условию x(0)?0:

In[31]:=

UseDerivativesForSettingUpDifferentialEquationsRU_90.gif

Воспользуемся функцией DSolve для получения символьного решения ДАУ:

In[32]:=

UseDerivativesForSettingUpDifferentialEquationsRU_91.gif

Out[32]=

UseDerivativesForSettingUpDifferentialEquationsRU_92.gif

Чтобы увидеть решение при a=2 и b=1, воспользуемся символом /. для подстановки этих значений в решение:

In[33]:=

UseDerivativesForSettingUpDifferentialEquationsRU_93.gif

Out[33]=

UseDerivativesForSettingUpDifferentialEquationsRU_94.gif

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

In[34]:=

UseDerivativesForSettingUpDifferentialEquationsRU_95.gif

Out[34]=

UseDerivativesForSettingUpDifferentialEquationsRU_96.gif

Вы также можете построить такой график путем подстановки a=2 и b=1 в eqns, используя затем NDSolve:

In[35]:=

UseDerivativesForSettingUpDifferentialEquationsRU_97.gif

Out[35]=

UseDerivativesForSettingUpDifferentialEquationsRU_98.gif

Как и в предыдущем примере, отобразим решение графически при помощи функции Plot:

In[36]:=

UseDerivativesForSettingUpDifferentialEquationsRU_99.gif

Out[36]=

UseDerivativesForSettingUpDifferentialEquationsRU_100.gif