Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2023 01:05:02

jigan-laym@mail.ru
Зарегистрирован: 2023-01-30
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

Из текстового файла по строкам считывается сумма (полученная в Maple)

-4.1054687503*sin(s)
+0.8437499978*sin(2.*s)
-11.07064825*sin(2.*s)*bb[1][2]*t^2
-16.60597234*sin(2.*s)*bb[1][2]*cos(1.154700539*t)
+0.1994711401*sin(2.*s)*cc[2][2]*t^2
+1.196826839*sin(2.*s)*t^4*bb[1][2]
+8.571640841*sin(2.*s)*t^4*bb[2][2]^3
+1.166042757*sin(2.*s)*bb[2][2]*sin(1.154700539*t)
-10.74295864*sin(2.*s)*t^3*bb[2][2]^2
+0.4774648284*sin(2.*s)*t^5*bb[1][2]^2
-115.7171511*sin(2.*s)*bb[2][2]^3*cos(1.154700539*t)
+6.445775169*sin(2.*s)*bb[1][2]^2*cos(1.154700539*t)
-0.4774648284*sin(2.*s)*t^4*bb[1][2]^2
- 0.7161972435*sin(2.*s)*t^4*bb[2][2]^2
+ 0.2992067100*sin(2.*s)*cc[2][2]*cos(1.154700539*t)
Как заставить питон воспринимать
 bb[1][2] 
как единую символьную переменную.
Другими словами как побороть ошибку “ TypeError: ‘Symbol’ object is not subscriptable ”.

В дальнейшем эту сумму надо будет возвести в четвертую степень и проинтегрировать.

Заранее премного благодарен.

Отредактировано jigan-laym@mail.ru (Янв. 30, 2023 12:08:36)

Офлайн

#2 Янв. 30, 2023 02:28:32

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9900
Репутация: +  855  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

jigan-laym@mail.ru
Другими словами как побороть ошибку
Для передачи кода или символов в точности используй тег code.
[code]
Тут пиши текст
[/code]
Вот так типа ☺



Отредактировано py.user.next (Янв. 30, 2023 02:29:37)

Офлайн

#3 Янв. 30, 2023 11:32:39

Genabox
Зарегистрирован: 2022-12-24
Сообщения: 198
Репутация: +  1  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

а почему в вас после последнего плюсика и предпоследнего минусика по пробелу стоит
и єто все в ковычках в одином коде?

The convert command leaves this list unchanged as it can already be used with EvalFunction.
convert(,python)
если мапл это язык то нужнона этьом языке правильно формировать Ваш текстовый файл а потом пихать его в питон
EvalFunction
на мапл

Офлайн

#4 Янв. 30, 2023 11:59:29

jigan-laym@mail.ru
Зарегистрирован: 2023-01-30
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

py.user.next
Спасибо!
Не обратил внимание на то, что существенная часть а именно

 bb[1][2]  
потерялись.
Именно на квадратные скобки питон и ругается.

Офлайн

#5 Янв. 30, 2023 12:05:32

jigan-laym@mail.ru
Зарегистрирован: 2023-01-30
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

Genabox
В изначальном посте в силу не знания закралась ошибка.
Не обратил внимание на то, что существенная часть а именно

 bb[1][2]  
потерялись.
Именно на квадратные скобки питон и ругается.
В мапле все нормально работает только медленно, поэтому хочу на питоне попробовать.
Квадратные скобки возникают в силу того, что используются двойные ряды.
Откуда лишние пробелы не могу сказать.
Команда питона eval нормально их (пробелы, плюсы, минусы) интерпретирует, но когда дело доходит до квадратных скобой ай-ай-ай, нельзя.
Можно ли заставить питон воспринимать
 bb[1][2]  
как единое целое.

“и єто все в ковычках в одином коде? ”
Это все построчно читается из файла.

Отредактировано jigan-laym@mail.ru (Янв. 30, 2023 12:07:58)

Офлайн

#6 Янв. 30, 2023 21:43:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9900
Репутация: +  855  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

Заменил скобки, проинтегрировал по dt, вернул скобки.

  
>>> import sympy
>>> 
>>> text = """
... -4.1054687503*sin(s)
... +0.8437499978*sin(2.*s)
... -11.07064825*sin(2.*s)*bb[1][2]*t^2
... -16.60597234*sin(2.*s)*bb[1][2]*cos(1.154700539*t)
... +0.1994711401*sin(2.*s)*cc[2][2]*t^2
... +1.196826839*sin(2.*s)*t^4*bb[1][2]
... +8.571640841*sin(2.*s)*t^4*bb[2][2]^3
... +1.166042757*sin(2.*s)*bb[2][2]*sin(1.154700539*t)
... -10.74295864*sin(2.*s)*t^3*bb[2][2]^2
... +0.4774648284*sin(2.*s)*t^5*bb[1][2]^2
... -115.7171511*sin(2.*s)*bb[2][2]^3*cos(1.154700539*t)
... +6.445775169*sin(2.*s)*bb[1][2]^2*cos(1.154700539*t)
... -0.4774648284*sin(2.*s)*t^4*bb[1][2]^2
... - 0.7161972435*sin(2.*s)*t^4*bb[2][2]^2
... + 0.2992067100*sin(2.*s)*cc[2][2]*cos(1.154700539*t)
... """
>>> 
>>> textnew = text.replace('[', 'lb').replace(']', 'rb')
>>> 
>>> expr = sympy.sympify(textnew)
>>> 
>>> t = sympy.Symbol('t')
>>> 
>>> exprnew = sympy.integrate(expr, t)
>>> 
>>> out = str(exprnew).replace('lb', '[').replace('rb', ']')
>>> out
'0.0795774714*bb[1][2]**2*t**6*sin(2.0*s) - 0.09549296568*bb[1][2]**2*t**5*sin(2.0*s) + 5.58220504043603*bb[1][2]**2*sin(2.0*s)*sin(1.154700539*t) + 0.2393653678*bb[1][2]*t**5*sin(2.0*s) - 3.69021608333333*bb[1][2]*t**3*sin(2.0*s) - 14.3811938932506*bb[1][2]*sin(2.0*s)*sin(1.154700539*t) + 1.7143281682*bb[2][2]**3*t**5*sin(2.0*s) - 100.213992452289*bb[2][2]**3*sin(2.0*s)*sin(1.154700539*t) - 0.1432394487*bb[2][2]**2*t**5*sin(2.0*s) - 2.68573966*bb[2][2]**2*t**4*sin(2.0*s) - 1.00982264891798*bb[2][2]*sin(2.0*s)*cos(1.154700539*t) + 0.0664903800333333*cc[2][2]*t**3*sin(2.0*s) + 0.259120611703464*cc[2][2]*sin(2.0*s)*sin(1.154700539*t) - 4.1054687503*t*sin(s) + 0.8437499978*t*sin(2.0*s)'
>>>

Это на другом примере, более ясном
  >>> import sympy
>>> 
>>> text = """
... a[0] + b[1]*t
... """
>>> 
>>> textnew = text.replace('[', 'lb').replace(']', 'rb')
>>> 
>>> expr = sympy.sympify(textnew)
>>> 
>>> t = sympy.Symbol('t')
>>> 
>>> exprnew = sympy.integrate(expr, t)
>>> 
>>> out = str(exprnew).replace('lb', '[').replace('rb', ']')
>>> out
'a[0]*t + b[1]*t**2/2'
>>>



Отредактировано py.user.next (Янв. 30, 2023 21:52:12)

Офлайн

#7 Янв. 30, 2023 22:06:46

jigan-laym@mail.ru
Зарегистрирован: 2023-01-30
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

SymPy TypeError: 'Symbol' object is not subscriptable

py.user.next
Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version