Построение графика: `S = сумма (1 / x * x для x в диапазоне (1, n))` против `n` - PullRequest
0 голосов
/ 28 июня 2018

Уравнение

Для n = 10,

S=sum(1.0 / (x * x) for x in range(1, 11))

Для n = 100,

S=sum(1.0 / (x * x) for x in range(1, 101))

Для n = 1000,

S=sum(1.0 / (x * x) for x in range(1, 1001))

Есть ли удобный способ построения / выражения n против S для

import numpy as np
n = np.arange(1,1000, step=1)

1 Ответ

0 голосов
/ 28 июня 2018

Вы можете использовать функцию агрегирования для ряда. В случае суммирования ряд функций numpie np.add.accumulate или np.cumsum будет работать:

import numpy as np
n = np.arange(1, 1000)
one_over_n_squared = 1 / n**2  # element-wise calculation of the factors
series = np.add.accumulate(one_over_n_squared)  # accumulate

Таким образом, вам не нужно пересчитывать все факторы для каждой точки, которую вы хотите построить. Это может быть важно, если вы хотите построить или рассчитать больше значений.

Тогда для построения графика вы можете использовать функцию matplotlibs plot :

import matplotlib.pyplot as plt
plt.plot(n, series)

enter image description here

Или, если вы хотите, это (крошечный) любитель битов с метками и логарифмической осью x:

import matplotlib.pyplot as plt
plt.plot(n, series)
plt.xlabel('n')
plt.xscale('log')
plt.ylabel('Series')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...