Stefan_Lang
Сумма может быть выражена следующим образом
result = Sum{k=1..n} (n+1-i) * k^3
= (n+1) * Sum{k=1..n} k^3 - Sum{k=1..n} k^4
(Извините, я понятия не имею, как использовать символы mathematica в HTML)
Существуют замкнутые решения для двух сумм k^a для любого положительного интегрального числа a. Вы можете найти решение для суммы(k^3) и простой алгоритм для получения решения для суммы(k^4) в
Сумма n, n2 или n3 | блестящая математика и наука Wiki[
^]
Формула для k^3, предложенная прямо в верхней части этого веб-сайта, такова:
Sum{k=1..n} (k^3) = n^2*(n+1)^2 / 4
а сумма для k^4 дана в самом низу как:
Sum{k=1..n} (k^4) = n*(n+1)*(2*n+1)*(3*n^2+3*n-1) / 30
Теперь все, что вам нужно сделать, это вычислить оба, умножить первое на (n+1). и вычтите последнее.
P.S.: Вот небольшая программа, чтобы доказать, что формулы работают так, как задумано:
#include <iostream>
using namespace std;
double sum_of_power3(int n)
{
double dn = (double)n;
return dn*dn*(dn+1)*(dn+1)/4;
}
double sum_of_power4(int n)
{
double dn = (double)n;
return dn*(dn+1)*(2*dn+1)*(3*dn*dn+3*dn-1)/30;
}
int main()
{
double sn3 = 0;
double sn4 = 0;
for (int n = 1; n < 5; ++n)
{
sn3 += n*n*n;
sn4 += n*n*n*n;
cout << "sum of " << n << "^3 " << sn3 << " " << sum_of_power3(n) << endl;
cout << "sum of " << n << "^4 " << sn4 << " " << sum_of_power4(n) << endl;
}
return 0;
}
Выход:
sum of 1^3 1 1
sum of 1^4 1 1
sum of 2^3 9 9
sum of 2^4 17 17
sum of 3^3 36 36
sum of 3^4 98 98
sum of 4^3 100 100
sum of 4^4 354 354