【问题标题】:Error in Derivative using Sympy使用 Sympy 的导数错误
【发布时间】:2017-01-04 09:13:24
【问题描述】:

我在使用 sympy 查找函数的偏导数时遇到问题

import sympy
import mpmath
import numpy as np
import math

Sa = 200
Sm = 100

mu1 = 310
sigma1 = 15

mu2 = 95
sigma2 = 5

f = 0.9

u1, u2 = sympy.symbols('u1 u2', real=True)
Snf = Sa/(1-Sm/(sigma1*u1 + mu1))
a = ((f*(sigma1*u1 + mu1))**2)/(sigma2*u2 + mu2)
b = (-1/3)*sympy.log(f*(sigma1*u1 + mu1)/(sigma2*u2 + mu2),10)

fu1 = sympy.diff((Snf/a)**(1/b),u1).subs({u1:8.11656443, u2:13.4526774})
print(fu1)

fu2 = sympy.diff((Snf/a)**(1/b),u2).subs({u1:8.11656443, u2:13.4526774})
print(fu2)

当我运行它时,我有答案,但答案看起来像?

我的代码有问题吗?还是我需要自己计算这个数字??

当我尝试不带日志的函数时,答案只是简单的数字,但当我尝试带日志的函数时,它会变成这样

【问题讨论】:

    标签: python sympy derivative


    【解决方案1】:

    使用来自sympysimplify 函数。

    import sympy
    import mpmath
    import numpy as np
    import math
    
    Sa = 200
    Sm = 100
    
    mu1 = 310
    sigma1 = 15
    
    mu2 = 95
    sigma2 = 5
    
    f = 0.9
    
    u1, u2 = sympy.symbols('u1 u2', real=True)
    Snf = Sa/(1-Sm/(sigma1*u1 + mu1))
    a = ((f*(sigma1*u1 + mu1))**2)/(sigma2*u2 + mu2)
    b = (-1/3)*sympy.log(f*(sigma1*u1 + mu1)/(sigma2*u2 + mu2),10)
    
    fu1 = sympy.diff((Snf/a)**(1/b),u1).subs({u1:8.11656443, u2:13.4526774})
    print(sympy.simplify(fu1))
    
    fu2 = sympy.diff((Snf/a)**(1/b),u2).subs({u1:8.11656443, u2:13.4526774})
    
    print(sympy.simplify(fu2))
    

    输出:

    5510.92194972571
    2661.80497262362
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-13
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多