Значения а, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x) при правильном решении значения S и Y для заданного аргумента х (для тестовых значений исходных данных) должны совпадать в целой част и в первых двух-четырех позициях после десятичной точки. Работу программы проверить для а = 0,1; b = 1,0; h = 0,1; значение параметра n = 120.
вот как это пытался сделать я:
#include "stdio.h"
#include <iostream>
#include "math.h"
#include <iomanip>
using namespace std;
double S, Y, a, b, h, k, x, r, n;
double sum(double a, double b, double h);
double Yx(double a, double b, double h);
double absDifference(double a, double b, double h);
int main()
{
cout « "Enter start point - a = ";
cin » a;
cout « "Enter final point - b = ";
cin » b;
cout « "Enter step size - h = ";
cin » h;
cout « "Enter number of evaquations - n = ";
cin » n;
cout « setw(20) « left « " S(x)" « setw(20) « " Y(x)" « setw(20) « "
|Y-X|" « endl;
for (double x = a; x < b; x += h)
{
/*
sum(a, b, h);
Yx(a, b, h);
absDifference(a, b, h);
*/
k = 1;
S = 0;
r = -x;
r *= -(((x * x)) / ((2 * k - 1) * (2 * k + 1)));
S = r;
for (k = 2; k <= n; k++)
{
r *= -(((x * x) * (2 * (k - 1) - 1) * (2 * (k - 1) + 1)) / ((2 * k -
1) * (2 * k + 1)));
S += r;
}
Y = ((1 + (x * x)) / 2) * atan(x) - (x / 2);
double absDifference = abs(Y - S);
cout « setw(20) « S « setw(20) « Y « setw(20) « absDifference « endl;
}
system("pause");
return 0;
}
double sum(double a, double b, double h)
{
k = 1;
S = 0;
r = -x;
r *= -(((x * x)) / ((2 * k - 1) * (2 * k + 1)));
S = r;
for (k = 2; k <= n; k++)
{
r *= -(((x * x) * (2 * (k - 1) - 1) * (2 * (k - 1) + 1)) / ((2 * k -
1) * (2 * k + 1)));
S += r;
}
return 1;
}
double Yx(double a, double b, double h)
{
Y = ((1 + (x * x)) / 2) * atan(x) - (x / 2);
return 1;
}
double absDifference(double a, double b, double h)
{
double absDifference = abs(Y - S);
return 1;
}