Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我们可以更换';衍生工具';辛函数中的术语来自辛函数变量的微分?_Python_Sympy_Symbolic Math - Fatal编程技术网

Python 我们可以更换';衍生工具';辛函数中的术语来自辛函数变量的微分?

Python 我们可以更换';衍生工具';辛函数中的术语来自辛函数变量的微分?,python,sympy,symbolic-math,Python,Sympy,Symbolic Math,当运行以下代码时,会出现以下术语:Derivative(Ksi(uix,uiy),uix))和Derivative(Ksi(uix,uiy,uiy)): In [4]: dgN Out[4]: Matrix([ [-(x1x - x2x)*(-x1y + x2y)*((x1x - x2x)**2 + (-x1y + x2y)**2)**(-0.5)*Derivative(Ksi(uix, uiy), uix) + (-x1y + x2y)*(-(-x1x + x2x)*Derivative(Ks

当运行以下代码时,会出现以下术语:
Derivative(Ksi(uix,uiy),uix))
Derivative(Ksi(uix,uiy,uiy))

In [4]: dgN
Out[4]:
Matrix([
[-(x1x - x2x)*(-x1y + x2y)*((x1x - x2x)**2 + (-x1y + x2y)**2)**(-0.5)*Derivative(Ksi(uix, uiy), uix) + (-x1y + x2y)*(-(-x1x + x2x)*Derivative(Ksi(uix, uiy), uix) + 1)*((x1x - x2x)**2 + (-x1y + x2y)**2)**(-0.5)],
[-(-x1x + x2x)*(-x1y + x2y)*((x1x - x2x)**2 + (-x1y + x2y)**2)**(-0.5)*Derivative(Ksi(uix, uiy), uiy) + (x1x - x2x)*(-(-x1y + x2y)*Derivative(Ksi(uix, uiy), uiy) + 1)*((x1x - x2x)**2 + (-x1y + x2y)**2)**(-0.5)]])
我想用一个我知道的函数导数的符号表达式来代替这个
导数
项,例如,我想设置
导数(Ksi(uix,uiy),uix)=2*uix
。 是否有一种简洁的方法来进行这种替换,并将
导数(Ksi(uix,uiy,uix)
设置为
2*uix
,从而获得
dgN
的符号表达式?这是我的密码:

import sympy as sp 

sp.var("kPenN, Xix, Xiy, uix, uiy, Alpha, x1x, x1y, x2x, x2y, x3x, x3y ", real = True) 
Ksi = sp.Function('Ksi')(uix,uiy)
Xi          = sp.Matrix([Xix, Xiy])
ui          = sp.Matrix([uix, uiy])
xix         = Xix + uix
xiy         = Xiy + uiy   
xi          = sp.Matrix([xix, xiy])
x1 = sp.Matrix([x1x, x1y])
x2 = sp.Matrix([x2x, x2y])

N           = sp.Matrix([x2 - x1, sp.zeros(1)]).cross(sp.Matrix([sp.zeros(2,1) , sp.ones(1)]))
N = sp.Matrix(2,1, sp.flatten(N[0:2]))
N = N / (N.dot(N))**(0.5)

xp = x1 + (x2 - x1)*Ksi
# make it scalar (in agreement with 9.231)
gN = (xi - xp).dot(N)
dgN = sp.Matrix([gN.diff(uix), gN.diff(uiy)])

你想要的替代品可以通过

dgN_subbed = dgN.subs(sp.Derivative(Ksi, uix), 2*uix)
这里Ksi没有参数(uix,uiy),因为在创建Ksi时已经声明了这些参数


如果将
Ksi
定义为
Ksi=sp.Function('Ksi')
,则语法会更直观一些,将参数(不管它们是什么)留待以后提供。然后,
sp.导数(Ksi(uix,uiy,uix)
将是引用导数的方法。

似乎您会使用与任何其他替换相同的工具,即方法。那不管用吗?我没让它管用。也许是我做错了这很好用。我在Ksi后面添加了参数,比如
dgN.subs(sp.Derivative(Ksi(uix,uiy),uix),2*uix)
在定义变量时,
Ksi
已经用参数调用了。您可以编写
Ksi=Function(“Ksi”)
并在每次使用它时使用参数调用它,或者
Ksi=Function(“Ksi”)(uix,uiy)
并将其用作
Ksi
(如果您想要使用不同参数调用函数,我更喜欢前一种情况)。