Thanks to visit codestin.com
Credit goes to github.com

Skip to content

SvetoCopy/Differentiator

Repository files navigation

Multifunctional Differentiator by Ruzal

Как работает?

На вход поступает выражение в виде дерева. Например:

( . x . ) + ( . x . )

Точка обозначает NULL. Таким образом строится дерево

image

Все операции и их деревья будут ниже

Дифференцирование

После чтения дерева, выполняются стандартные операции взятия производной. Например:

image

Функция diff() обозначает дифференцирование элементов выражений(переменных или чисел)

Оптимизация

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

Первый тип оптимизации - свертка констант

Этот тип оптимизации работает для поддеревьев, не содержащих переменных. Это поддерево заменяется вычисленным значением. Например:

image

Второй тип оптимизации - удаление нейтральных элементов

Этот тип оптимизации работает для определенных случаев (в т.ч. содержащих переменные). Полный список этих случаев перечислен в таблице:

Было Стало

Как выглядит результат?

Результат выписывается в виде Latex файла, в котором присутствуют:
  • Все стадии оптимизации дерева
  • График изначальной функции и разложения в ряд Тейлора
  • График изначальной функции и касательной к ней в точке 0

Рассмотрим пример работы программы для функции f(x) = sin(x) + cos(x^2)

Процесс оптимизации:

image

Добавлены речевые связки, которые часто используются в математической литературе

Результат дифференцирования:

image

График функции и ряда Тейлора до 5 члена:

taylor

График функции и график касательной в точке 0:

tangent

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published