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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Иринка
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 44
#1

Вычисление суммы ряда. - C++

16.09.2009, 21:45. Просмотров 1434. Ответов 17
Метки нет (Все метки)

Помогите, пожалйста!!!
Вычислить сумму бесконечного ряда Y=(fabs)ak, где а=-0,1(аk-1+аk+1) при k=2,3,4... Вычисления окончить при |ak|<Eps.
a1=2, a2=5, Eps=0,001
Заранее ОГРОМНЕЙШЕЕ спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2009, 21:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление суммы ряда. (C++):

Вычисление суммы ряда - C++
Помогите решить задачку!!! Спросить у пользователя n, вычислить 1*2+2*3+...+(n-1)*n!!!

Вычисление суммы ряда - C++
Вычислить s = sinx/2+sinx^2/4+...+sinx^n/2n #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; using...

Вычисление суммы ряда - C++
Всем доброго времени суток! Есть ряд: \sum_{n=0}^\infty (-1)^n * (a+b*n)/x^n Есть вот такая неработающая программа: ...

Вычисление суммы ряда - C++
Есть задание во вложении. Нужно найти значение суммы. Я прописываю библиотеки. Мне нужен весь код. Причем делал через if&amp;else....

Вычисление суммы ряда С++ - C++
Вычисление суммы ряда

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

17
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
16.09.2009, 22:55 #2
Запишите более понятно формулу.
Что за
Цитата Сообщение от Иринка Посмотреть сообщение
а=-0,1(аk-1+аk+1)
В данном случае в скобках единицы сокращаются и ак удваивается.

В общем случае делается так:
1) Вводится чесло Е - это точность, которую не должно превысить ак.
2) В цикле
C++
1
while (a*k < E) { ... }
вычесляется сумма, каждый раз прибавляя получкнные вычесления s += d
3) В конце цикла к k прибавляется единица.
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 13:17 #3
Видимо так:
Y=сумма fabs(a[k]), до тех пока fabs(a[k])>=epsilon
a[1]=2
a[2]=5
epsilon=0.001
a[k]=-0.1*(a[k-1]+a[k+1])
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.09.2009, 19:15 #4
Вот это более похоже на правду, но всё же по условию k=2,3,4..., а здесь
Цитата Сообщение от odip Посмотреть сообщение
Y=сумма fabs(a[k]), до тех пока fabs(a[k])>=epsilon
a[1]=2
a[2]=5
epsilon=0.001
a[k]=-0.1*(a[k-1]+a[k+1])
k участвует только как индекс и чему равно, например, a[15] неизвестно.
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 19:26 #5
Если немного подумать головой, то можно понять, что a[k+1] вычисляется через a[k] & a[k-1]

Добавлено через 1 минуту
Хотя возможно я ошибся и неправильно интерпретировал запись: а=-0,1(аk-1+аk+1)
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 20:37 #6
Иринка, может имеет смысл выложить скан или хотя бы фотографию оригинала задания? Просто в записи мало что понятно! Иначе вряд ли решение будет
0
Иринка
0 / 0 / 0
Регистрация: 21.04.2009
Сообщений: 44
17.09.2009, 20:47  [ТС] #7
Вот сама задача:
0
Миниатюры
Вычисление суммы ряда.  
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.09.2009, 21:07 #8
Цитата Сообщение от odip Посмотреть сообщение
Если немного подумать головой, то можно понять, что a[k+1] вычисляется через a[k] & a[k-1]

Добавлено через 1 минуту
Хотя возможно я ошибся и неправильно интерпретировал запись: а=-0,1(аk-1+аk+1)
Да, я написал неподумав.
В любом случае задание выглядит странно.

Добавлено через 54 секунды
Цитата Сообщение от Иринка Посмотреть сообщение
Вот сама задача:
Другое дело.

Добавлено через 12 минут
Вот как -то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
    double s = 0.0;
    double e = 0.0001;
    double ak, ak1, ak2;
    ak1 = 2.0;
    ak2 = 5.0;
    while (fabs(ak) < e)
    {
        ak = -0.1*(ak1 + ak2);
        s += ak;
        ak2 = ak1;
        ak1 = ak;
    }
    cout << s << endl;
    return 0;
}
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 21:33 #9
2qwert: а ты уверен что там в задании пропущена буква k ?

Добавлено через 2 минуты
Код кстати неверный.
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.09.2009, 22:20 #10
Цитата Сообщение от odip Посмотреть сообщение
а ты уверен что там в задании пропущена буква k ?
В смысле пропущена? k играет роль индекса. И всё. На соответствие ak1 с a[k-1] или a[k-2] внимания можно не обращать, т.к. в скобках сумма, а от перемены мест слагаемых сумма не меняется (должно быть известно из школы).
Если код неверный, по понятным только тебе причинам, напиши свой!
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 22:28 #11
В картинке в посте #7 написано: "a=", а не "a[k]=".
То есть условие кривое даже на картинке (то есть в оригинале).

В строке 11 проверяется ak, которое не инициализировано выше.
Условие очевидно должно быть такое: while ( fabs(ak)>=e )
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.09.2009, 22:38 #12
Всё-таки так (в предыдущем случае после компиляции убрал одну строчку)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <math.h>
using namespace std;
int main ()
{
        double s = 0.0;
        double e = 0.0001;
        double ak, ak1, ak2;
        ak = 0.0;
        ak1 = 2.0;
        ak2 = 5.0;
        while (fabs(ak) < e)
        {
                ak = -0.1*(ak1 + ak2);
                s += ak;
                ak1 = ak2;
                ak2 = ak;
        }
        cout << s << endl;
        return 0;
}
Добавлено через 5 минут
Не заметил сообщение odip.
Если придираться, то на картинке несоответствий больше, например:
1) a1 = 2 и a1 = 5 чего быть не может.
2) В первоначальной сумме k = 0 до бесконечности, потом же написано k = 2,3,4...
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 22:39 #13
По условию нужно закончить, когда fabs(ak)<e.
А ты наоборот - продолжаешь при этом условии считать !
И у тебя цикл не выполняется ни разу !
(fabs(0)<0.0001) == true !!!

Добавлено через 1 минуту
a1 = 2 и a1 = 5 чего быть не может.
Точно - не разглядел.
Какой-то кривой учебник
0
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
17.09.2009, 22:48 #14
Цитата Сообщение от odip Посмотреть сообщение
По условию нужно закончить, когда fabs(ak)<e.
А ты наоборот - продолжаешь при этом условии считать !
И у тебя цикл не выполняется ни разу !
При том условии, что на картинки, т.е. while (ak < e), условие выполняется ровно 1 раз.
Пусь всё же автор уточнит условие, а в соответствии с ним код переделать несложно.
0
odip
Эксперт С++
7158 / 3220 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.09.2009, 22:55 #15
В этом месте на картинке как раз все понятно.
Считать сумму до тех пор, пока не будет |ak|<e.
И потом - это совершенно стандартное условие
1
17.09.2009, 22:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.09.2009, 22:55
Привет! Вот еще темы с ответами:

Вычисление суммы ряда - C++
Привет всем) Задачу и формулы надо переписывать! Редактор формул внизу страницы. Дана такая формула: Всё вроде ничего, но не...

Вычисление суммы ряда - C++
1^2+3^2+5^2+...+(2n-1)^2

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

Вычисление суммы ряда - C++
Суммы жду помощи.


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

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

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