Создание и работа с точными дифференциалами в SymPy - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь понять, как создавать и манипулировать точными дифференциалами (алгебраическая обработка нотации Лейбница) в SymPy.Чтобы было ясно, хорошо известно, что

from sympy import *
init_printing()
x, y=symbols('x, y')
f=Function('f')(x, y)
Derivative(f, x)

дает

enter image description here

В приведенном выше случае точный дифференциал равен

enter image description here

Для физика это особенно необходимо с учетом того, как мы злоупотребляем правилом цепочки, но также и для простых вещей, таких как V = A \ell и dV = dA d\ell при работе с интегралами или этой классической физикой злоупотребление обозначением Лейбница , которое все время встречается в термодинамике.

1 Ответ

0 голосов
/ 14 июня 2018

Вот что-то очень наивное для одномерных функций.

>>> from sympy import *
>>> x  = Symbol(' x')
>>> dx = Symbol('dx')
>>> def f (x):
...     return x**3
>>> def g (x):
...     return sin(x)

Давайте возьмем дифференциалы f и g, используя их разложения Тейлора в дифференциал dx:

>>> f(x+dx).series(dx,0,2) - f(x)
3*dx*x**2 + O(dx**2)
>>> g(x+dx).series(dx,0,2) - g(x)
dx*cos(x) + O(dx**2)

, где по определению O(dx**2) равно нулю.Конечно, мы могли бы также использовать дифференцирование (diff):

>>> diff(x**3,x) * dx
3*dx*x**2
>>> diff(sin(x),x) * dx
dx*cos(x)
...