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

Check the Results of DSolve - Wolfram Mathematica

Проверка результатов функции DSolve

Несмотря на то, что DSolve обычно дает правильное решение заданного дифференциального уравнения, проверка полученного решения является обычной практикой. Решение, полученное при использовании DSolve, может быть проверено различными методами. Самым простым способом является подстановка полученного решения обратно в уравнение. Если результат соответствует истине True, решение правильно.

В данном случае, решение проверяется при помощи подстановки.

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

In[13]:=

CheckTheResultsOfDSolveRU_1.gif

Если второй аргумент функции DSolve задается как  y вместо y[x], решение дается в виде чистой функции. Эта форма удобна как для проверки решения, так и для использования его в дальнейшей работе:

In[14]:=

CheckTheResultsOfDSolveRU_2.gif

Out[14]=

CheckTheResultsOfDSolveRU_3.gif

Воспользуемся /. (краткой формой записи функции ReplaceAll) для подстановки решения обратно в уравнение:

In[15]:=

CheckTheResultsOfDSolveRU_4.gif

Out[15]=

CheckTheResultsOfDSolveRU_5.gif

здесь используется тот же самый метод для проверки того, что решение удовлетворяет как уравнению так и начальному условию:

In[16]:=

CheckTheResultsOfDSolveRU_6.gif

In[17]:=

CheckTheResultsOfDSolveRU_7.gif

Out[17]=

CheckTheResultsOfDSolveRU_8.gif

In[18]:=

CheckTheResultsOfDSolveRU_9.gif

Out[18]=

CheckTheResultsOfDSolveRU_10.gif

    

Иногда результат подстановки слишком сложен для немедленного ответа True (Истина) или False (Ложь). Подобные примеры могут быть проверены с помощью функции Simplify для упрощения результатов подстановки. Если результат упрощения является истинным True, р ешение правильно.

Получим решение для неоднородного уравнения второго порядка:

In[19]:=

CheckTheResultsOfDSolveRU_11.gif

In[20]:=

CheckTheResultsOfDSolveRU_12.gif

Out[20]=

CheckTheResultsOfDSolveRU_13.gif

Подставим решение обратно в уравнение:

In[21]:=

CheckTheResultsOfDSolveRU_14.gif

Out[21]=

CheckTheResultsOfDSolveRU_15.gif

Воспользуемся функцией Simplify для проверки решения:

In[22]:=

CheckTheResultsOfDSolveRU_16.gif

Out[22]=

CheckTheResultsOfDSolveRU_17.gif

Здесь, тот же самый метод использован для проверки решения линейного УРЧП:

In[23]:=

CheckTheResultsOfDSolveRU_18.gif

In[24]:=

CheckTheResultsOfDSolveRU_19.gif

Out[24]=

CheckTheResultsOfDSolveRU_20.gif

In[25]:=

CheckTheResultsOfDSolveRU_21.gif

Out[25]=

CheckTheResultsOfDSolveRU_22.gif

Если уравнение содержит специальные функции, возможно понадобится использование функции FullSimplify для проверки решения.

Например, это решение содержит функции Бесселя:

In[1]:=

CheckTheResultsOfDSolveRU_23.gif

In[2]:=

CheckTheResultsOfDSolveRU_24.gif

Out[2]=

CheckTheResultsOfDSolveRU_25.gif

Использование функции Simplify не позволяет проверить решение:

In[3]:=

CheckTheResultsOfDSolveRU_26.gif

Out[3]=

CheckTheResultsOfDSolveRU_27.gif

Применение функции FullSimplify обеспечивает проверку:

In[4]:=

CheckTheResultsOfDSolveRU_28.gif

Out[4]=

CheckTheResultsOfDSolveRU_29.gif

    

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

Вот пример, для которого численная проверка окажется полезной:

In[1]:=

CheckTheResultsOfDSolveRU_30.gif

In[2]:=

CheckTheResultsOfDSolveRU_31.gif

Out[2]=

CheckTheResultsOfDSolveRU_32.gif

In[3]:=

CheckTheResultsOfDSolveRU_33.gif

Out[3]=

CheckTheResultsOfDSolveRU_34.gif

Несмотря на то, что численный контроль не может обеспечить полную достоверность при проверке решения, можно выполнить более тщательную проверку, используя увеличенную точность или позволив переменным принимать комплексные значения.

Так выполняется численная проверка решения с применением более высокой точности:

In[33]:=

CheckTheResultsOfDSolveRU_35.gif

Out[33]=

CheckTheResultsOfDSolveRU_36.gif

А здесь, для проверки решения, использованы случайные комплексные значения:

In[34]:=

CheckTheResultsOfDSolveRU_37.gif

In[35]:=

CheckTheResultsOfDSolveRU_38.gif

Out[35]=

CheckTheResultsOfDSolveRU_39.gif