Написать код к !
написать функцию вычисления суммы ряда:
· стандартный диапазон значений x =0..9, шаг 0.1. убедиться, что на этом диапазоне элемент суммы ряда стремится к 0, при необходимости скорректировать диапазон;
· вычислить значения суммы ряда и контрольной функции, к которой он сходится, с точностью до 4 знаков после запятой;
· исходя из полученного значения n и формулы ряда объяснить различную скорость сходимости для разных x;
ряд: (x-1)/x+(x-1)^2/2x^2+(x-1)^3/3x^3+…+(x-1)^n/nx^n
функция: ln(x)
мои наброски, которые не сработали:
double sum(double x, double eps, int& n) {
double s, sn; // сумма и текущее слагаемое ряда
int a;
int b;
n = 1;
for (s = 0., sn = (x-1)/x ; abs(sn) > eps; n++) {
b = x * (1+n);
a = pow(x - 1, n);
s += sn;
sn = sn*a/b ;
}
return s;
}
// вычисление степенного ряда для x в диапазоне от 0.1 до 1 с шагом 0.1
int main() {
double x, y;
int nn;
for (x = 0.1; x < = 1.; x += 0.05) {
y = sum(x, 0.0001, nn);
printf("n=%d x=%0.1lf\t sum=%0.4lf\t log=%0.4lf\n", nn, x, y, log(x));
}
}