Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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;
}
Дата публикования: 2014-11-02; Прочитано: 273 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!