#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
#pragma hdrstop
//---------------------------------------------------------------------------
//#pragma argsused
int main(int argc, char* argv[])
{
double a, b, h, S, Y, x, r;
int i, n;
cout << "Vvedite a:";
cin >> a;
cout << "Vvedite b:";
cin >> b;
cout << "Vvedite h:";
cin >> h;
cout << "Vvedite n:";
cin >> n;
for (x = a; x <= b; x += h) //цикл изменения х от а до b с шагом h
{
Y = (pow(x, 2) / 4 + (x / 2) + 1)*exp(x / 2); //вычисление Y(x)
{
r = S = 1;
for (i = 1; i <= n; i++)
{
r *= ((i*i + 1) / ((i - 1)*i))*(pow((x / 2), i)); // ПРОБЛЕМА
S += r; // вычисление S(x)
}
printf("\n x= %8.2lf S(x)= %8.5lf Y(x)= %8.5lf |Y(x)-S(x)|= %8.5lf", x, S, Y, fabs(Y - S)); //вывод результат для каждого шага
i++;
}
_getch();
return 0;
}
}
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции
Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b,
h и n вводятся с клавиатуры.
Так как значение S(x) является рядом разложения функции Y(x), при
правильном решении значения S и Y для заданного аргумента x (для
тестовых значений исходных данных) должны совпадать в целой части и в
первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1.
Формулы на картинке
