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