python generate函数,使用Python函数并生成所有派生词

I have a python function with variable number of arguments:

F(x1, x2, ... , xN)

I want to automatically generate N functions representing the derivatives of F with respect to each argument.

F'_1 = dF/dx1

F'_2 = dF/dx2

...

F'_N = dF/dxN

For example, I be able to give both

F(x1) = sin(x1)

and

F(x1, x2) = sin(x1) * cos(x2)

and get all the derivatives automatically.

Edit2:

If function F was 2 variable (fixed number of arguments), I could use

def f(x,y):

return sin(x)*cos(y)

from sympy import *

x, y = symbols('x y')

f_1 = lambdify((x,y), f(x,y).diff(x))

解决方案

The trick is to use inspect.getargspec to get the names of all the arguments to the function. After that, it's a simple list comprehension:

import inspect

from sympy import *

def get_derivatives(func):

arg_symbols = symbols(inspect.getargspec(func).args)

sym_func = func(*arg_symbols)

return [lambdify(arg_symbols, sym_func.diff(a)) for a in arg_symbols]

For example:

def f(x, y):

return sin(x)*cos(y)

all_derivatives = get_derivatives(f)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值