Задача
Численно убедиться в справедливости равенства, для чего для заданного значения аргумента [latex]x[/latex] вычислить левую его часть и разложение, стоящее в правой части, с заданной погрешностью [latex]\varepsilon[/latex] . Испытать разложение на сходимость при разных значениях аргумента, оценить скорость сходимости, для чего вывести число итераций [latex]n[/latex] (слагаемых или сомножителей), необходимых для достижения заданной точности.
[latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|=\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex],
[latex]|x|<1[/latex].
| x | E | Левая часть (left). | Правая часть (right). | Разность (right-left). | n | Комментарий. | 
| 0.6 | 0.000001 | 0.7624616521 | 0.7604912379 | 0.0019704142 | 3 | Пройден. | 
| 0.75 | 0.000035 | 0.6446519276 | 0.6290694254 | 0.0155825022 | 3 | Пройден | 
| 0.4 | 0.00002 | 0.9195412848 | 0.9143769743 | 0.0051643104 | 5 | Пройден | 
| 4 | 0.0001 | – | – | – | – | Некорректно задан аргумент x (|x|<1)Не пройден. | 
| 0.4 | 0 | 0.9195412848 | 0.9195412848 | 0.9195412848 | бесконечность | Погрешность равна 0, тогда правая часть стремится к левой.Пройден. | 
Необходимо доказать равенство левой и правой части при заданных [latex]x[/latex] и [latex]\varepsilon[/latex].
Мы высчитываем левую часть [latex]\frac{\pi ^{2}}{8}-\frac{\pi }{4}\cdot |x|[/latex], с заданным аргументом [latex]x[/latex]. Затем в цикле do высчитываем значение правой части [latex]\frac{cosx}{1!}+\frac{cos3x}{3^{2}}+\frac{cos5x}{5^{2}}+\cdots+\frac{cos((2n+1)\cdot x) }{(2\cdot n+1)^{2}}+\cdots[/latex], до тех пор, пока разность правой и левой части не превысит заданную погрешность [latex]\varepsilon[/latex]. После этого программа выводит значение левой и правой части, их разницу и количество итераций для заданной погрешности.
Ниже представлена сама программа (C++).
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | #include <iostream> #include <math.h> using namespace std; int main()  { 	int n=0; 	double x, E, left, right=0.0, differ; 				//начальные переменные. 		scanf("%lf %lf", &x, &E);						//ввод аргумента и погрешности. 	if(fabs(x)>1)										//Модуль аргумента не должен превышать единицу. 	{ 		printf("Некорректно задан аргумент x (|x|<1)"); 	} 	else 	{ 		left=(pow(M_PI,2)/8)-((M_PI/4)*fabs(x));		//вычисление левой части. 		if (E!=0) 		{ 			do 			{ 				right+=cos((2*n+1)*x)/((4*n*n)+4*n+1);	//вычисление правой части. 				n++; 				differ=right-fabs(left);				//разность левой и правой части. 			} 			while (differ>E);							//условие, при котором цикл останавливается. 			printf("Левая часть равна = %.10lf \nПравая часть равна = %.10lf \n",left,right); 			printf("После n=%d правая часть исследуемого выражения отличается от левой части более, чем на %.10lf,", n, E);  			printf("а именно на %.10lf \n",fabs(differ)); 		}	 		else 		{ 			printf("Погрешность равна 0, тогда правая часть стремится к левой, и равняется %.10lf, тогда n стремится в бесконечность",left); 		} 	} 	return 0; } | 
Код на Java:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import java.util.*; import java.lang.*; import java.io.*; class Brovko { 	public static void main (String[] args) throws java.lang.Exception 	{ 	int n=0; 	double x, E, left, right=0.0, differ; 				//начальные переменные. 		Scanner in = new Scanner(System.in); 			//ввод аргумента и погрешности. 		x=in.nextDouble(); 		E=in.nextDouble(); 	if(Math.abs(x)>1)										//Модуль аргумента не должен превышать единицу. 	{ 		System.out.printf("Некорректно задан аргумент x (|x|<1)"); 	} 	else 	{ 		left=(Math.pow(Math.PI,2)/8)-((Math.PI/4)*Math.abs(x));		//вычисление левой части. 		if (E!=0) 		{ 			do 			{ 				right+=Math.cos((2*n+1)*x)/((4*n*n)+4*n+1);	//вычисление правой части. 				n++; 				differ=right-Math.abs(left);				//разность левой и правой части. 			} 			while (differ>E);							//условие, при котором цикл останавливается. 			System.out.printf("Левая часть равна = %.10f \nПравая часть равна = %.10f \n",left,right); 			System.out.printf("После n=%d правая часть исследуемого выражения отличается от левой части более, чем на %.10f,", n, E);  			System.out.printf("а именно на %.10f \n",Math.abs(differ)); 		}	 		else 		{ 			System.out.printf("Погрешность равна 0, тогда правая часть стремится к левой, и равняется %.10f, тогда n стремится в бесконечность",left); 		} 	} } } | 
Так же вы можете воспользоваться ссылкой (C++)/ссылкой (Java), для ознакомления с программой.
