【问题标题】:How can i replace function's derivation to values?如何将函数的推导替换为值?
【发布时间】:2020-02-02 05:22:20
【问题描述】:

包含衍生的函数,如:

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)

感谢所有帮助的人

【问题讨论】:

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


    【解决方案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)
    

    我不知道这是一篇有用的帖子,还是我能正确表达自己,但感谢大家的关注和回答

    【讨论】:

      【解决方案2】:

      这符合你的意思吗?

      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)
      

      【讨论】:

      • 我正在尝试将泰勒级数展开式用于数值方法。我想我会在代码运行时分享最终版本,感谢您的支持
      • 感谢您终于给了我 50 个代表 :D
      【解决方案3】:

      当存在导数和函数时,您必须小心执行 subs。简短的回答是:

      df = f.diff(x)
      df_num = df.subs([(y.diff(x),1), (y,1), (x,2)])
      

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

      其他 cmets:1) 请注意,您将 f 定义为 f(x, y),然后立即将其定义为表达式 -x*y**2;第一个定义是不必要的。 2)你定义了f_num,但这对计算df的数值没有影响。

      【讨论】:

      • f_num 不直接影响 df_num 值,非常感谢您的回答
      猜你喜欢
      • 2018-12-28
      • 2021-06-08
      • 1970-01-01
      • 2022-08-20
      • 2022-07-06
      • 2016-12-22
      • 2014-05-12
      • 1970-01-01
      • 2020-01-03
      相关资源
      最近更新 更多