使用Sympy求导时出错

2024-09-21 02:48:47 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

enter image description here

我的代码有问题吗??或者我需要自己计算这个数字吗??在

当我尝试一个没有log的函数时,答案是简单的数字,但是当我尝试使用log的函数时,结果是这样的


Tags: 答案importlogsadiffsmsympysnf
1条回答
网友
1楼 · 发布于 2024-09-21 02:48:47

使用simplify中的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))

输出:

^{pr2}$

相关问题 更多 >

    热门问题