Условие задачи такое:Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) с точностью eps=0.001. x - меняется от a = -0.5 до b = 0.5, шаг h = (b-a)/10. В прикреплённом файле находятся функции S(x) и Y(x). Вывести число итераций, необходимое для достижения заданной точности. Вычисление S(x) и Y(x) оформить в виде функций.
#include <windows.h>
#include <math.h>
#include <iostream.h>
#include <iomanip.h>
#include <conio.h>
// Прототип функции S(x)
void S(void);
// Прототип функции Y(x)
double Y(double x);
int main(void)
{
S();
getch();
return 0;
}
// Функции Y(x)
double Y(double x)
{
double y;
y = (3.14*pow(x,3))/2;
return y;
}
// Функции S(x)
void S(void)
{
double a = -0.5, b = 0.5, s = 0.0, p, eps = 0.001, x, h;
int k = 1;
// Фиксируем начальное значение
x = a;
// Шаг
h = (b-a)/10;
do
{
do
{
p = (pow(-1, k+1)/k+(pow(-1, k)*6)/(pow(k, 3)*3.14*3.14))*sin(k*3.14*x);
s += p;
k++;
}
while (s <= eps);
cout << setw(15) << x << setw(15) << Y(x) << setw(15) << s;
x += h;
}
while (x <= b);
cout << setw(15) << k;
}
Проблема в том что программа запускается и встаёт, как я понимаю условие s <= eps выполняется всегда и она не может выйти из этого цикла и из-за этого ни какие результаты не выводятся, правда я не понимаю почему оно всегда выполняется.
Поясните пожалуйста или вообще ошибка может в другом.