Escrever um programa que, dados os valores de x (float), com 0, e n (int), calcula o valor de S, considerando n termos da seguinte série:
S=x1-x^22+x^36-x^424+x^51-x^62+x^76-x^824+x^91-x^102+cdots

Passo 1

Neste exercício vamos calcular a soma da série
S = x1 - x^22 + x^36 - x^424 + x^51 - x^62 + cdots
usando exatamente n termos. O conteúdo aqui é manipular séries com padrão periódico de denominadores e sinais alternados.

Passo 2

Observando a série, vemos que os denominadores repetem ciclicamente os valores 1,2,6,24, que são 1!,2!,3!,4!, e que o sinal de cada termo alterna conforme o índice i (positivo para i ímpar e negativo para i par). Podemos escrever o termo geral como
ai = (-1)^i-1x^id(i),
onde
d(i) = 1 &se ibmod4=1,2 &se ibmod4=2,6 &se ibmod4=3,24&se ibmod4=0

Passo 3

Para implementar isso em um programa, vamos usar um vetor fixo para os denominadores: denom[0]=1, denom[1]=2, denom[2]=6, denom[3]=24. Também mantemos três variáveis: um acumulador S, o valor corrente de x^i (chamado termX), e o sinal corrente ( sign que vale +1 ou -1 ).

Passo 4

Inicializamos
S=0,
termX = x (que representa x^1),
sign = 1,
e criamos o array
denom[03] = 1,2,6,24

Passo 5

Em seguida, fazemos um laço for i de 1 até n e em cada iteração:
  1. somamos ao acumulador: S mathrel+= sign * termX / denom[(i-1)%4];
  2. atualizamos termX *= x\ para ter x^i+1 na próxima vez;
  3. trocamos o sinal com sign *= -1.

Passo 6

No final do laço, S conterá a soma dos n primeiros termos da série conforme pedido.

Resposta

// Pseudocódigo em estilo C
read(x) // lê x (float), 0 < x < 1
read(n) // lê n (int)
double S = 0.0;
double termX = x; // começa em x^1
double sign = 1.0; // sinal inicial +1
double denom[4] = {1.0, 2.0, 6.0, 24.0};
for (int i = 1; i <= n; i++) {
S += sign * termX / denom[(i-1) % 4];
termX *= x; // prepara x^(i+1)
sign *= -1.0; // alterna sinal
}
print(S); // exibe o valor de S

Exercícios relacionados