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

Вычисление суммы бесконечного ряда - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 52, средняя оценка - 4.63
Sithis
10 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 98
24.02.2012, 00:12     Вычисление суммы бесконечного ряда #1
Составить программу для вычисления суммы бесконечного ряда с погрешностью http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon ={10}^{-4}
http://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{k-1}^{}{u}_{k}
Процесс суммирования прекращается, как только выполняется неравенство |http://www.cyberforum.ru/cgi-bin/latex.cgi?{u}_{k}-http://www.cyberforum.ru/cgi-bin/latex.cgi?{u}_{k-1}|< \varepsilon.
Где http://www.cyberforum.ru/cgi-bin/latex.cgi?{u}_{k} - текущий член ряда суммирования, а http://www.cyberforum.ru/cgi-bin/latex.cgi?{u}_{k-1} - предыдущий.
Вычисление суммы бесконечного ряда
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
-=ЮрА=-
Заблокирован
Автор FAQ
24.02.2012, 15:26     Вычисление суммы бесконечного ряда #2
Sithis, см сюда http://www.cyberforum.ru/faq/thread4...ml#post2452211
Sithis
10 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 98
25.02.2012, 12:13  [ТС]     Вычисление суммы бесконечного ряда #3
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Так там ведь другая задача. Там факториалы и дроби
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2012, 13:24     Вычисление суммы бесконечного ряда #4
бесконечная сумма
-=ЮрА=-
Заблокирован
Автор FAQ
25.02.2012, 14:13     Вычисление суммы бесконечного ряда #5
Цитата Сообщение от Sithis Посмотреть сообщение
Так там ведь другая задача. Там факториалы и дроби
- вам надо было посмотреть на пост выше
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
3.1 Прикладной аспект использования рядов.
- всего одно движение колесом мышки. Ну посмотрели бы в том посте
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Некоторые уже решённые на форуме задания по тематике "Числовые ряды" находятся
здесь
Ниже адаптированный под ваше задание код(как по мне отличия от кода в 3.1 минимальны)
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
double S(double e)
{
    long k = 1;
    double ak = 1.0, sum = 0;
    while(e < fabs(ak))//Вот оно условие окончания итерационного процесса
    {
        sum += ak;
        k   =  k + 1;
        ak  =  1.0/(2*k*k - 1);
    }
    return sum;
}
 
int main()
{
    double e = 0;
    while(true)//Делаю бесконечный ввод
               //для завершения работы просто закрываем окно консоли
    {
        printf("Enter e : ");scanf("%lf",&e);
        printf("S = %lf\n",S(e));
        //Последние 2 функции system можно не применять
        system("pause");//Стоп-точка перед началом нового ввода
        system("cls");//Чистка экрана
    }
    return 0;
}
-=ЮрА=-
25.02.2012, 14:15
  #6

Не по теме:

PS:Sithis, код выше позволит вам без всяких перезапусков исследовать сумму ряда для различных значений погрешности. Вводите каждый раз нужное значение погрешности и жмите далее...
DU, разность предыдущей и текущей суммы это и есть значение элемента ряда

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
fabs(ak)
.
DU зачем усложнять алгоритм нахождением двух сумм? Этого просто можно не делать!

DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2012, 14:43     Вычисление суммы бесконечного ряда #7
DU зачем усложнять алгоритм нахождением двух сумм? Этого просто можно не делать!
Это я не знаю зачем. Я вроде такого не говорил и в коде этого то же нет.

Чтобы вычислить сумму бесконечного ряда с точностью до е, нужно убедится, что следующий элемент в сумму привносит значение, не большее е. Поэтому правильнее (имхо, я не спец в этом) проверять последний элемент на то, что он меньше e, а не разность последнего и предпоследнего. Т.е. убедится, что сумма стремится к какому-то конечному числу (предполагая, что члены суммы и дальше будут стремиться к нулю).
-=ЮрА=-
Заблокирован
Автор FAQ
25.02.2012, 15:13     Вычисление суммы бесконечного ряда #8
Цитата Сообщение от DU Посмотреть сообщение
Чтобы вычислить сумму бесконечного ряда с точностью до е, нужно убедится, что следующий элемент в сумму привносит значение, не большее е. Поэтому правильнее (имхо, я не спец в этом) проверять последний элемент на то, что он меньше e, а не разность последнего и предпоследнего. Т.е. убедится, что сумма стремится к какому-то конечному числу (предполагая, что члены суммы и дальше будут стремиться к нулю).
- ну а что же ты посоветовал по ссылке
Цитата Сообщение от DU Посмотреть сообщение
double summ = 0;
* for (unsigned i = 0; ; ++i)
* {
* * const double prevSumm = summ;
* * summ += CalcValue(i);
* * if (abs(summ - prevSumm) < e)
* * {
* * * *break;
* * }
,
Цитата Сообщение от DU Посмотреть сообщение
Я вроде такого не говорил и в коде этого то же нет.
- Как видишь в твоём коде разность сумм - поэтому и спросил
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
зачем усложнять алгоритм нахождением двух сумм?
. Достаточно было abs(CalcValue(i))
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
25.02.2012, 15:44     Вычисление суммы бесконечного ряда #9
ну это все таки не вычисление двух сумм а лишь перекладывание значения одной в другую переменную. а так да, вычислять разность тут пожалуй лишнее и с 'e' лучше сразу сравнивать i-oe значение.
Sithis
10 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 98
25.02.2012, 17:44  [ТС]     Вычисление суммы бесконечного ряда #10
-=ЮрА=-, Что-то не работает программа. Ввожу любое число, а она выдает ответ "ноль".
И почему в начале просит ввести "е"? Разве не "n" надо вводить?
-=ЮрА=-
Заблокирован
Автор FAQ
25.02.2012, 18:17     Вычисление суммы бесконечного ряда #11
Sithis, прочтите своё задание внимательно. Вам надо найти сумму ряда с погрешностью, никакого n вводить не надо - процесс итерационній и остановится сам когда точность вічислений будет достигнута. По поводу
Цитата Сообщение от Sithis Посмотреть сообщение
Ввожу любое число, а она выдает ответ "ноль".
- вы должны вводить точность со значением меньше единицы(я в относительных единицах ввод сделал - прям как у вас в задании). Представьте вы ввели 100 - знаете что вы ввели - посчитать с погрешностью 100,0*100% = 10000%!Пожалуйста прочтите ещё раз внимательно ссылку из 2-го поста, там очень детально расписывал точность...
Смотрите
е = 0,1 - погрешность вычислений 10%
е = 0,01 - погрешность вычислений 1%
а теперь введите вашу точность задания 10 в минус 4-той т.е. 0,0001
Миниатюры
Вычисление суммы бесконечного ряда  
-=ЮрА=-
25.02.2012, 18:21
  #12

Не по теме:

Специально же расписывал в FAQ

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Таким образом когда нас просят найти сумму ряда с заданной погрешностью подразумевают именно
Условием окончания итерационного процесса будет
Вот им то и будем пользоваться в дальнейшем. Хотелось бы ещё добавить что при k стремящимся к бесконечности значение . Поэтому в рядя случаев(читай почти всегда) допустимо под относительной погрешностью разложения ряда понимать именно .
. Не ленитесь прочтите - вникните и прийдёт понимание!

Sithis
10 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 98
14.03.2012, 13:45  [ТС]     Вычисление суммы бесконечного ряда #13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(e < fabs(ak))/
Так тут ведь одно число для окончания процесса, а в условии задачи должна быть разность 2х чисел(последнего и предпоследнего).
Sithis
10 / 1 / 0
Регистрация: 27.11.2011
Сообщений: 98
16.03.2012, 13:31  [ТС]     Вычисление суммы бесконечного ряда #14
Объясните пожалуйста
Hemull
47 / 47 / 1
Регистрация: 12.03.2012
Сообщений: 108
16.03.2012, 14:50     Вычисление суммы бесконечного ряда #15
Перегрузка Log(2)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2012, 15:07     Вычисление суммы бесконечного ряда
Еще ссылки по теме:

Не могу найти ошибку(Вычисление суммы бесконечного ряда) C++
Вычисление суммы бесконечного ряда. Конвертация из паскаля в с++ C++
Вычисление суммы бесконечного ряда C++

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
16.03.2012, 15:07     Вычисление суммы бесконечного ряда #16
Цитата Сообщение от Sithis Посмотреть сообщение
Так тут ведь одно число для окончания процесса, а в условии задачи должна быть разность 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
33
34
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
double S(double e)
{
    long k = 2;
    double uk_1 = 1.0;
    double uk   = 1.0/(2*k*k - 1); 
    double sum  = uk_1;
    while(e < fabs(uk - uk_1))
    {
        sum = sum + uk;
        k   =  k + 1;
        uk_1 = uk;
        uk   = 1.0/(2*k*k - 1);
    }
    return sum;
}
 
int main()
{
        double e = 0;
        while(1)//ÄåëГ*Гѕ ГЎГҐГ±ГЄГ®Г*ГҐГ·Г*ûé ââîä
               //äëÿ Г§Г*âåðøåГ*ГЁГї Г°Г*áîòû ïðîñòî Г§Г*êðûâГ*ГҐГ¬ îêГ*Г® ГЄГ®Г*ñîëè
        {
                printf("Enter e : ");scanf("%lf",&e);
                printf("S = %lf\n",S(e));
                //ÏîñëåäГ*ГЁГҐ 2 ГґГіГ*êöèè system ìîæГ*Г® Г*ГҐ ïðèìåГ*ГїГІГј
                system("pause");//Ñòîï-òî÷êГ* ïåðåä Г*Г*Г·Г*ëîì Г*îâîãî ââîäГ*
                system("cls");//Г—ГЁГ±ГІГЄГ* ГЅГЄГ°Г*Г*Г*
        }
        return 0;
}
Миниатюры
Вычисление суммы бесконечного ряда  
Yandex
Объявления
16.03.2012, 15:07     Вычисление суммы бесконечного ряда
Ответ Создать тему
Опции темы

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