Лекция: Double y,x,s;
cin>>x;
y=s=x;//множественное присваивание
for (int i=0; fabs(y)>eps; i++)
{ y*=pow(x,2)/(2*i+2)/(2*i+3);//очередной член ряда
s+=y;
if (i>500)//проверка на зацикливание
{ cout<<"\n Ряд расходится!";
Break;
}
}
cout<<"\n Значение s="<<s;
........... .
Пример 1.Найти значение степенного ряда
Вычисление осуществлять до выполнения условия .
В основе алгоритма лежит рекуррентная формула расчета следующего члена ряда по предыдущему: .
Для решения данной задачи можно использовать циклы, реализуемые операторами while и do (лист. 4.1).
Листинг 4.1. st_ryd.сpp
#include <iostream.h>
#include <math.h>
void main()
{
float x,y,z,eps;
cout<<"Задайте точность вычислений eps=";cin>>eps;
cout<<"Введите переменную x=";cin>>x;
while (fabs(x)>=1) // Цикл проверки правильности ввода
{
cout<<"Введите переменную x в диапазоне |x|<1";
cout<<"\nx=";cin>>x;
}
const int MaxIter=100; //Ограничитель количества итераций
y=z=x; //Множественное присваивание
int i=1; //Задание параметра цикла
do
{
z*=-x*i/(i+1); //Определение члена ряда
y+=z; //Текущая сумма ряда
i++; //Модификация параметра цикла
if(i>MaxIter) //Проверка зацикливания
{cout<<"\nРяд расходится!";
break;
}
}
while (fabs(z)>=eps); //Условие выхода из цикла
cout<<«y=»<<y<<" при x="<<x<<" eps="<<eps;
}