Математика в Internet

Статьи

РЕДАКТОР МАТЕМАТИЧЕСКИХ ТЕКСТОВ
ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ
Автор: Анатолий Вовк

        В предыдущих заметках (смотри сюда и сюда) мы познакомили вас с редактором математических формул, рисунков и графиков для работы в Internet. В настоящей заметке речь пойдет о возможности символьного вычисления производных на сайтах, представляющих математическую информацию. Итак, представляем вашему вниманию новую версию вьювера для просмотра математических формул, схематических рисунков и графиков элементарных функций, а также результатов символьного дифференцирования на страницах Internet (MathTextView.ocx© Copyright VVV 2002) и редактора (MathTextDerive.ocx © Copyright VVV 2002) , позволяющего вводить и корректировать задания и получать соответствующие результаты при выполнении символьного дифференцирования элементарных функций, интегралов, рядов и произведений.

        Эта заметка демонстрирует аналитические возможности нашего редактора. В рассматриваемых вьювере и редакторе математических текстов такая возможность представлена соответствующим интерпретатором. Снова, как и в предыдущих заметках, обратимся к примерам. Вычислим следующую производную


        Приведем HTML-код для вычисления полученной производной:

<center><OBJECT classid=
     "clsid:729818C7-259B-4FF5-930B-35B6A3B45DAF">
<param NAME="DATA" 
VALUE="$$dd(x^x,x)=d?$$"
</OBJECT></center>

        Слева от знака равенства мы указываем, что хотим видеть на экране. Само же указание выполнить дифференцирование кроется в паре символов d? после знака равенства. Если бы мы написали, например (здесь и далее мы будем писать только фрагмент HTML-кода):

$$dd(x^x,x)=d$$ ,

то получили бы следующее уравнение:


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

$$dd(dd(x^x,x),x)=d?$$

и получим:


        По ходу изложения отметим , что вычисление производных обычно сопровождается символьными преобразованиями, которые приводят к упрощению выражений. Здесь вы можете заметить недостаточную глубину этих преобразований. Вопрос символьных преобразований алгебраических выражений будет при случае рассмотрен в одной из дальнейших заметок. В рассматриваемом редакторе математических текстов мы последовательно пытаемся внедрять синонимы при работе с формулами. Приведем пример иного задания последней директивы. Запишем ее так:

$$df(x^x,x^2)=d?$$

Результат будет таков:


        Аналогичным образом вы можете вычислять производные по нескольким переменным, например, в результате выполнения директивы

$$dd(dd(dd(x^x*y^2,x),y),y)=d?$$

получим


а директива

$$dp(x^x*y^2,x,y^2,=3)=d?$$

приведет к аналогичному результату


        При этом отметим, что автоматическое вычисление общего порядка производной не выполняется. Сделано это потому, что выражение dp(x^x*y^2,x,y^2,=3) может быть использовано как в модуле символьных преобразований, где в принципе общий порядок производной может быть расчитан автоматически, так и режиме простого редактироования, где модуль символьных преобразований отсутствует. В будущем можно будет ввести в рассмотрение еще один вариант представления производной.

        Например, можно вычислять производные по индексированным переменным. Так директива

"$$grad(f(r\v))==
  (dp(x(_1)+2*x(_2)+3*x(_3),x(_1));
   dp(x(_1)+2*x(_2)+3*x(_3),x(_2));
   dp(x(_1)+2*x(_2)+3*x(_3),x(_3)))=d?$$"
приведет к следующему результату



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

        Можно попытаться найти производную от функции, не яляющейся элементарной. Например, для произвольных, конечно, дифференцируемых ;)) функций f(x) и g(x) получим





        В рассмотренных ранее примерах наряду с результатом необходимо было публиковать директиву. Однако могут быть случаи, когда нас интересует только результат дифференцирования. Например, для функции от двух переменных



требуется записать необходимые условия экстремума, которые сводятся к вычислению частных производных от заданной функции и приравниванию их нулю. Записывается это условие таким образом:

$$rund((dp((x-1)^2+(y-2)^2,x)=0)&e
  (dp((x-1)^2+(y-2)^2,y)=0))$$

Результат будет следующим:


        Функцию rund() можно использовать при выполнении совершенно других операций. Пусть нам требуется исследовать поведение функции с помощью графика самой функции и ее двух производных Запишем директиву

$Рис.1 Анализ функции
&& FK:1 $$y=x^2/4$$   2[-2,5]   
&& FK:2 $$y=rund(dd(x^2/4,x))$$[-2,5]
&& FK:3 $$y=rund(dd(dd(x^2/4,x),x))$$ 1/2[-2,5]

Мы хотим жирной линией изобразить функцию, обычной линией - ее первую производную, а штрихпунктиром - вторую производную. В результате получим



        Можно вычислять производные от интегралов с параметрами в пределах интегрирования и подинтегральной функции. Например, применяя директиву

$$dd(Int((sh(x+y)/2)*dx,a+y,b+y),y)=d?$$

получим



        Так что нам лишь придется (но это следующим разом) хорошо поработать, чтобы аккуратно свести подобные члены. Отметим при этом,что большая работа по упрощению полученных выражений выполняется уже и в предлагаемой вашему вниманию демоверсии. Обратите внимание на автоматический перенос выражений. В первой редакции заметки автор в этом месте извинялся за отсутствие переноса. Благодаря настойчивой просьбе webmaster'a сайта эта функция была подключена и вы можете оценить ее возможности. Наряду с дифференцированием интегралов также можно вычислять производные от рядов и произведений. Посмотрите примеры:




или в другой форме


        Следует отметить, что нелинейность операции умножения накладывает более жесткие требования к нотации при выполнении дифференцирования. В настоящей демоверсии при дифференцировании произведений для указания множества индексов умножения следует придерживаться нотации, по структуре не отличающейся от приведенных выше. Это замечание не относится к выбору индексов умножения и параметров дифференцирования или способа обозначения операции дифференцирования. Речь идет только о структуре обозначений пределов для индексов умножения.

        Мы предлагаем скачать демоверсию здесь. Поместив в системную директорию своего компьютера и зарегистрировав ActiveX (для чего надо нажать Пуск, потом Выполнить..., потом выполнить последовательно процедуры "regsvr32 C:\WINDOWS\SYSTEM\MathTextView.ocx") и "regsvr32 C:\WINDOWS\SYSTEM\MathTextDerive.ocx"), вместо заставок на данной странице вы должны получить результаты символьного дифференцирования. Если у Вас имеется более ранняя версия MathTextView.ocx, вам все равно необходимо заменить ее на новую версию. Если у вас возникнут вопросы, замечания и предложения, пишите .
       

       В заключение благодарю webmaster'a сайта Mashiah'a Davidson'a за предоставленную возможность разместить данную информацию на его сайте а также всяческую помощь при подготовке статьи и завотделом НИИ Владимира Вышнякова за постоянный интерес к данному проекту.

        Если бы мы закончили на этом, вы остались бы в недоумении и у вас в голове вертелась бы единственная мысль, а кому нужно вычислять производные в статическом режиме. Автор этих строк точно так же об этом думает. И предлагает вам окошко, где вы можете протестировать данный продукт в режиме online. Обработку длинных выражений в демоверсии автор не обещает, но лаконичные выражения любой сложности на множестве элементарных функций дифференцируются вполне нормально. Заодно вы познакомитесь с системой WYSIWYG. Во избежание ненужных зависаний мы предлагаем сначала убедиться в правильности набора нужной вам производной, а уже потом добавить фразу "=d?" или "rund(" не забыв для порядка в конце закрыть еще одну скобку, (а впрочем это и не обязательно), хотя в принципе можно потом (при введенном выражении "=d?" или "rund(") корректировать функцию, которую вы хотите продифференцировать. Не забывайте при этом о правой кнопке мышки с контекстным меню, позволяющим копировать, вставлять и вырезать информацию в поле ввода. Окно для тестирования размещено также на первой странице сайта Mathmag.spbu.ru. Для работы нажмите сюда).

        Удачи вам.






HOME

webmaster
Copyright © Anatoliy Vovk