0

Есть формула формула

ее нужно представить в виде кода python. Я пробовал ее представлять при помощи стандартных средств, но не работает, пишет, что 'float' object is not iterable. Как это можно решить? Мне не обязательно конкретное решение, мне бы ссылку где есть подобные задания на питоне, или книгу, где есть разбор математических методов в pythone. Проблема именно в сигме, я не знаю, как ее преобразовать в код, каким методом воспользоваться.

Kromster
  • 13,809
  • Цикл for, думаю, будет в самый раз – Владимир Мартьянов Apr 01 '18 at 10:58
  • @ВладимирМартьянов: наивный цикл может быстро точность потерять. Вот пример, где на несколько порядков результат уходит при вычислении частичной суммы наивным способом (прибежала куча народа, объявила вопрос слишком простым, а практически все ответы неправильные :) Сравните с результатами из моего ответа – jfs Apr 01 '18 at 13:49
  • уточните вопрос: что вы в результате хотите получить? Вычислить формулу с при неких заданных значениях с какой-либо точностью? – jfs Apr 01 '18 at 14:03
  • Спасибо. Это задача по физике, которую нужно решить через программирование. В конце должен получиться результат, который нужно округлить. Полностью код я не привел, т.к проблема именно в части формулы и ее представления в питоне была. Могу привести полное условие, если интересует – Kirillka_Kirillov Apr 01 '18 at 14:10
  • 1
    В вопросе желательно одной проблемой ограничиться. Я так понял, что у вас проблемы с тривиальным циклом, поэтому возможные проблемы с точностью (иллюстрированные по ссылкам) или подходы на основе sympy пока можно отложить и в других вопросах обсудить, если необходимо¶ Приведите ваш код, относящийся к приведённой формуле (чтобы было ясно какие у вас проблемы с циклом). Обновите заголовок вопроса, чтобы отразить что вы не знаете как Σ в Питоне выразить. Учитывая, что самые самые основы вам неясны, приведите ваши попытки, чтобы знать где у вас пропуски, на что можно опереться в объяснении. – jfs Apr 01 '18 at 18:03

1 Answers1

1

Проблема именно в сигме, я не знаю, как ее преобразовать в код, каким методом воспользоваться.

Используйте generator expression внутри sum

>>> sum(x*2 for x in range(10))
90
>>> sum(1/(x**2) for x in range(1, 100000))
1.6449240667982423

Принцип поняли?

Scarabyte
  • 305