Рубрика «производная»

Конспект по «Машинному обучению». Математический анализ. Градиентный спуск - 1

Вспомним математический анализ

Непрерывность функции и производная

Пусть $inline$E subseteq mathbb{R}$inline$, $inline$a$inline$ — предельная точка множества $inline$E$inline$ (т.е. $inline$a in E, forall varepsilon > 0 spacespace |(a - varepsilon, a + varepsilon) cap E| = infty$inline$), $inline$f colon E to mathbb{R}$inline$.

Определение 1 (предел функции по Коши):

Функция $inline$f colon E to mathbb{R}$inline$ стремится к $inline$A$inline$ при $inline$x$inline$, стремящемся к $inline$a$inline$, если

$$display$$forall varepsilon > 0 spacespace exists delta > 0 spacespace forall x in E spacespace (0 < |x- a| < delta Rightarrow |f(x)- A| < varepsilon).$$display$$

Обозначение: $inline$limlimits_{E ni x to a}f(x) = A$inline$.
Читать полностью »

Введение

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

Подготовка

Сначала опишем структуру данных, в которой будет храниться исходная математическая функция. Опишем трейт MathAST:

sealed trait MathAST

И его наследников:
Читать полностью »

image

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

Имеем алгебраическое уравнение второй степени (оно же квадратное) в общем виде:

image

Представим искомое уравнение как функцию:

image

Где, очевидно, необходимо найти такие значения аргумента image функции, в которых оная возвратила бы ноль.

Кажется, нужно просто решить квадратное уравнение с помощью теоремы Виета или через дискриминант. Но мы ведь собрались здесь не для этого. Давайте-ка лучше возьмем производную!
Читать полностью »

Математические выражения в .NET (разбор, дифференцирование, упрощение, дроби, компиляция)
Мне со школьных времен был интересен алгоритм вывода аналитических производных и упрощения выражений. Данная задача была актуальна впоследствии и в вузе. Тогда-то я реализовал ее, только получилось все не так, как хотелось: вместо кода IL у меня просто генерировался C# код в текстовом виде, сборки не выгружались, ну и к тому же не было возможности вывода производных в аналитическом виде. Однако потом я решил все-таки реализовать такую библиотеку, так как интерес остался. Стоит отметить, что таких библиотек в интернете большое количество, но нигде я не нашел именно этапа компиляции выражений в IL код, т.е. по сути везде выполняется интерпретация, которая не столь эффективна, в отличие от компиляции. Ну и к тому же я это разрабатывал чисто для себя, для изучения новых технологий, особо не надеясь, что результат моих трудов может где-нибудь потребоваться.
Читать полностью »

В компании Intel разрабатывают не только ПО для «внешних» потребителей — пишутся и программы, которые используются только внутри Intel. Среди них довольно много средств для численного моделирования различных физических процессов, протекающих при изготовлении процессоров — ведь именно последние и являются основной продукцией Интела. В этих программах, конечно, широко используются различные методы вычислительной математики и физики.
Вот некоторое время назад мне понадобилось программно решать одно уравнение методом Ньютона. Казалось бы, все просто, но для этого надо уметь вычислять производную левой части уравнения. Эта левая часть у меня была довольно сложная — даже просто вычисление ее значений в программе было разбросано по нескольким функциям, — и перспектива вычислять производную на бумажке меня не радовала. Перспектива воспользоваться каким-нибудь пакетом символьных вычислений меня радовала не больше — перенабирать все формулы, содержащие к тому же несколько частных случаев, далеко не очень приятно. Вариант вычислять производную численно как разность значений функции в двух соседних точках, деленную на соответствующее приращение независимой переменной, чреват потерей точности и вообще необходимостью подбирать подходящее приращение этой переменной.
Подумав некоторое время, я применил следующий подход. Потом я узнал, что он называется «автоматические дифференцирование», для него существует довольно обширная литература на английском, и ряд библиотек — но на русском я нашел только некоторые научные статьи про применение этого метода, и пост на Хабрахабре, в котором все рассказывается через смесь дуальных и комплексных чисел, и понять который с ходу, на мой взгляд, тяжело. С другой стороны, для понимания и практического применения автоматического дифференцирования не нужны никакие дуальные числа, и этот подход я тут и изложу.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js