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

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

Войти
Регистрация
Восстановить пароль
 
Live4Sky
6 / 1 / 1
Регистрация: 04.10.2013
Сообщений: 42
#1

Гиперболический Синус в ряд - неправильный подсчет - C++

20.03.2014, 04:57. Просмотров 520. Ответов 7
Метки нет (Все метки)

Имеется ряд sh(x) = Сумма от i до N 1/(2i+1)!*x2i+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
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
 double n,j=0,fact=1,x,x1=1,res,sum=0;
 cout<<"Enter N"<<endl;
 cin>>n;
 cout<<"Enter X"<<endl;
 cin>>x;
 for(int i=1;i<=n;++i){
    j+=2;
    fact*=j*(j+1);
    x1*=x*x;
    sum+=(x1*x)/fact;
    res=sinh(x);
 }
 
cout<<"Factorial(2*i+1)"<<" "<<"->"<<fact<<endl;
cout<<"X pow (2*i+1)"<<" "<<"->"<<x1*x<<endl;
cout<<"sum"<<" "<<"->"<<fixed<<sum<<endl;
cout<<"sh(x)"<<" "<<"->"<<fixed<<res<<endl;
    return 0;
}
в общем проблема в неправильном подсчете,т.е. левая часть правой не равна..помогите((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.03.2014, 04:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Гиперболический Синус в ряд - неправильный подсчет (C++):

гиперболический синус - C++
Вычисления значений гиперболического Синуса с заданной точностью, используя разложение данной функции в ряд. можете навести пример...

Вычислить инверсный гиперболический тангенс используя разложение в ряд - C++
Вычеслить инверсный гиперболический тангенс tangent arcth с заданной точностью е=0.001 используя разложение в ряд arcth х=х+х^3/3...

Ряд Тейлора, синус - C++
ТеЙлора* Уважаемые, не могу найти в чём ошибка, помогите. Алгоритм составлен (вроде) правильно. Пересчитывал значения по шагам в ручную...

Используя разложение в ряд, найти синус 0,4 - C++
Я не понимаю как разложить в ряд Надо теперь оказывается ещё Используя разложение в ряд, найти синус 0,4=-O Именуйте темы...

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

Быстрая сортировка, неправильный подсчет количества сравнений и перестановок - C++
Сортирует верно (по убыванию элементов в строке), а кол-во сравнений и перестановок выдает ошибочно В первом скрине показывается...

7
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,805
Завершенные тесты: 1
20.03.2014, 16:50 #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
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
    double n,x,res,sum,eps,an;
    cout<<"Enter precission"<<endl;
    cin>>eps;
    cout<<"Enter X"<<endl;
    cin>>x;
    sum=0;
    an=x;
    n=0;
    do
    {
        sum+=an;
        n++;
        an*=x*x/(2.*n*(2.*n+1.));
        
    }while(fabs(an)>eps);
    res=sinh(x);
    cout<<"sum"<<" "<<"->"<<fixed<<sum<<endl;
    cout<<"sh(x)"<<" "<<"->"<<fixed<<res<<endl;
    system("pause");
    return 0;
}
2
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
12.10.2015, 08:11 #3
zss, подскажи как посчитал знаменатель вот в этом выражении
an*=x*x/(2.*n*(2.*n+1.));
я считаю у меня знаменатель получается (2n+2)*(2*n+3) но считает неправильно
а ваш вариант работает
0
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,805
Завершенные тесты: 1
12.10.2015, 08:56 #4
Все зависит от того что Вы выражаете an через an-1, или an+1 через an
В первом случае получается
C++
1
2
n++;
an*=x*x/(2.*n*(2.*n+1.));
А во втором
C++
1
2
an*=x*x/( (2n+2)*(2*n+3));
n++;
У Вас считает неправильно, потому, что n++ во втором случае должно стоять ПОСЛЕ формулы.
1
Sibmax1988
3 / 3 / 0
Регистрация: 22.09.2015
Сообщений: 121
12.10.2015, 09:08 #5
zss, так n++ у меня вообще в цикле фор наращивается так что получается должно работать но не работает

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
for (s=1, sn=1,n=1;fabs(sn)>eps;n++)
{
    sn*=(x*x)/(2*n*(2*n+1));
    s+=sn;
    if (fabs(s-sn)>ud) 
    {
        cout<<"При х= " <<x<<"  процесс становится расходящимся "<<endl;
        ud = fabs(s-sn);
        cout<< "Удаление от корня = "<<ud<<endl;
        break;      
    }
}
правда это кусок программы уже для гиперболического косинуса но суть такая же
0
isaak
103 / 40 / 9
Регистрация: 17.10.2010
Сообщений: 670
12.10.2015, 12:10 #6
zss,
1. а что именно из cmath используется в вашем коде?
2. где объявлена функция system в вашем коде?
0
nmcf
5517 / 4827 / 1634
Регистрация: 14.04.2014
Сообщений: 19,603
12.10.2015, 13:34 #7
sinh(), например, в cmath, а для system() нужно подключить cstdlib.
1
zss
Модератор
Эксперт С++
6516 / 6078 / 2001
Регистрация: 18.12.2011
Сообщений: 15,805
Завершенные тесты: 1
12.10.2015, 16:36 #8
Цитата Сообщение от Sibmax1988 Посмотреть сообщение
sn*=(x*x)/(2*n*(2*n+1));
s+=sn;
Та же ошибка. Сначала пересчитали, а потом просуммировали
Переставьте строки
C++
1
2
3
4
for (s=0.0, sn=1.0,n=1;fabs(sn)>eps;n++)
{
   s+=sn;
   sn*=(x*x)/(2*n*(2*n+1));
1
12.10.2015, 16:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.10.2015, 16:36
Привет! Вот еще темы с ответами:

UnixPosix, не ври мне! (неправильный подсчет времени вручную) - C++
Проблема следующая - реализовал я нуля перевод из posix в человечную дату. А тут проблема появилась: ввожу 54588753952 в свою программу,...

гиперболический тангенс - C++
Надо написать программу в си, вычисляющую гиперболический тангенс через итерационную формулу.

Гиперболический косинус - из градусов в радианы или наоборот - C++
Помогите новичку! Нужен код нахождения Гиперболического косинуса из градусов в радианы или наоборот. Заранее благодарен!

Вычислить значения функции ch x (гиперболический косинус) с помощью бесконечного ряда Тейлора - C++
не могу решить никак 10. Написать программу вычисления значения функции ch x (гиперболический косинус) с помощью бесконечного ряда...


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

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

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