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

Бесконечное суммирование - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Dimaskorik
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 28
13.12.2010, 10:43     Бесконечное суммирование #1
Получил задание по бесконечному суммированию но не как не могу разобраться как же это делается.
Вот то что нам дал препод чтобы разобраться в выполнении задания(во вложении объяснение выполнения но я не въехал)

Задание: написать функцию которая для заданного аргумента x и заданной точности e
вычисляет значение функции Y(x)=F(x)=x-(x^3)/(3^2)+(x^5)/(5^2)-(x^7)/(7^2)...
как сумму членов бесконечного ряда.
Примечание: Сумма вычисляется с точностью до члена ряда, меньшего e. То есть суммирование следует закончить, как только будет получено очередное слогаемое, по модулю не привышающее e.

Очень нужно
Миниатюры
Бесконечное суммирование   Бесконечное суммирование   Бесконечное суммирование  

Бесконечное суммирование   Бесконечное суммирование   Бесконечное суммирование  

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.12.2010, 11:40     Бесконечное суммирование #2
Dimaskorik,
Что то типа этого должно быть:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
f=0;
f1=1;
znak=1;
step=1;
f1=znak*(x^step)/(step^2);
while (f1<eps)
{
f=f+f1;
step=step+2;
znak=-znak;
f1=znak*(x^step)/(step^2);
}
return f;
Dimaskorik
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 28
13.12.2010, 11:42  [ТС]     Бесконечное суммирование #3
Цитата Сообщение от vitaly1981 Посмотреть сообщение
Dimaskorik,
Что то типа этого должно быть:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
f=0;
f1=1;
znak=1;
step=1;
f1=znak*(x^step)/(step^2);
while (f1<eps)
{
f=f+f1;
step=step+2;
znak=-znak;
f1=znak*(x^step)/(step^2);
}
return f;
Спасибо, большое. А вы не могли бы полностью написать чтобы я хоть немного в обозначениях разобрался а то я туплю (((
MILAN
 Аватар для MILAN
883 / 777 / 86
Регистрация: 21.02.2009
Сообщений: 1,722
13.12.2010, 11:42     Бесконечное суммирование #4
vitaly1981, помойму для возведения в степень существует функция pow!!!
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.12.2010, 11:49     Бесконечное суммирование #5
MILAN, да точно, я написал макет проги, а отлаживает пусть сам, надо же самому голову приложить к этому.


Dimaskorik,

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
//Итоговое значение функции
f=0;
//значение текущего члена ряда
f1=1;
//знак члена ряда
znak=1;
//степень члена ряда
step=1;
//считаем первый элемент, вообщем тут можно написать просто f1=х;
f1=znak*(x^step)/(step^2);
//начинаем цикл до тех пор пока текущий член ряда больше eps
while (f1>eps)
{
//добавляем член ряда в сам ряд
f=f+f1;
//степень меняем для следующего члена
step=step+2;
//знак меняем на противоположный
znak=-znak;
//считаем текущий член ряда
f1=znak*(x^step)/(step^2);
}
//возвращаем результат
return f;
А отладить и дописать попробуй сам, фактически самое основное я уже написал!
Dimaskorik
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 28
13.12.2010, 11:50  [ТС]     Бесконечное суммирование #6
Цитата Сообщение от MILAN Посмотреть сообщение
vitaly1981, помойму для возведения в степень существует функция pow!!!
Да это я с лёгкостью в случае чего могу исправить )))) Мне главное основное ))))))
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
13.12.2010, 11:53     Бесконечное суммирование #7
Dimaskorik, да, возведение в степень кажется через pow() нужно делать

Добавлено через 3 минуты
И еще в первом варианте я знак не в ту сторону поставил, должно быть:
while (f1>eps)
reich
 Аватар для reich
110 / 46 / 3
Регистрация: 03.09.2009
Сообщений: 112
13.12.2010, 11:59     Бесконечное суммирование #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
#include <iostream>
#include <cmath>
 
#define exp 2.7182818284590
 
double f( double x ){
    double n = 0, s = 0, prev = 0;
    int i = 1, c = 0;
    while ( abs( s ) < abs( exp ) ){
        prev = n;
        s = pow( x, (int)i ) / pow( (double)i, 2 );
        if ( ( ( ++c ) % 2 ) == 0 ){ n -= s; }
        else { n += s; }
        i += 2;
    }
    return prev;
}
 
int main(int argc, char *argv[]){
    double x = 0;
    std::cout << "Enter x: ";
    std::cin >> x;
    std::cout << f( x );
    return 0;
}
Цитата Сообщение от vitaly1981 Посмотреть сообщение
f1=znak*(x^step)/(step^2);
^ - это побитовое исключающее или, а не возведение в степерь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 12:06     Бесконечное суммирование
Еще ссылки по теме:

C++ Вычислить бесконечное суммирование
Бесконечное появление меню в консоли C++
Суммирование рядов C++

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

Или воспользуйтесь поиском по форуму:
Dimaskorik
0 / 0 / 0
Регистрация: 29.09.2010
Сообщений: 28
13.12.2010, 12:06  [ТС]     Бесконечное суммирование #9
Цитата Сообщение от reich Посмотреть сообщение

^ - это побитовое исключающее или, а не возведение в степерь
В начале правильно сказали я это отметил в формуле как степень просто.
Yandex
Объявления
13.12.2010, 12:06     Бесконечное суммирование
Ответ Создать тему
Опции темы

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