У меня есть функцияМногофакторный дифференциация в Python
, что я хочу, чтобы упростить и дифференцироваться в Python, определяемый как **
def u(x, t):
return math.erf((x + 1)/(2 * (k * t) ** (1/2)))
** Пожалуйста, поправьте меня, если я ошибаюсь.
У меня есть весь необходимый импорт следующим образом:
import math
import scipy
import matplotlib
from sympy import *
Как Определяя символы
x, k, t = symbols('x k t')
Это отлично работает:
def f(x):
return x ** 4
diff(f(x))
Который возвращает правильный ответ ,
4x^3
Однако это
diff(u(x, t))
или это
diff(u(x, t), t)
возвращает ошибку следующим образом
TypeError Traceback (most recent call last) in() ----> 1 diff(u(x, t))
in u(x, t) 1 def u(x, t): ----> 2 return math.erf((x + 1)/(2 * (k * t) ** (1/2)))
C:\Anaconda\lib\site-packages\sympy\core\expr.py in float(self) 223 if result.is_number and result.as_real_imag() 1 : 224 raise TypeError("can't convert complex to float") --> 225 raise TypeError("can't convert expression to float") 226 227 def complex(self):
TypeError: can't convert expression to float
В Matlab я мог бы легко сделать это:
syms x;
syms k;
syms t;
u = erf((x + 1)/(2 * sqrt(k * t)));
LHS = simplify(diff(u, t))
RHS = k * simplify(diff(u, x, 2))
Мой вопрос в том, как я могу дифференцировать и/или упростить математическую функцию более чем одной переменной в Python?
Читали [эта документация] (http://docs.sympy.org/dev/tutorial/calculus.html#derivatives)? – BrenBarn
Да, я прочитал документацию SymPy, однако я не уверен, как работает синтаксис в отношении следующего: 'expr = exp (x * y * z)' 'diff (expr, x, y, y, z, z, z, z) ' – EfVonZee
Кроме того, если я определяю свою собственную функцию как таковую: expr = math.erf ((x + 1)/(2 * (k * t) ** (1/2))) и попытайтесь дифференцировать по отношению к t 'diff (expr, t)' Я получаю сообщение об ошибке. – EfVonZee