我建立了三角函数 y=sin(x) 的多项式。为它选择度数 n=5。因此 m=2n=10。在这个阶段,我需要得到一个值的中间结果(表格),如下图(根据公式条件排除第0和第10个值):
这里 k 等于 n(即 k=n=5)。
现在我已经手动实现了对 k 的搜索,独立设置这些系数(1、2 等等,直到 5)。现在我正在尝试(到目前为止没有成功)获得以下算法:
- 计算 k=1 的产品列∏;
- 列出 list_product_of_elements;
- 计算这些值的总和;
- 列出 sum_of_list_product_of_elements;
- 输出列表到控制台;
- 为 Pandas 框架专栏投稿;
- 清除列表;
- 对于 k=2,转到下一列 ∏ 并重复操作;
- 输出一个填充的 Pandas 框架。
由于列计算不正确,Pandas 对象的元素数量也不匹配。我的周期有什么问题?
编码:
# Рассчитаем коэффициенты b_j:
# получаем столбцы перемноженных значений y_j на sin(k*x_j) для таблицы выше
# сначала объявим списки, переменные, фрейм Pandas
df_table = pd.DataFrame(columns=['j','y_j', 'П, k=1', 'П, k=2', 'П, k=3', 'П, k=4', 'П, k=5'])
n=5
m=10
list_product_of_elements = []
sum_of_list_product_of_elements = []
sin_list = []
# следом получим столбец y_j:
for elem in x_list:
sin = round(math.sin(1*elem), 4)
# print(sin)
sin_list.append(sin)
summa = sum(sin_list)
# теперь займемся формированием таблицы:
# идем по индексам коэффициентов k (т.е. k=1, k=2 и т.д.):
for n_elems in range(1, n+1):
# идем по элементам графы sin(x) (то есть y_j):
for y_j in sin_list[1:10]:
# идем по x_j, рассчитанным по формуле для получения коэффициента b_j
for x_j in grid_x_j_for_b_k:
product_of_elements = round( (y_j*np.sin(n_elems*x_j)), 4)
# заносим в список рассчитанные элементы для данного k
list_product_of_elements.append(product_of_elements)
# получаем сумму элементов по итерации
sum_of_list_product_of_elements.append(sum(list_product_of_elements))
# заполняем колонки фрейма
df_table[f'П, k={n_elems}'] = list_product_of_elements
# вывод колонки в консоль
print(f'Произведения для k={n_elems}: ', list_product_of_elements)
# вывод суммы колонки в консоль
print(f'Сумма для k={n_elems}: ', sum_of_list_product_of_elements)
# очистка списка элементов
list_product_of_elements.clear()
# очистка списка суммы
sum_of_list_product_of_elements.clear()
df_table['j'] = sin_list[1:10]


看来我重新配置了循环并得到了更正确的输出:
脚本是这样完成的:
我还想出了 Pandas 框架:上面也给出了它的代码。