Совет 216. Не дифференцируй функцию, выдаваемую функцией Odesolve (Do not use the function created the Odesolve-function)

  

В среду Mathcad, начиная с 2000 версии, встроена функция odesolve, возвращающая решение дифференциального уравнения[1]. Функция odesolve примечательна тем, что она возвращает не числовое или текстовое значение (скаляр или значения, сгруппированные в массив), а функцию, которую можно табулировать, по которой можно строить график – см. верхнюю половину рис. 216. Но нужно помнить о том, что функция odesolve не совсем «нормальная» (обычная) функция. Ее, например, нельзя дифференцировать не только аналитически, но и численно. А такая операция часто бывает необходима при верификации (проверке) правильности решения дифференциального уравнения.

В нижней части рис. 216 сделана такая попытка, из которой видно, что хоть и решение дифференциального уравнения правильно, но производная найденной функции "ни куда не годится". Дело в том, что функция, возвращаемая функцией odesolve, – это по своей сути интерполяция табличных данных (численного решения дифференциального уравнения). Отсюда и "ломанность" производной на рис. 216. Кроме того, следует помнить и о том, операция численного дифференцирования – это, вообще говоря, не совсем корректная операция, которую можно применять к даже «нормальным» функциям с большой осторожностью.



[1] Линейного дифференциального уравнения. В среде Mathcad 2001i функция odesolve может работать не только с одиночными дифференциальными уравнениями, но и с их системами.