gpt4 book ai didi

python - Python 中的多元微分

转载 作者:行者123 更新时间:2023-11-28 21:50:09 25 4
gpt4 key购买 nike

我有一个函数

Multivariate function我想在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 中区分和/或简化包含多个变量的数学函数?

最佳答案

你需要使用sympy.erf,而不是math.erf:

>>> import sympy
>>> x, k, t = sympy.symbols('x k t')
>>> def u(x, t):
... return sympy.erf((x + 1) / (2 * (k * t) ** (1 / 2)))
>>> sympy.diff(u(x, t), x, t)
(0.25*(k*t)**(-1.5)*(x + 1)**2 - 0.5*(k*t)**(-0.5))*exp(-(k*t)**(-1.0)*(x + 1)**2/4)/(sqrt(pi)*t)

关于python - Python 中的多元微分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32277347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com