Tôi có một biểu hiện như thế nàyTại sao mã Sympy của tôi tính toán chuỗi lệnh Taylor đầu tiên xấp xỉ không chính xác?
mà được nhập vào Sympy như thế này (vì lợi ích của một ví dụ tái sản xuất trong câu hỏi này)
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)))
eyeballing biểu thức này, thứ tự đầu tiên Taylor xấp xỉ cho bất kỳ biến nào, ví dụ k1
, xung quanh một số giá trị khác không nên có khác không, nhưng mã này
x = symbol("x")
expression.series(k1, x0 = x, n = 1)
chỉ trả 0
. Đây là một vấn đề bởi vì tôi đang cố gắng (cuối cùng) tính toán một chuỗi Taylor xấp xỉ đa biến, trong một tĩnh mạch tương tự như this answer, và nếu một trong những mở rộng chuỗi đánh giá nhầm 0, toàn bộ điều bị phá vỡ.
Tôi đã viết sai điều gì đó, hoặc là tính toán cơ bản của tôi chỉ là xấu và điều này thực sự đánh giá bằng không? Từ số documentation on series
, tôi là khá nhất định rằng tôi đang sử dụng chính xác.
Dường như lỗi này được sửa trong phiên bản chính của git master của SymPy. Ở đó, 'O (x) .subs (x, x-1) + 1' cho' 1 + O (x - 1, (x, 1)) ', và chuỗi được đề cập cho' O (k₁ - x; k₁ → x) '. – asmeurer