Задача с вычислением ряда на Java

Прошу помочь нубу исправить ошибки. В общем нужно, чтобы программа вычисляла данный ряд

введите сюда описание изображения

Результат сравнить с

введите сюда описание изображения

В общем, после помощи в комментариях и исправлений, "родилось" вот это:

package lab1;

import java.util.Scanner;

public class Main {


public static void main(String[] args){

   System.out.println("Enter x = ");
   Scanner scan = new Scanner(System.in);
   double x = scan.nextDouble();
   double a, s, t, p, eps;
   s=t=x;
   eps=1e-13;
   int i=1;
   p = 2 * i;
   a=1+((x/2)*(Math.sin(x))+((((x*x)/2)-1)*Math.cos(x)));
   System.out.println("Результат формулы = " + a);
   while (Math.abs(t)>eps) {
       t *= (((2*Math.pow(i, 2)) +1) / ((2*i)*((2*i)-1)))*Math.pow(x, p); 
       s += t;
       i++;
   
    System.out.println(s);
    }
    double k = Math.abs(a - s);
    System.out.println("Разница с рядом = " + k);
}
}

Пока оставлю как есть.


Ответы (1 шт):

Автор решения: MBo

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

Для разумного вычисления удобно отдельно модифицировать часть над дробной чертой и отдельно x^(2i)/(2i)!, примерно так:

i = 0;
mx2 = -x*x;
a = 1.0;
b = -1.0; 
while (Math.abs(t)>eps) {
   i++;
   a += 4 * i - 2;
   b *= mx2 / (2*i*(2*i-1)) 
   t = a * b;
   s += t;
}
   
→ Ссылка