Форум программистов, компьютерный форум CyberForum.ru

Сумма ряда - C++

Восстановить пароль Регистрация
 
Анастасия))р
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 6
28.04.2012, 08:31     Сумма ряда #1
Для заданного натурального k и действительного x подсчитать выражение
Миниатюры
Сумма ряда  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2012, 08:31     Сумма ряда
Посмотрите здесь:

C++ сумма ряда
С++ Сумма ряда. C++
Сумма ряда C++
C++ сумма ряда
Сумма ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
amfisat
 Аватар для amfisat
67 / 67 / 1
Регистрация: 16.06.2009
Сообщений: 235
28.04.2012, 08:48     Сумма ряда #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <cstdio>
#include <cmath>
 
using namespace std;
 
int fact (int n)
{
    return ((n==1)? 1: n*fact(n-1));
}
 
int main()
{
    double sum = 0.0, x;
    int k, n=1;
    printf ("Enter k: "); scanf_s ("%d", &k);
    printf ("Enter x: "); scanf_s ("%lf", &x);
    for (n; n<=k; n++)
    {
        if (n%2 != 0) sum += pow(x,n)/fact(2*n);
        else sum -= pow(x,n)/fact(2*n);
    }
    printf ("Sum = %lf \n", sum);
    return 0;
}
-=ЮрА=-
Заблокирован
Автор FAQ
28.04.2012, 10:14     Сумма ряда #3
Цитата Сообщение от amfisat Посмотреть сообщение
int fact (int n)
{
* * return ((n==1)? 1: n*fact(n-1));
}
- это крайне неверно решать данные задачи используя факториал, к примеру на 50 данная функция 1-е вылетит потому как будет превзойдён предел INT_MAX, 2-вычисляя факториал на каждой итерации, очень сильно нагружаем CPU бесполезной работой, делается всё через итератор см сюда
http://www.cyberforum.ru/faq/thread4...ml#post2452211

Добавлено через 7 минут
Вот каким решение вижу я
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n} = \frac{{(-1)}^{(n - 1)}*{x}^{n}}{(2*n)!}
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n + 1} = \frac{{(-1)}^{((n + 1) - 1)}*{x}^{(n + 1)}}{(2*(n + 1))!} = \frac{{(-1)}^{n}*{x}^{(n + 1)}}{(2*n + 2)!}  = \frac{{(-1)}^{n}*{x}^{(n + 1)}}{(2*n)!*(2*n + 1)*(2*n + 2)}
Итератор
http://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{a}_{n + 1}}{{a}_{n}} = \frac{\frac{{(-1)}^{n}*{x}^{(n + 1)}}{(2*n)!*(2*n + 1)*(2*n + 2)}}{\frac{{(-1)}^{(n - 1)}*{x}^{n}}{(2*n)!}} = (-1)*\frac{x}{(2*n + 1)*(2*n + 2)}
-=ЮрА=-
Заблокирован
Автор FAQ
28.04.2012, 10:29     Сумма ряда #4
Ниже код и проверка алгоритма в MathCAD
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <cmath>
using namespace std;
 
double S(double x, long k)
{
    double an = x/2;
    double sum = 0;
    for(long n = 1; n < k; n = n + 1)
    {
        sum += an;
        an  *= (-1)*x/(1.0*(2*n + 1)*(2*n + 2));
    }
    return sum;
}
 
int main()
{
    double x;
    long   k;
    cout<<"Enter x : ";cin>>x;
    cout<<"Enter k : ";cin>>k;
    cout<<"S(x) = "<<S(x,k)<<endl;
    system("pause");
    return 0;
}
Миниатюры
Сумма ряда  
-=ЮрА=-
Заблокирован
Автор FAQ
28.04.2012, 10:31     Сумма ряда #5
PS:Тут есть блоксхема почти к такому же алгоритму который рассмотрел здесь
Программирование циклов с неизвестным заранее числом повторений
Yandex
Объявления
28.04.2012, 10:31     Сумма ряда
Ответ Создать тему
Опции темы

Текущее время: 08:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru