![]() |
Математика в 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) может быть использовано как в модуле символьных преобразований, где в принципе общий порядок производной может быть расчитан автоматически, так и режиме простого редактироования, где модуль символьных преобразований отсутствует. В будущем можно будет ввести в рассмотрение еще один вариант представления производной.
Например, можно вычислять производные по индексированным переменным.
Так директива
"$$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
|