30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
1

Определить количество членов в произведении в зависимости от погрешности

08.04.2012, 20:31. Показов 674. Ответов 9
Метки нет (Все метки)

Здравствуйте! У меня такой вопрос. Есть задача:
Определить количество членов в произведении в зависимости от погрешности

Необходимо найти кол-во членов произведения, чтобы равенство выполнялось с погрешностью до 6 знаков.
Вот мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
 
 
int main()
{
    double const_t=int(sqrt(double(2))/2*1000000);
    float P=1;
    int k=1;
    cout<<"const_t = "<<const_t;
    while (int(P*1000000)!=const_t)
    {
        P=P*(1+pow(float(-1),k)/(2*k+1));
        cout<<"\n"<<P;
        k++;
    }
    cout<<"\n"<<int(P*1000000);
    cout<<"\nKol-vo: "<<k;
    _getch();
    return 0;
}
Он работает, но в результате выдает, что кол-во членов будет равно 188 307.
Приходится долго ждать. Неужели надо брать именно столько членов или все-таки где-то есть ошибка?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2012, 20:31
Ответы с готовыми решениями:

Определить количество последних идущих подряд нулей в произведении чисел, записанном в той же системе счисления
Товарищи бывалые, нужна помощь в составлении программы. Суть такая : Дана последовательность из не...

Создание алгоритма и блок-схемы к нему. Какое число членов натурального ряда в произведении дадут 1000000
Какое число членов натурального ряда в произведении дадут 1000000? Заранее спасибо за помощь!

Построить график зависимости относительной погрешности в процентах от N
Ребята. Делал лабораторку по матлабу и уперся. С меня требуют: Построить график зависимости...

Составить программу вычисления всех членов ряда, не меньших погрешности
По заданной формуле члена ряда составить программу вычисления всех членов ряда, не меньших...

9
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 21:30  [ТС] 2
В чем проблема не подскажете?

Добавлено через 38 минут
Извините за настойчивость, но надо срочно!
0
Модератор
Эксперт С++
11955 / 9675 / 5860
Регистрация: 18.12.2011
Сообщений: 25,939
08.04.2012, 21:45 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <conio.h>
#include <math.h>
#include <iostream>
using namespace std;
  int main()
{
    double P=1,Pold=0,Ak=-1.;
    int k=1;
     while (fabs(P-Pold)>1e-6)
    {
        Pold=P;
        P*=(1+Ak/(2.0*k+1.0));
        Ak=-Ak;
        k++;
    }
    cout<<"Proizv="<<P<<endl;
    cout<<"must be="<<1./sqrt(2.0)<<endl;
    cout<<"\nKol-vo: "<<k;
    _getch();
    return 0;
}
1
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 22:22  [ТС] 4
zss, не могли бы Вы объяснить, как она работает в вашем случае? А то не пойму никак некоторые моменты. Например, что значит "1./sqrt(2.0)", у меня ведь (корень из 2)/2. И условие в цикле несовсем понятно. А само число (результат) меньше моего на ~30 000

Добавлено через 10 минут
Я так понял, что мы выполняем действия в цикле до тех пор, пока разница между соседними множителями не будет меньше 0,000001?
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 22:26 5
Цитата Сообщение от BoBaH26 Посмотреть сообщение
zss, не могли бы Вы объяснить, как она работает в вашем случае? А то не пойму никак некоторые моменты. Например, что значит "1./sqrt(2.0)", у меня ведь (корень из 2)/2. И условие в цикле несовсем понятно. А само число (результат) меньше моего на ~30 000

Добавлено через 10 минут
Я так понял, что мы выполняем действия в цикле до тех пор, пока разница между соседними множителями не будет меньше 0,000001?
1) (корень из 2)/2 равносильно 1/(корень из двух).
2) Между предыдущим значением и текущим.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 22:46  [ТС] 6
Цитата Сообщение от Nekto Посмотреть сообщение
1) (корень из 2)/2 равносильно 1/(корень из двух).
2) Между предыдущим значением и текущим.
Я не совсем понял, почему мы проверяем разницу между соседними множителями? Нам ведь надо сравнивать с 1/(корень из двух)...
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 22:49 7
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Я не совсем понял, почему мы проверяем разницу между соседними множителями? Нам ведь надо сравнивать с 1/(корень из двух)...
Потому что каждый последующий член становится всё ближе к 1 и разница между соседними значениями становится всё меньше. А если б тебе не сказали, что там должно быть 1/(корень из двух)?
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 23:00  [ТС] 8
Цитата Сообщение от Nekto Посмотреть сообщение
Потому что каждый последующий член становится всё ближе к 1 и разница между соседними значениями становится всё меньше. А если б тебе не сказали, что там должно быть 1/(корень из двух)?
Т.е. фактически, мы не сравниваем его с значением в правой части, а накапливаем счетчик до тех пор, пока число не станет изменяться всего на 0,000001 и меньше?
0
347 / 292 / 37
Регистрация: 23.03.2012
Сообщений: 838
08.04.2012, 23:03 9
Цитата Сообщение от BoBaH26 Посмотреть сообщение
Т.е. фактически, мы не сравниваем его с значением в правой части, а накапливаем счетчик до тех пор, пока число не станет изменяться всего на 0,000001 и меньше?
Да. Потому что с каждым членом разница будет еще меньше.
0
30 / 30 / 5
Регистрация: 02.12.2010
Сообщений: 255
08.04.2012, 23:15  [ТС] 10
Тогда вот такой пример:
Определить количество членов в произведении в зависимости от погрешности

Здесь, если поступать аналогично, только используя формулу: P*=(1-1/pow(float(k),2)), можно увидеть, что примерно на 240 члене изменение происходит меньше, чем на 0,00001, следовательно, цикл прерывается. В итоге Р=0,50222.... НО! Изменение происходит, медленно, но происходит. Если сделать простой цикл с параметром, то видно, что при значении счетчика в 30 000 и более изменение незначительное, но число приближается к 0,50000. Вот именно это и надо подсчитать, т.е. значение счетчика, когда число станет ~0.5. А иначе неточное значение получается...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2012, 23:15
Помогаю со студенческими работами здесь

График зависимости погрешности и кол-ва итераций при методе половинного деления
Привет всем:) нужно реализовать метод половинного деления в Mathcad. Его я реализовала. Корень...

Определить количество членов a[k] последовательности
Даны натуральные числа n, a,...,a. Определить количество членов a последовательности a,...,a, ...

Определить количество членов Ak последовательности
1. Даны натуральные числа n, A 1, A2 , ..., An . Определить количество членов Ak ...

Определить количество членов Ak последовательности a1,a2,..an
Даны натуральные числа Ai={a1,a2,...an} Определить количество членов Ak последовательности...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru