Ошибка в производной с использованием 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)

Когда я запускаю его, у меня есть ответ, но ответ выглядит так?

введите здесь описание изображения

Что-то не так с моим кодом?? Или мне нужно рассчитать это число самостоятельно??

Когда я пробую функцию без лога, ответ - это просто число, просто когда я пробую функцию с логом, получается вот так


person KaraiKare    schedule 04.01.2017    source источник


Ответы (1)


Используйте функцию simplify из 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(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
person eyllanesc    schedule 04.01.2017