mam ekspresji jak toDlaczego mój kod Sympy niepoprawnie oblicza aproksymację serii Taylor pierwszego rzędu?
wpisanego w Sympy tak (ze względu na powtarzalny przykład w tej kwestii)
from sympy import *
expression = Add(Mul(Integer(-1), Float('0.9926375361451395', prec=2), Add(Mul(Float('0.33167082639756074', prec=2), Pow(Symbol('k1'), Float('-0.66666666666666674', prec=2)), Pow(Symbol('n1'), Float('0.66666666666666674', prec=2))), Mul(Float('0.97999999999999998', prec=2), exp(Mul(Integer(-1), Symbol('mu1'))))), Pow(Add(Mul(Float('0.97999999999999998', prec=2), Symbol('k1'), exp(Mul(Integer(-1), Symbol('mu1')))), Mul(Integer(-1), Symbol('k2')), Mul(Pow(Symbol('n1'), Float('0.66666666666666674', prec=2)), Pow(Mul(Symbol('k1'), exp(Mul(Integer(-1), Symbol('mu1')))), Float('0.33333333333333331', prec=2)))), Integer(-1))), Pow(Add(Mul(Float('0.97999999999999998', prec=2), Symbol('k0'), exp(Mul(Integer(-1), Symbol('mu0')))), Mul(Integer(-1), Symbol('k1')), Mul(Pow(Symbol('n0'), Float('0.66666666666666674', prec=2)), Pow(Mul(Symbol('k0'), exp(Mul(Integer(-1), Symbol('mu0')))), Float('0.33333333333333331', prec=2)))), Integer(-1)))
na oko to wyrażenie, pierwszego rzędu Przybliżenie Taylora dla dowolnej zmiennej, np k1
, wokół niektórych niezerową wartość powinna być różna od zera, ale ten kod
x = symbol("x")
expression.series(k1, x0 = x, n = 1)
prostu zwraca 0
. Jest to problem, ponieważ próbuję (ostatecznie) obliczyć przybliżoną serię Taylora z serii, w podobnym stylu, co this answer, a jeśli jedna z ekspansji serii błędnie oceni na zero, wszystko się psuje.
Czy napisałem coś niedobrego, czy też jest to mój podstawowy rachunek tylko TAK, który jest zły, a to faktycznie oznacza zero? Od documentation on series
, jestem dość pewna, że używam go poprawnie.
Wygląda na to, że ten błąd został naprawiony w głównej wersji programu SymPy git master. Tam, 'O (x) .subs (x, x-1) + 1' daje' 1 + O (x - 1, (x, 1)) ', a seria, o której mowa, podaje' O (k₁ - x; k₁ → x) '. – asmeurer