2017-02-11 18 views
2

Я искал документы, но я застрял: SymPy, кажется, принимает переменную «x», даже когда я только объявлял «t» и «y (t)». Я попросил его дать мне ряд для у (т), и это то, что я получаю ...SymPy: серия Тейлора с использованием переменной, отличной от x?

>>> from sympy import * 
>>> var('t') 
t 
>>> y = Function("y") 
>>> s = y(t).series(t, 0, 4) 
>>> pprint(s) 
          ⎛ 2  ⎞│   ⎛ 3  ⎞│   
          2 ⎜ d  ⎟│  3 ⎜ d  ⎟│   
          t ⋅⎜───(y(x))⎟│  t ⋅⎜───(y(x))⎟│   
          ⎜ 2  ⎟│   ⎜ 3  ⎟│   
     ⎛d  ⎞│   ⎝dx  ⎠│x=0  ⎝dx  ⎠│x=0 ⎛ 4⎞ 
y(0) + t⋅⎜──(y(x))⎟│ + ────────────────── + ────────────────── + O⎝t ⎠ 
     ⎝dx  ⎠│x=0   2     6     

Как получить ряд Тейлора с д/дт это вместо д/дх, и у (t) вместо y (x)?

(кстати, пытаясь заменить т на х не работает, потому что х даже не определено, так что вы получите сообщение об ошибке)

EDIT: Для уточнения, это то, что я хочу:

>>> pprint(s) 
          ⎛ 2  ⎞│   ⎛ 3  ⎞│   
          2 ⎜ d  ⎟│  3 ⎜ d  ⎟│   
          t ⋅⎜───(y(t))⎟│  t ⋅⎜───(y(t))⎟│   
          ⎜ 2  ⎟│   ⎜ 3  ⎟│   
     ⎛d  ⎞│   ⎝dt  ⎠│t=0  ⎝dt  ⎠│t=0 ⎛ 4⎞ 
y(0) + t⋅⎜──(y(t))⎟│ + ────────────────── + ────────────────── + O⎝t ⎠ 
     ⎝dt  ⎠│t=0   2     6     

или даже

>>> pprint(s) 
          ⎛ 2  ⎞│   ⎛ 3  ⎞│   
          2 ⎜ d  ⎟│  3 ⎜ d  ⎟│   
          h ⋅⎜───(y(t))⎟│  h ⋅⎜───(y(t))⎟│   
          ⎜ 2  ⎟│   ⎜ 3  ⎟│   
     ⎛d  ⎞│   ⎝dt  ⎠│t=0  ⎝dt  ⎠│t=0 ⎛ 4⎞ 
y(0) + h⋅⎜──(y(t))⎟│ + ────────────────── + ────────────────── + O⎝h ⎠ 
     ⎝dt  ⎠│t=0   2     6     
+0

ВЫГЛЯДИТ нормальный для меня. 'T' и' x' семантически различны, и они действительно * не должны рассматриваться как одна и та же переменная. – user2357112

+0

нет 'x' в любом месте. он волшебным образом появляется на выходе, незаметно. – sh37211

ответ

0

Я предполагаю, что он не хочет т передается как арг

SymPy обычно работает с символьными выражениями, несколько иной точки зрения, чем функция

y = Function("y") 
y.series(t, 0, 4) 
Out[7]: t 

или с небольшим количеством чего-то на самом деле дать терминам серии:

y = sin(t) 

y.series(t, 0, 8) 
Out[10]: t - t**3/6 + t**5/120 - t**7/5040 + O(t**8) 

 Смежные вопросы

  • Нет связанных вопросов^_^