
C/C++
Вычислить сумму бесконечного ряда c точностью e=0.0001
Как реализовать эту задачу на языке c++?


Проверь вычисления и подправь если что


#include "iostream"
#include "cmath"
using namespace std;
int main(){
double s=1,p=1,x,e=1e-4; int i=-1; cout<<"x (|x|<1): "; cin>>x;
while(abs(p)>e)s+=p*=x*x*++++i/(i+1);
cout<<s<<", exact="<<1/sqrt(1-x*x)<< endl;}
#include "cmath"
using namespace std;
int main(){
double s=1,p=1,x,e=1e-4; int i=-1; cout<<"x (|x|<1): "; cin>>x;
while(abs(p)>e)s+=p*=x*x*++++i/(i+1);
cout<<s<<", exact="<<1/sqrt(1-x*x)<< endl;}
Чтобы получить требуемую точность ε=1e-4, можно просто сумму ряда вычислять с некоторым запасом как, например, у меня вычисляется функция S(x) до тех пор, пока очередное слагаемое бесконечного ряда не станет меньше ε по крайней мере в десять раз, хотя, вообще-то, такой подход может оказаться тупиковым при |х| очень близких к единице.
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double x)
{
return 1. / sqrt(1. - x * x);
}
double S(double x)
{
double y = x * x, s = 1., p = s, q = 0.;
while (p > 1e-5)
{
q += 1.;
p *= y * (1. - 0.5 / q);
s += p;
}
return s;
}
int main()
{
double h = 0.1, i, x, Sx, fx;
for (i = -9; i < 10; i++)
{
x = i * h;
Sx = S(x);
fx = f(x);
cout << setprecision(1) << fixed
<< setw(4) << x << setprecision(16)
<< fixed << setw(20) << Sx << setw(20)
<< fx << setprecision(8) << setw(12) <<
Sx - fx << endl;
}
}

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double x)
{
return 1. / sqrt(1. - x * x);
}
double S(double x)
{
double y = x * x, s = 1., p = s, q = 0.;
while (p > 1e-5)
{
q += 1.;
p *= y * (1. - 0.5 / q);
s += p;
}
return s;
}
int main()
{
double h = 0.1, i, x, Sx, fx;
for (i = -9; i < 10; i++)
{
x = i * h;
Sx = S(x);
fx = f(x);
cout << setprecision(1) << fixed
<< setw(4) << x << setprecision(16)
<< fixed << setw(20) << Sx << setw(20)
<< fx << setprecision(8) << setw(12) <<
Sx - fx << endl;
}
}

wps=0.0001;
cin<eps)
{
sum+=mem;
f*=double(i)/double(i+1);
xx*=x;
mem=f*xx;
}
примерно так...
cin<eps)
{
sum+=mem;
f*=double(i)/double(i+1);
xx*=x;
mem=f*xx;
}
примерно так...
Похожие вопросы
- Вычислить сумму ряда c++
- В одномерном массиве, состоящем из n вещественных элементов, вычислить сумму элементов массива
- Дана матрица nxn, вычислить суммы диагональных элементов( главной и побочной ) отдельно, но в одной функции на языке си.
- Как это реализовать в с++? вычислить сумму S =1*3+3*5+5*7 +..+(2n -1)(2n +1) для заданного n
- Вычисление суммы знакопеременного ряда
- Писать код функции S(x) вычисления сумму ряда с заданной точностей
- C++ Вычислить и вывести на экран в виде таблицы
- Вычислить значение функции F(x), разложенной в ряд и сходящейся в указанной области. Написать программу на языке C++
- Необходимо вычислить аппроксимацию данных квадратичной функцией f(x)=at2+bt+c.Вычислить коэффициенты a,b и c
- C++. Бинарный поиск. Объясните работу данной программы. Найдите такое число x, что , с точностью не менее 6 зн.С while