Состав пользовательских функций в SymPyPython

Программы на Python
Anonymous
Состав пользовательских функций в SymPy

Сообщение Anonymous »

Я ожидаю достижения композиции функций. Вывод для laplace, определенного как композиция, отличается от симметричного
Это моя попытка.

Код: Выделить всё

from sympy import Function, Symbol
from sympy.printing import pprint

x = Symbol(name="x", real=True)
h = Symbol(name="h", positive=True)
u = Function("u")

def forward(x):
return (u(x + h) - u(x)) / h

def backward(x):
return (u(x) - u(x - h)) / h

def centered(x):
return (u(x + h) - u(x - h)) / (2 * h)

def symmetric(x):
return (u(x - h) - 2 * u(x) + u(x + h)) / h**2

def compose(f, g):
return lambda x: f(g(x))

laplace = compose(backward, forward)

pprint(forward(x))
pprint(backward(x))
pprint(centered(x))
pprint(symmetric(x))
pprint(laplace(x))
# assert symmetric.equals(laplace().simplify())

Код: Выделить всё

-u(x) + u(h + x)
────────────────
h
u(x) - u(-h + x)
────────────────
h
-u(-h + x) + u(h + x)
─────────────────────
2⋅h
-2⋅u(x) + u(-h + x) + u(h + x)
──────────────────────────────
2
h
⎛-u(x) + u(h + x)⎞    ⎛     -u(x) + u(h + x)⎞
u⎜────────────────⎟ - u⎜-h + ────────────────⎟
⎝       h        ⎠    ⎝            h        ⎠
──────────────────────────────────────────────
h
Некоторое время назад я спрашивал кое-что, связанное с композицией, поскольку композиция заключается в замене выражений, но мне бы хотелось, чтобы мы могли сделать это наивным способом.
Изображение


Подробнее здесь: https://stackoverflow.com/questions/790 ... s-in-sympy

Вернуться в «Python»