繁体   English   中英

使用Sympy的导数错误

[英]Error in Derivative using Sympy

我在使用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)

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

在此处输入图片说明

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

当我尝试不带日志的功能时,答案只是简单的数字,就像我尝试带日志的功能时那样

使用sympy simplify函数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM