标签: lambdify

我可以使用lambdify评估python函数的派生形式吗?

我昨天问了一个问题关于区分python函数的问题,然后当我发现张贴的答案都不能满足我对某些变量的求值(然后绘制导数)的需要时,我便能找到自己的解决方案。

先前的代码:

import sympy as sym
import math


def f(x,y):
    return x**2 + x*y**2


x, y = sym.symbols('x y')

def fprime(x,y):
    return sym.diff(f(x,y),x)

print(fprime(x,y)) #This works.

print(fprime(1,1)) 
Run Code Online (Sandbox Code Playgroud)

新代码:

import sympy as sym
import math


def f(x,y):
    return x**2 + x*y**2


x, y = sym.symbols('x y')

def fprime(x,y):
    return sym.diff(f(x,y),x)

print(fprime(x,y)) #This works.

DerivativeOfF = sym.lambdify((x,y),fprime(x,y),"numpy")

print(DerivativeOfF(1,1))
Run Code Online (Sandbox Code Playgroud)

如您所见,我通过创建新函数DerivativeOfF克服了无法评估派生fprime的功能,该函数是fprime的“ lambdified”版本。从那里,我能够评估DerivativeOfF,并将其绘制在变量之一中。

我的问题是:为什么要这样做?我到底做了什么?这种方法有什么缺点?我曾尝试阅读过lambdify文档,但对我来说却非常混乱(我是Python的初学者)。我的猜测是我将Python函数fprime转换为Sympy表达式DerivativeOfF或类似的东西。任何帮助解释发生了什么事,为什么发生以及lambdify所做的事情(以外行的术语)的帮助,将不胜感激。

python numpy sympy python-3.x lambdify

5
推荐指数
1
解决办法
1908
查看次数

使用lambdify将硬积分转换为lambda函数

我想对功能进行羔羊化Integral(t**t,(t,0,x))。它可以工作,但是我的新函数(由返回)lambdify不返回数字,而仅返回sympy.integrals.integrals.Integral类。但是我不希望那样,我希望它返回一个浮点数。

这是我的代码:

import sympy as sp
import numpy as np
f = sp.lambdify(x,sp.integrate(t**t,(t,0,x)))
print(f(2)) #return Integral(t**t, (t, 0, 2))
#but i want 2.83387674524687
Run Code Online (Sandbox Code Playgroud)

python function sympy integral lambdify

4
推荐指数
1
解决办法
609
查看次数

Sympy 到 numpy 会导致 AttributeError: 'Symbol' object has no attribute 'cos'

我正在尝试使用 sympy 进行偏导数,我想将其转换为函数,以便我可以替换值并估计 t_1、t_2 的某些值的导数。我使用的代码如下:

import sympy as sp
import numpy as np
from sympy import init_printing
init_printing()
t_1,t_2,X_1,X_2,Y_1,Y_2,X_c1,X_c2,Y_c1,Y_c2,a_1,a_2,psi_1,psi_2,b_1,b_2= sp.symbols('t_1 t_2 X_1 X_2 Y_1 Y_2 X_c1 X_c2 Y_c1 Y_c2 a_1 a_2 psi_1 psi_2 b_1 b_2')

X_1=X_c1 + (a_1 * sp.cos(t_1) * sp.cos(psi_1)) - ((b_1) * sp.sin(t_1)* sp.sin(psi_1))

X_2=X_c2 + (a_2 * sp.cos(t_2) * sp.cos(psi_2)) - ((b_2) * sp.sin(t_2)* sp.sin(psi_2))

Y_1=Y_c1 + (a_1 * sp.cos(t_1) * sp.sin(psi_1)) + ((b_1) * sp.sin(t_1)* sp.cos(psi_1))

Y_2=Y_c2 + (a_2 * sp.cos(t_2) * sp.sin(psi_2)) + ((b_2) …
Run Code Online (Sandbox Code Playgroud)

numpy sympy derivative python-3.x lambdify

3
推荐指数
1
解决办法
1万
查看次数

Python 如何获取某一特定点的导数值?

from sympy import *
x = Symbol('x')
y = x ** 2
dx = diff(y, x)
Run Code Online (Sandbox Code Playgroud)

这段代码可以得到y的导数。这很容易dx = 2 * x

dx现在我想获取for的值x = 2

显然,dx = 2 * 2 = 4x = 2

但是我如何用Python代码实现这一点呢?

感谢您的帮助!

python sympy lambdify

2
推荐指数
1
解决办法
5171
查看次数

对多个符号变量使用 Lambdify

下面的 python 脚本计算表达式中的第一项, 4.939e-3xAxB+8.7989 at (A,B) = (1.0,1.0)

 import sympy
 from sympy import *

 A = sympy.Symbol(A)
 B = sympy.Symbol(B)
 F = 4.939e-3*A*B+8.7989
 G = str(F).split("+")[0]
 H = lambdify([A,B], G, "numpy")
 print H(1,1)
Run Code Online (Sandbox Code Playgroud)

输出为:0.004939

现在下面的代码旨在实现相同的目标:

A = sympy.Symbol(A)
B = sympy.Symbol(B)
F = 4.939e-3*A*B+8.7989
G = str(F).split("+")[0]
H = lambdify(A, G, "numpy")
I = lambdify(B, H(1), "numpy")
print I(1)
Run Code Online (Sandbox Code Playgroud)

但这会返回错误: NameError: global name 'B' is not defined

有人可以解释一下吗?

python sympy lambdify

1
推荐指数
1
解决办法
5347
查看次数

如何使用lambdify评估我的功能?

我有一个包含多个变量的表达式,让我们说如下:

import numpy as np
import sympy as sym
from sympy import Symbol, Add, re, lambdify
x = sym.Symbol('x')
y = sym.Symbol('y')
z = sym.Symbol('z')

F = x+ y +z
Run Code Online (Sandbox Code Playgroud)

我有如下三个变量列表:

x = [3, 2 ,3]   
y = [4, 5 , 6] 
z = [7, 10 ,3]
Run Code Online (Sandbox Code Playgroud)

我想为变量的每个元素评估函数。我知道我可以定义如下内容:

f_dis = lambdify([x, y, z], x + y + z, 'numpy')
d = f_dis(3, 4, 7)
print ( "f_dis =", d)
Run Code Online (Sandbox Code Playgroud)

这给了我14个理想的结果。但是如何将x,y和z作为三个列表传递(而不是分别编写元素),并得到如下结果:

[14, 17, 12]
Run Code Online (Sandbox Code Playgroud)

根据以下说明,使用lambdify似乎是评估函数的更有效方法:https ://www.sympy.org/scipy-2017-codegen-tutorial/notebooks/22-lambdify.html

谢谢。

python symbols numpy sympy lambdify

1
推荐指数
1
解决办法
65
查看次数

标签 统计

lambdify ×6

sympy ×6

python ×5

numpy ×3

python-3.x ×2

derivative ×1

function ×1

integral ×1

symbols ×1