Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Дано натуральное n и действительное x. Вычислить. Если можно по подробнее пожалуйста

Иван Самойлов Ученик (80), на голосовании 1 неделю назад
Голосование за лучший ответ
Jurijus Zaksas Искусственный Интеллект (445688) 1 месяц назад
Нужно вычислить сумму этих обратных факториалов и добавить к ней n√|x|
Чего именно ты тут не умеешь, "по подробнее пожалуйста".

 double Calc(double x, int n) 
{
double s = 0, f = 1;
for (int i = 2; i <= n + 1; i++)
{
s += f;
f /= i;
}
return s + n * sqrt(abs(x));
}
Krab Bark Искусственный Интеллект (294599) 1 месяц назад
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n; double x,s=0,t=1;
cout<<"n x: "; cin>>n>>x;
for(int i=1;i<=n;i++)s+=1/(t*=i);
cout<<s+n*sqrt(abs(x))<<endl;}
Ксения РайтГений (97161) 1 месяц назад
Тут лучше переключатель сделать:
 #include <cmath> 
#include <iostream>

int main()
{
int i, n;
std::cout.precision(17);
double S = M_E - 1., s, p, x;
while (true)
{
std::cout << "x n: ";
std::cin >> x >> n;
s = n * sqrt(fabs(x));
if (n > 18) s += S;
else
{
p = 1.;
for (i = 1; i <= n; ++i)
s += 1. / (p *= i);
}
std::cout << s << std::endl;
}
}
Потому что ограниченный ряд
⅀(k=1;n)1/k! довольно быстро
сходится к числу е-1 и если значение
вычисляемого выражения s
предполагается типа double, то
при n>18 вычислять его циклом
бессмысленно, а если s взять типа
float, то даже и предельные 18
слагаемых ряда - непозволительная
роскошь! Представьте себе, что n -
тысяча, миллион или миллиард. Что - так и будете циклом считать?
Ксения РайтГений (97161) 1 месяц назад
И даже как у меня написано - и то
глупо, потому что ещё лучше так:
 #include <cmath> 
#include <iostream>

int main()
{
std::cout.precision(16);
double e = 1., i, n, S = M_E - e, s, p, x;
while (true)
{
std::cout << "x n: ";
std::cin >> x >> n;
s = n * sqrt(fabs(x));
if (n > 18) s += S;
else
{
p = e;
for (i = e; i <= n; i += e)
s += e / (p *= i);
}
std::cout << "⅀(k=1;n)(1/k!+√|x|) = "
<< s << std::endl;
}
}
Krab Bark Искусственный Интеллект (294599) Ксения Райт, это хорошая идея при больших n использовать формулу для предела ряда, но "Рассматривать вещи так - значило бы рассматривать их слишком подробно" (Шекспир, "Гамлет"). Так же, как мы обычно обходимся в решении задач без длинной арифметики, в этой задаче вполне правомерно ограничиться небольшими значениями n, не тысячами и тем паче не миллиардами ;), раз на это нет особых указаний :)
Похожие вопросы