Sn (x) = (x-1) ^ 2n + 1 / (2n + 1)! (N + 1) - на языке C - PullRequest
0 голосов
/ 16 апреля 2020

enter image description here

Я пытался использовать этот код для решения вопроса на картинке, но я не могу решить его, я был бы рад помочь.

как я могу исправить код, который работает для вопроса на картинке? спасибо.

#include

void main() {
    int n, i;
    double sum, x, last;
    do {
        printf("Enter an positive number: ");
        scanf("%d", & n);
    } while (n<0);
    printf("Please enter x: ");
    scanf("%lf", & x);
    sum = last = x;
    for (i = 1; i<= n; i++) {
        last = last * (-1) * ((x * x) / ((2 * i - 1) * (2 * i)));
        sum = sum + last;
    }
    printf("S = %lf\n", sum);
}

1 Ответ

0 голосов
/ 17 апреля 2020

Как уже упоминалось в комментариях, вы используете неправильный коэффициент. Также доступно закрытое выражение для значения ряда.

Из последнего члена формулы вы можете прочитать общую форму терминов

    a[k] = (x-1)^(2k+1) / ( (2k+1)! * (k+1) ),  k = 0,..., n

Отношение двух таких смежных терминов равно

    a[k]/a[k-1] = (x-1)^2 / ( (2k+1)*2(k+1) )

, поэтому что модифицированный код, вычисляющий вашу сумму, равен

#include<math.h>
#include<stdio.h>

void main() {
    int n, i;
    double sum, x,x1s last;
    do {
        printf("Enter an positive number: ");
        scanf("%d", & n);
    } while (n<0);
    printf("Please enter x: ");
    scanf("%lf", & x);
    sum = last = x-1;
    x1s = last*last;
    for (i = 1; i<= n; i++) {
        last = last * (x1s / ((2*i+1) * 2 * (i+1)));
        sum = sum + last;
    }
    printf("S = %20.15lf,  S_infty = %20.15lf\n", sum, 2*(cosh(x-1)-1)/(x-1));
}
...