如何使用SymPy查找给定一阶导数的n阶导数?

用户541686

鉴于一些˚F和微分方程X “()= ˚FX)),我如何计算X Ñ)在以下方面X)?

例如,给定fxt))= sin(xt)),我想获得x (3)t)=(cos(xt))2 − sin(xt))2)sin(xt))。

到目前为止,我已经尝试过

>>> from sympy import diff, sin
>>> from sympy.abc import x, t
>>> diff(sin(x(t)), t, 2)

这给了我

-sin(x(t))*Derivative(x(t), t)**2 + cos(x(t))*Derivative(x(t), t, t)

但是我不确定如何告诉SymPy是什么Derivative(x(t), t),并Derivative(x(t), t, t)自动找出答案,等等。


回答:

这是根据我在下面收到的答案得出的最终解决方案:

def diff(x_derivs_known, t, k, simplify=False):
    try: n = len(x_derivs_known)
    except TypeError: n = None
    if n is None:
        result = sympy.diff(x_derivs_known, t, k)
        if simplify: result = result.simplify()
    elif k < n:
        result = x_derivs_known[k]
    else:
        i = n - 1
        result = x_derivs_known[i]
        while i < k:
            result = result.diff(t)
            j = len(x_derivs_known)
            x0 = None
            while j > 1:
                j -= 1
                result = result.subs(sympy.Derivative(x_derivs_known[0], t, j), x_derivs_known[j])
            i += 1
            if simplify: result = result.simplify()
    return result

例:

>>> diff((x(t), sympy.sin(x(t))), t, 3, True)
sin(x(t))*cos(2*x(t))
Stelios

这是一种方法,它返回直到n-th阶的所有导数的列表

import sympy as sp

x = sp.Function('x')
t = sp.symbols('t')

f = lambda x: x**2 #sp.exp, sp.sin
n = 4 #3, 4, 5

deriv_list = [x(t), f(x(t))]  # list of derivatives [x(t), x'(t), x''(t),...]
for i in range(1,n):
    df_i = deriv_list[-1].diff(t).replace(sp.Derivative,lambda *args: f(x(t)))
    deriv_list.append(df_i)

print(deriv_list)

[x(t), x(t)**2, 2*x(t)**3, 6*x(t)**4, 24*x(t)**5]

随着f=sp.sin它的回报

 [x(t), sin(x(t)), sin(x(t))*cos(x(t)), -sin(x(t))**3 + sin(x(t))*cos(x(t))**2, -5*sin(x(t))**3*cos(x(t)) + sin(x(t))*cos(x(t))**3]

编辑:用于计算n-th导数的递归函数

def der_xt(f, n):
    if n==1:
        return f(x(t))
    else:
        return der_xt(f,n-1).diff(t).replace(sp.Derivative,lambda *args: f(x(t)))

print(der_xt(sp.sin,3))

-sin(x(t))**3 + sin(x(t))*cos(x(t))**2

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用MongoDB聚合框架计算一阶导数

如何获得图像的一阶和二阶导数矩阵

Keras:使用模型的一阶和二阶导数之和作为最终输出

绘制一阶ODE的解及其导数

数值查找非均匀二维数据的一阶导数

如何在R中将(一阶)导数写为函数?

如何在Python中集成包含r一阶导数的r函数?

我如何估计C ++中评估的单变量函数的一阶导数?

计算函数的n阶导数

如何在三次样条实现中计算一组离散点的一阶导数?

从 FFTW 获得的真实数据的一阶、二阶、三阶和四阶偏导数不正确

使用有限差分计算一阶和二阶导数时,边界处存在较大误差

如何在我的计划程序中获得n阶导数?

在不知道公式的情况下提取并绘制python中曲线的一阶导数?

如何使用参数微分获得二阶导数?

Python ode一阶,如何使用Sympy解决此问题

使用语句查找一阶(SQL)

如何使用Coq构造一阶逻辑项?

n维数组的numpy二阶导数

创建高达N阶函数的符号导数的绝佳方法

如何提高浮点二阶导数计算的精度?

如何在Fipy中表示三阶导数

如何在 C# 中计算一维数组的二阶导数

隐式微分-使用Matlab的二阶导数

如何在Python中绘制耦合的非线性二阶ODE的二阶导数?

在Python中使用连续的四阶和五阶导数平滑样条曲线?

我有一个从rstudio生成的图,我想要图的导数图(一阶),我可以在r中做到这一点吗?

使用SymPy表达式和SciPy求解器求解ODE的一阶系统

递归找到二阶导数