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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
#1

Вычисление произведения ряда - C++

01.02.2014, 17:09. Просмотров 667. Ответов 18
Метки нет (Все метки)

Подскажите пожалуйста способ для подсчёта произведения ряда http://www.cyberforum.ru/cgi-bin/latex.cgi?S = \prod_{k = 0}^{\propto }\left(1 - \frac{4x^2}{\left(2k + 1 \right)^2 \pi ^2} \right).
Следующий способ вычисления препод забраковал:
C++
1
2
3
4
5
do{
    proizv *= (1 - ((4 * powf(x, 2) / (powf(2 * k + 1, 2) * powf(Pi, 2) ))));
    k++;
  }
  while(fabs(proizv) < eps);
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2014, 17:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление произведения ряда (C++):

Вычисление произведения ряда (проверьте код) - C++
Помогите с решением для заданного натурального K и действительного X подсчитать выражение P=\prod_{n=1}^{k}\left(1+\frac{\left(-1...

Перевести с Pascal на C++. Вычисление суммы (произведения) конечного ряда. - C++
Программа вычисления суммы (произведения) конечного ряда. При разработке программы предусмотреть пропуск слагаемых (множителей), равных...

Вычисление суммы (произведения) конечного ряда + блок-схема - C++
Составить схему алгоритма и написать программу вычисления суммы (произведения) конечного ряда. При разработке программы предусмот- реть...

Вычислить значение выражения по формуле ( вычисление произведения и суммы ряда) - C++
Помогите решить.

Вычислить значение выражения по формуле ( вычисление произведения и суммы ряда) - C++
Помогите решить эти две задачи, отдельные две задачи, не знаю как

Вычисление произведения - C++
Доброго время суток. Написать программу вычисления произведения: \prod_{1}^{\propto}\cos(\frac{\pi }{{2}^{(n+1)}}) = \frac{2}{\pi } ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 17:27 #2
Кротяка, надо проверять k-ый член произведения, что он отличается не больше чем на eps от 1.
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 17:44  [ТС] #3
Tulosba, можно подробнее?) что то не понял
0
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
01.02.2014, 17:52 #4
Или так fabs((4 * powf(x, 2) / (powf(2 * k + 1, 2) * powf(Pi, 2) )))<eps, но это при подключенным #include<math.h>
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 17:56 #5
Кротяка, имеем бесконечный ряд, понятно, что надо когда-то остановиться в вычислении этого ряда. А так как в данном случае мы имеем произведение, какое либо существенное изменение его перестанет проявляться когда k-ый член произведение приблизится к единице с учетом заданной точности (eps).
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:13  [ТС] #6
Не. Всё не то. Ещё раз объясню задание, теперь уже поподробнее.
«Вычислить значение некоторой функции в заданном диапазоне изменения аргумента х с заданной точностью»
0
Миниатюры
Вычисление произведения ряда  
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.02.2014, 18:14 #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for(double x=0;x<=M_PI/2.;x+=M_PI/20.)
{
   double s=1.;
   int k=0;
   double eps=1e-10;
   do
   {
      double a=2.*x/(2*k+1)/M_PI;
      a*=a; //квадрат
      s*=(1.-a);
      k++;
   }while(fabs(a)>eps);
   cout<<x<<" "<<s<<" "<<cos(x)<<endl;
}
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:17  [ТС] #8
вот как я пытаюсь это сделать:
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
void Function::formula(float X)
{
    x = X;
    k = 0;
    func = cos(x);
    proizv = 1;
        
    do{
        p *= (1 - ((4 * powf(x, 2) / (powf(2 * k + 1, 2) * powf(Pi, 2) ))));
        proizv *= p;
        k++;
    }
    while (fabs(proizv) < eps);
}
int main()
{
           float i;
    float shag;
    Function a;
 
           shag = Pi / 20;
    for (i = 0; i <= Pi / 2 + shag / 2; i += shag)
    {
        a.formula(i);
    }
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 18:20 #9
Цитата Сообщение от Кротяка Посмотреть сообщение
Всё не то.
Это потому что вам думать лень
С учетом последней постановки задачи получается нужно получить таблицу зависимости произведения от аргумента (x). Т.е. произвести вычисления 10 раз. Будет как минимум два вложенных цикла.

Я думаю условие выхода из цикла должно быть такое:
C++
1
while (fabs(proizv - proizv/p) > eps);
Т.е. тут мы проверяем, что произведение изменилось на очередной итерации больше чем на eps, иначе - выходим.
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:28  [ТС] #10
Цитата Сообщение от Tulosba Посмотреть сообщение
Это потому что вам думать лень
С учетом последней постановки задачи получается нужно получить таблицу зависимости произведения от аргумента (x). Т.е. произвести вычисления 10 раз. Будет как минимум два вложенных цикла.
не думать лень, а не понятно, как делать, я поэтому и обратился сюда
именно таблицу я и делаю. Естественно, значения получаются неверные
0
Миниатюры
Вычисление произведения ряда  
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:28  [ТС] #11
zss, вы сами это компилировали?
0
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:34  [ТС] #12
Tulosba, результат
0
Миниатюры
Вычисление произведения ряда  
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
01.02.2014, 18:35  [ТС] #13
mustimur, это почти то же самое, что и было
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
01.02.2014, 18:35 #14
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Вот работающий вариант
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 <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std; 
 
int main()
{
double eps=1e-6;
for(double x=0;x<=M_PI/2.;x+=M_PI/20.)
{
   double s=1.;
   int k=0;
   double a;
   do
   {
      a=2.*x/(2*k+1)/M_PI;
      a*=a; //квадрат
      s*=(1.-a);
      k++;
   }while(fabs(a)>eps);
   cout<<x<<" "<<s<<" "<<cos(x)<<endl;
}
return 0;
}
0
Tulosba
:)
Эксперт С++
4396 / 3239 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.02.2014, 18:51 #15
Кротяка, а к чему относится y=cos(x) ?

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
27
28
29
30
31
#define _USE_MATH_DEFINES
#include <iostream>
#include <cmath>
#include <iomanip>
 
double formula(double x)
{
    double res = 1;
    int k = 0;
    double term = 1;
    const double eps = 1e-6;
    do
    {
        term = (1 - ((4 * std::pow(x, 2) / (pow((2*k + 1)* M_PI, 2) ))));
        res *= term;
        k++;
    }
    while (std::abs(res - res/term) > eps);
 
    return res;
}
 
int main()
{
    for (double i = 0; i <= M_PI/2; i += M_PI/20)
    {
        std::cout << std::setw(10) << i << std::setw(10) << formula(i) << std::endl;
    }
 
    std::system( "pause" );
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2014, 18:51
Привет! Вот еще темы с ответами:

Вычисление произведения - C++
Здравствуйте. Мне проблема в том, что я не знаю как написать код по данным примерам. Не могли бы вы помочь, и скинуть литературу. ...

Вычисление произведения сумм - C++
t=\prod_{a=2}^{5}\sum_{b=1}^{5}{b}^{3}a Можете подсказать, правильно ли я код написал? #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Вычисление конечного произведения - C++
Для заданного натурального k и действительного x подсчитать следующее выражение: P=\prod_{n=2}^{k}\left( 1+\frac{(-1)^n...

Вычисление произведения сумм - C++
t=\prod_{a=1}^{5}\sum_{b=1}^{10}cos\,ab Помогите пожалуйста я не очень знаю с++ буду благодарен


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.02.2014, 18:51
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru