Задача с вычислением ряда на 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;
}