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

Расчитать значение числового ряда. Помогите найти ошибки. - C++

Восстановить пароль Регистрация
 
iron-mik
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
27.09.2011, 20:44     Расчитать значение числового ряда. Помогите найти ошибки. #1
Необходимо расчитать значение числового ряда:Сумма(от n=1 до бесконечности) 1/((2n-1)*(2n+1)) =1/2 -->(значение стремится к 0.5)
И вычислить относительную и абсолютную погрешность.
Вот моя наработка:

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
32
#include "stdafx.h"
#include "iostream"
#include "conio.h" 
//Подключение библиотек
using namespace std;
 
int _tmain()
{
    //Инициализация:
    int n;
    double sum=0,m=0,absol=0,relat;
    //Ввод:
    cout<<"Vvedite n: ";
    cin>>n;
    cout<<"\n";
    //Расчитываем значение ряда:
    for(int i=1;i<=n;++i)
    {
        m=i;
        sum=sum+(1/((2*m-1)*(2*m+1)));
    }
    //Вычисляем погрешности:
    absol=0.5-sum;
    relat=(0.5-sum)/sum;
    //Вывод:
    cout<<"Sum="<<sum<<"\n";
    cout<<"Absol="<<absol<<"\n";
    cout<<"Otnos="<<relat<<"\n";
 
    getch();
    return 0;
}
Все хорошо вот только неправильно вычисляет абсолютную погрешность при n>5000 и т.д. Найдите пожалуйста ошибку. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2011, 20:44     Расчитать значение числового ряда. Помогите найти ошибки.
Посмотрите здесь:

Помогите найти ошибки, пожалуйста C++
C++ Составить программу вычисления числового ряда для известного числа членов ряда N
C++ помогите найти ошибки
C++ Помогите найти ошибки. С++. ООП
Помогите найти ошибки.срочно C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,017
Записей в блоге: 10
Завершенные тесты: 1
27.09.2011, 21:38     Расчитать значение числового ряда. Помогите найти ошибки. #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
25
26
27
28
29
30
31
32
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
    // Инициализация
    int     i, n;
    double  sum = 0, m, absol, relat;
 
    // Ввод
    cout << "Vvedite n: ";
    cin >> n;
 
    // Расчитываем значение ряда
    for ( i = 1; i <= n; ++i ) {
        sum += 1.0 / ((2 * i - 1) * (2 * i + 1));
    }
 
    // Вычисляем погрешности
    absol =  0.5 - sum;
    relat = (0.5 - sum) / sum;
 
    // Вывод
    cout << "  Sum = " << sum << endl;
    cout << "Absol = " << absol << endl;
    cout << "Otnos = " << relat << endl;
 
    getch();
    return 0;
}
Когда я переписывал код, я заметил потенциальную ошибку. Проблема может быть в том, что цифра 1 в выражении:
C++
1
sum=sum+(1/((2*m-1)*(2*m+1)));
будет интерпретироваться компилятором как целое значение, и, соответственно, делиться может только на целые части.
Проверь мой код. Думаю он будет рабочим.
iron-mik
2 / 2 / 0
Регистрация: 20.11.2010
Сообщений: 52
27.09.2011, 22:34  [ТС]     Расчитать значение числового ряда. Помогите найти ошибки. #3
Все равно также неправильно выводит
Один вопрос: sum+= -как я понял это тоже самое что sum=sum+...?
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,017
Записей в блоге: 10
Завершенные тесты: 1
27.09.2011, 22:38     Расчитать значение числового ряда. Помогите найти ошибки. #4
Цитата Сообщение от iron-mik Посмотреть сообщение
Один вопрос: sum+= -как я понял это тоже самое что sum=sum+...?
Да, это одно и то же.
Yandex
Объявления
27.09.2011, 22:38     Расчитать значение числового ряда. Помогите найти ошибки.
Ответ Создать тему
Опции темы

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