Расчет производной онлайн: Дифференцирование функции, заданной неявно

x
  • : Log[a, x]
  • : Log[x]
  • : cos[x] или Cos[x]
  • : sin[x] или Sin[x]
  • : tan[x] или Tan[x]
  • : cot[x] или Cot[x]
  • : sec[x] или Sec[x]
  • : csc[x] или Csc[x]
  • : ArcCos[x]
  • : ArcSin[x]
  • : ArcTan[x]
  • : ArcCot[x]
  • : ArcSec[x]
  • : ArcCsc[x]
  • : cosh[x] или Cosh[x]
  • : sinh[x] или Sinh[x]
  • : tanh[x] или Tanh[x]
  • : coth[x] или Coth[x]
  • : sech[x] или Sech[x]
  • : csch[x] или Csch[е]
  • : ArcCosh[x]
  • : ArcSinh[x]
  • : ArcTanh[x]
  • : ArcCoth[x]
  • : ArcSech[x]
  • : ArcCsch[x]
  • [19.67] =19: integral part of (19.67) – выделяет целую часть числа (integerPart)
  • Производные

    Для того, чтобы найти производную функции нужно написать в строке: f[x], x. Если Вам требуется найти производную n-го порядка, то следует написать: f[x], {x, n}. В том случае, если Вам требуется найти частную производную функции напишите в окне гаджета: f[x, y, z,…,t], j, где — интересующая Вас переменная.

    4), {x,6}.

    Select rating12345

    Рейтинг: 3 (Голосов 1550)

    Сообщить об ошибке

    Смотрите также

    Аналитическое вычисление производной функции на языке Scala / Хабр

    Введение

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


    Подготовка

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

    MathAST:

    sealed trait MathAST
    

    И его наследников:

    sealed trait SingleToken extends MathAST{
    	val a: MathAST
    }
    sealed trait DoubleToken extends MathAST{
    	val a: MathAST
    	val b: MathAST
    }
    sealed trait LeafToken extends MathAST
    

    SingleToken будет реализовывать case-классы унарных операторов, таких как sin(a), -a, ln(a) и т. b и т.д.
    LeafToken — «листья» дерева, т.е. константы, переменные и зарезервированные имена констант (число Пи и экспонента).

    Опишем классы/объекты операторов и токенов:

    case object Pi extends LeafToken
    case object Exponenta extends LeafToken
    case class Sin(override val a: MathAST) extends SingleToken
    case class Cos(override val a: MathAST) extends SingleToken
    …
    case class Mul(override val a: MathAST, override val b: MathAST) extends DoubleToken
    case class Add(override val a: MathAST, override val b: MathAST) extends DoubleToken
    …
    case class Differentiate(f: MathAST, dx: Variable) extends MathAST
    case class Variable(name: String) extends LeafToken
    case class Constant(value: BigDecimal) extends LeafToken

    Обратите внимание на класс Differentiate, он имеет особую сигнатуру: f – исходная функция, dx – переменная, по которой происходит дифференцирование.

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

    Mul(Constant(BigDecimal(2)), Pow(x, Constant(BigDecimal(2)))

    Конечно, чтобы получить дерево-выражение из обычной строки, введенной пользователем, нужно написать парсер, но, как было упомянуто выше, это уже другая тема.

    Скажу лишь что в программе используется самодельный парсер, наследующий трейт Parsers из пакета scala.util.parsing.combinator.


    Алгоритм нахождения производной

    В основе которого лежат правила дифференцирования и таблица производных.

    Опишем рекурсивную функцию, которая и будет преобразовывать исходную математическую функцию в результирующую функцию-производную:

    def differentiate(f: MathAST)(implicit dx: String): MathAST

    Аргумент dx, содержащий имя переменной (по которой происходит дифференцирование) помечен как неявный (implicit), это позволит не передавать ее в рекурсивные вызовы, пусть этим занимается компилятор.

    На вход рекурсивной функции подается выражение — исходная функция

    f(x) (в формате MathAST), возвращаемое значение — функция-производная в том же формате.

    Примечание 1: Выражение может быть бинарным, унарным или токеном.
    Примечание 2: Оператором может быть один из: «+», «-», «^», «*», «/», «abs», «sin», «cos», «tg», «ctg», «ln», «arcsin», «arccos», «arctg», «arcctg», «(», «)».
    Примечание 3: Входные и выходные данные представлены в формате MathAST — дерево-выражение.


    Общий алгоритм

    В общем виде алгоритм слишком абстрактный, поэтому дальше разберем его подробнее.


    1. Рекурсивная функция получает на вход данные и используя сопоставление с образцом (pattern-matching) выполняет необходимые действия, в зависимости от типа данных.
    2. Функция высчитывает производную для входного выражения и возвращает выражение-результат. Может получиться, что аргументы a и/или b оказались не константой и не переменной, а сложной функцией u(x),
      тогда понадобится рекурсивно посчитать еще и производную u’(x), т.е. вернуть [ differentiate(u(x)) ] — перейти к шагу 1 с новыми данными — u(x).
    3. Если данные не корректны вернуть сообщение об ошибке.

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

    Функция приняла на вход данные — выражение-функцию, которую следует обработать в соответствии с правилами дифференцирования


    Если бинарное выражение

    Бинарные выражения помечены трейтом DoubleToken. »):

    case Add(a, b) => Add(differentiate(a), differentiate(b))
    case Sub(a, b) => Sub(differentiate(a), differentiate(b))
    …
    

    1. Если оператор «+»: вернуть [ differentiate(a) + differentiate(b) ].
    2. Если оператор «-»: вернуть [ differentiate(a) — differentiate(b) ].
    3. Если оператор «*»: Умножение представляет из себя более сложный случай, операнды a и b могут быть константами или переменными (всего 4 комбинации: u(x)*c, u(x)*v(x), c*c, c*u(x)).
      Функция анализирует какой из 4 вариантов попался и возвращает выражение используя правило дифференцирования № 1, № 3, и №5,
      если один из операндов – сложная функция. Например: если a = u(x), а b = v(x), то вернуть [ differentiate(a) * b + a * differentiate(b)) ].
      Приватный метод isDependsOnVar проверяет, зависит ли подвыражение от переменной, по которой производится дифференцирование. c, c=const Constant(BigDecimal(0)) }else Add(Mul(differentiate(a), b), Mul(a, differentiate(b))) }
      Если унарное выражение

      Классы SingleToken обрабатываются следующим образом:

      case e: SingleToken =>
      val d = e match {
      	case Sin(x) => Cos(x)
      	case Cos(x) => Usub(Sin(x))
      	case Tg(x) => Div(Constant(BigDecimal(1)), Pow(Cos(x), Constant(BigDecimal(2))))
      	…
      }
      if (isLeaf(e.a)) d else Mul(d, differentiate(e.a))

      Оператор проверяется на соответствие одному из доступных операторов («sin», «-», «cos», …)
      Для примера, оператор «sin»: вернуть [ cos(a) ], если a = x, если же a — сложная функция u(x), то вернуть [ cos(a) * differentiate(a) ].

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

      Отдельно следует рассмотреть оператор abs — модуль, поскольку его нет в таблице.

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

      Если один токен

      Речь идет о переменной или константе

      case Variable(a) => if (a == dx) Constant(BigDecimal(1)) else Constant(BigDecimal(0))
      case Constant(a) => Constant(BigDecimal(0))
      case Pi | Exponenta => Constant(BigDecimal(0))
      case _ => throw new AbstractEvaluateException("Differentiate: Wrong input data")

      1. Введены некорректные данные, вывести сообщение об ошибке и завершить работу.
      2. Если переменная (по которой осуществляется дифференцирование, например x), вернуть [ 1 ].
      3. Если константа, вернуть [ 0 ].

      Напоследок добавим строку:

      case Differentiate(_f, _dx) => differentiate(_f)(_dx.name)

      Это на случай, если внутри функции есть вложенная производная, т. c, c=const Constant(BigDecimal(0)) }else Add(Mul(differentiate(a), b), Mul(a, differentiate(b))) } case e: SingleToken => val d = e match { case Sin(x) => Cos(x) case Cos(x) => Usub(Sin(x)) case Tg(x) => Div(Constant(BigDecimal(1)), Pow(Cos(x), Constant(BigDecimal(2)))) case Ctg(x) => Usub(Div(Constant(BigDecimal(1)), Pow(Sin(x), Constant(BigDecimal(2))))) case Abs(x) => Div(x, Abs(x)) case Ln(x) => Div(Constant(BigDecimal(1)), x) case Sqrt(x) => Div(Constant(BigDecimal(1)), Mul(Constant(BigDecimal(2)), Sqrt(x))) case Usub(x) => Usub(differentiate(x)) case Arcsin(x) => Div(Constant(BigDecimal(1)), Sqrt(Sub(Constant(BigDecimal(1)), Pow(x, Constant(BigDecimal(2)))))) case Arccos(x) => Usub(Div(Constant(BigDecimal(1)), Sqrt(Sub(Constant(BigDecimal(1)), Pow(x, Constant(BigDecimal(2))))))) case Arctg(x) => Div(Constant(BigDecimal(1)), Sub(Constant(BigDecimal(1)), Pow(x, Constant(BigDecimal(2))))) case Arcctg(x) => Usub(Div(Constant(BigDecimal(1)), Sub(Constant(BigDecimal(1)), Pow(x, Constant(BigDecimal(2)))))) case _ => throw new AbstractEvaluateException(“Differentiate: Unknown unary operator”) } if (isLeaf(e. a)) d else Mul(d, differentiate(e.a)) case Variable(a) => if (a == dx) Constant(BigDecimal(1)) else Constant(BigDecimal(0)) case Constant(a) => Constant(BigDecimal(0)) case Pi | Exponenta => Constant(BigDecimal(0)) case _ => throw new AbstractEvaluateException(“Differentiate: Wrong input data”) } private def isLeaf(e: MathAST): Boolean = e match { case Variable(_) | Constant(_) => true case Pi | Exponenta => true case _ => false } private def isDependsOnVar(tree: MathAST)(implicit dx: String): Boolean = tree match{ case e: DoubleToken => (e.a match { case Variable(name) => if(name == dx) true else false case _ => isDependsOnVar(e.a) })||(e.b match { case Variable(name) => if(name == dx) true else false case _ => isDependsOnVar(e.b) }) case e: SingleToken => isDependsOnVar(e.a) case Variable(name) => if(name == dx) true else false case _ => false } }


      Заключение

      Весь код исходников можно скачать на github’е, протестировать программу онлайн можно на сайте Калькулятор производных онлайн, приложение выполнено в виде REST сервиса и дополнено модулями упрощения выражений.


      Список литературы


      • Математический портал «mathprofi.ru» mathprofi.ru/slozhnye_proizvodnye_logarifmicheskaja_proizvodnaja.html
      • Odersky M. «Programming in Scala (second edition)»
      • Хостманн К. «Scala для нетерпеливых»

      Онлайн-калькулятор производных

      Калькулятор частных производных

      Калькулятор производных вычисляет производную или частную производную функции f. Дополнительно калькулятор вычисляет градиент в 3D.

      Поле ввода для вычисляемой функции. С помощью ‘ok’ введенная функция принимается. С помощью ∂/∂… можно получить соответствующие производные. Многократное применение приводит в каждом случае к производной функции-предшественника.

      f(…) = 92)/cos(y)

      cl

      ok

      Pos1

      End

      d n / dx n

      n / ∂x n

      n / ∂y n

      n / ∂z n

      grad(f) ∇f

      7

      8

      9

      /

      Δ

      x

      y

      Z

      4

      5

      6

      *

      ω

      A

      B

      C

      1

      2

      9 3

      3

      9000-

      2

      3

      9000-

      2

      3

      9000-

      3

      9000-

      (

      )

      . A /5 x

      A /5 x

      A /5 x

      A /5 x

      A0005

      σ

      ASIN

      ACOS

      ATAN

      x 2

      √x

      A x

      A / x+B

      | x / x+B

      |

      Δ

      SINH

      COSH

      A порядка+C / B порядка+C

      A+X / B+Z

      Z 2 –A

      Z 2 –A

      Z 2 –A

      Z 2 –A

      Z -A

      Z / B+Z

      Z / B+Z

      / z 2 +a 2

      a / x+b

      1+√y / 1-√y

      E x SIN (Y) COS (Z)

      √x+A

      √E Aes

      ex

      ae-bx2+c

      eax

      aebx+c

      eax2

      1eax

      xex

      650250250250250250250250250250250250250250250250250250250250250250250250250250250250241
      Функция Описание
      sin(x) Синус x
      1 90×2421 90×2421 90×24210250 Cosine of x
      tan(x) Tangent of x
      asin(x) arcsine
      acos(x) arccosine of x
      atan(x) арктангенс x
      atan2(y, x) Возвращает арктангенс частного своих аргументов.
      ch(x) Гиперболический косинус x
      sh(x) Гиперболический синус x
      pow(a, b) Power a b
      sqrt(x) Square root of x
      exp(x) e-function
      log( x), LN (x) Natural Logarithm
      Log (X, B) Logarithm to Base B
      Log2 (x), LB (x)
      (x), LB (x)
      (x), LB (x)1
      (x). log10(x), ld(x) Логарифм по основанию 10
      подробнее…

      Краткие правила вывода

      Факторное правило: Постоянный множитель сохраняется при дифференцировании

      (a⋅f)′=a⋅f′

      Правило сумм: При выводе суммы слагаемые могут быть получены индивидуально

      (f1+f2)′=f1′+f2′

      Правило произведения: Правило получения произведений

      (u⋅v)′=u′⋅v+u⋅v′

      Правило частных: Правило вывода частных

      (uv)′=u′⋅v-u⋅v′v2

      Цепное правило: Вложенные функции превращаются в произведение внутренних и внешних производных при дифференцировании

      (f(g(x))′=f′(g)⋅g′(x)

      Основные производные:

      ddxConst. =0

      ддхх=1

      ddxxn=n⋅xn-1

      Производная n-го корня:

      ddxxn=ddxx1n=1n⋅x1n-1=1n⋅x1-nn=1n⋅x1-nn=1n⋅xn-1n

      Вывод квадратного корня:

      ддхх=12⋅х

      Получение кубического корня:

      ddxx3=ddxx13=13⋅x13-1=13⋅x23

      Вывод тригонометрических функций:

      ddxsin(x)=cos(x)

      ddxcos(x)=-sin(x)

      ddxsin(kx)=kcos(kx)

      ddxcos(kx)=-ksin(kx)

      ddxtan(x)=ddxsin(x)cos(x)=1cos2(x)

      Выводы e-функции:

      ddxex=(ex)′=ex

      ddxeax=(eax)′=aeax

      ddxeax2=(eax2)′=2axeax2

      ddx1ex=(1ex)′=(e-x)′=-e-x=-1ex

      ddxeln(x)=(eln(x))′=(x)′=1

      ddxexn=(exn)′=nxn-1exn

      ddx(ex)n=((ex)n)′=(enx)′=nenx

      Вывод логарифмических функций:

      ddxln(x)=1x

      ddxloga(x)=1xloga(e)

      Частные производные

      Для функций с более чем одной переменной производная одной из переменных называется частной производной.

      Для функции с переменной x и несколькими другими переменными частная производная по x записывается следующим образом.

      ∂∂xf(x,y,…)

      При частичном выводе остальные переменные рассматриваются как константы.

      Nth Калькулятор производной + онлайн-решатель с бесплатными шагами

      Рисунок 1

      Калькулятор $nth$ производной используется для вычисления $nth$ производной любой заданной функции. Калькуляторы этого типа позволяют довольно легко выполнять сложные дифференциальные вычисления, вычисляя ответ производной за считанные секунды. 9{n}} \]

      Что такое калькулятор производных $Nth$?

      Калькулятор $n-й$ производной — это калькулятор, который используется для вычисления $n-ной$ производной функции и для вычисления производной более высокого порядка .

      Этот калькулятор избавляет от необходимости вручную вычислять производную любой заданной функции $n$ раз.

      Часто мы сталкиваемся с некоторыми функциями, для которых вычисления производной становятся довольно длинными и сложными, даже для первой производной. Калькулятор производной $nth$ — это идеальное решение для вычисления производных для таких функций, где $n$ может быть $3$, $4$ и так далее.

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

      Как пользоваться калькулятором производных $Nth$

      Калькулятор производных $nth$ очень прост в использовании. Помимо быстрых вычислений, лучшей особенностью калькулятора производных $nth$ является удобный интерфейс .

      Рисунок 2 Формула n-й производной

      Этот калькулятор состоит из двух полей:  одно для ввода числа раз, которое необходимо вычислить производную, т. е. $n$, а другое для добавления функции. Прямо под этими полями находится кнопка « Отправить » , которая дает ответ при нажатии.

      Ниже приведено пошаговое руководство по использованию калькулятора производной $n$:

      Шаг 1:

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

      Шаг 2:

      Вставьте значение $n$ в первое поле. Значение $n$ должно лежать в области действительных чисел. Это значение соответствует количеству разностных итераций, которые необходимо выполнить для функции.

      Шаг 3:

      В следующем поле введите вашу функцию $f(x)$. Нет ограничений на тип функции, которую необходимо вычислить.

      Шаг 4:

      После того, как вы ввели значение $n$ и свою функцию, просто нажмите кнопку с надписью  «Отправить ». Через 2-3 секунды ваш решенный ответ появится в окне под полями.

      Решенные примеры

      Пример 1:

      Вычислить первую, вторую и третью производную функции, приведенной ниже: 9{2} -3x) \]

      Подставив значение $n$ и $f(x)$ в калькулятор производной $nth$, мы получим следующий ответ:

      \[ f”'(x) = 72x \]

      Пример 2:

      Найдите производную 7-го порядка следующей функции:

      \[ f(x) = x.

    Оставить комментарий