如何替换函数对值的推导?

时间:2019-10-03 20:55:52

标签: python-3.x sympy taylor-series

包含指示性的功能,如:

df = -2 * x * y(x)*导数(y(x),x)-y(x)** 2

我有Derivative(y(x),x)的值,但我不知道该怎么做

x= sp.symbols('x  ')
y=sp.Function("y")(x)
f = sp.Function("f")(x,y)

f = -x*y**2

f_num = f.subs([(y,1),(x,2)])

df = sp.diff(f,x)

# I have to calculate df_num value by using(subs) respect 
x,y,Derivative(y(x), x)

感谢所有帮助的人

3 个答案:

答案 0 :(得分:1)

常微分方程给了我f,我试图通过使用三次泰勒级数展开式(TS3)数值地解决这个问题。初始值已知为x = 2和y = 1,我们试图在x = 2.5处找到函数的值。

x= sp.symbols('x ')
y=sp.Function("y")(x)
f = sp.Function("f")(x,y) # f is actually y'(derived of y )
x0 = 2
y0 =1
f = -x*y**2  # ordinary differential equation and its derivatives line 33 to 35
df = sp.diff(f,x)
dff = sp.diff(f,x,2)
y_num = []
h = 0.1 # step size
k = 0
while x0<2.5:
    f_num = f.subs([(y,y0),(x,x0)])

    df_num = df.subs(y.diff(x),f_num).subs([(y,y0),(x,x0)])

    dff_num = dff.subs(y.diff(x,2),df_num).subs(sp.Derivative(y, 
    x),f_num).subs([(y,y0),(x,x0)])

   y_num.append(y0 + h*f_num + h**2/2*df_num+h**3/6*dff_num)

   y0 = y_num[k]
   x0 = x0+h
   k=k+1
print(x0)
print(y_num)

我不知道这是一篇有用的文章,还是我可以正确表达自己的意思,但感谢您的关注和答复

答案 1 :(得分:0)

这是您的意思吗?

import sympy as sp

x= sp.symbols('x')
y=sp.Function("y")(x)
f = sp.Function("f")(x,y)

f = -x*y**2

f_num = f.subs([(y,1),(x,2)])

df = sp.diff(f,x)
df = df.subs(sp.diff(y,x),1)

sp.pprint(df)

答案 2 :(得分:0)

在存在派生和函数的情况下执行子操作时,必须小心。简短的答案是:

Could not resolve dependencies for project com.example:projectA:jar:0.0.1-SNAPSHOT: Could not find artifact com.example:projectB:jar:0.0.1-SNAPSHOT

其中导数(取决于y)在y之前完成,而y(取决于x)在x之前完成。

其他注释:1)注意,将f定义为f(x,y),然后立即将其定义为表达式http;第一个定义不是必需的。 2)您定义了df = f.diff(x) df_num = df.subs([(y.diff(x),1), (y,1), (x,2)]) ,但这对计算-x*y**2的数值没有影响。