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

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

Войти
Регистрация
Восстановить пароль
 
_Evg1
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 5
#1

Построить рекурсию данного выражения 3x+xsinx и сравнить результаты - C++

11.03.2014, 14:35. Просмотров 248. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Условие нужно построить рекурсию данного выражения 3x+xsinx и сравнить р-таты
с помощью библиотечных функций и ф-ии написаны в ручную разложенную в ряд. Вот что вышло, не могу понять в чем ошибка но ф-я не считает( За ранее спасибо!
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
35
36
37
38
39
40
41
42
43
44
45
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <vcl.h>
#pragma hdrstop
double s(double y, int n, int k=1)
{
        int x;
        y=x*x;
        if(k==n)
        return(1+(pow((-1),k))*s(y,n,k+1));
}
int nn(double y,double e)
{
        int t;
        int x;
        int count=1;
        y=x*x;
        do
        {
 
                t = pow(1,count)*y/(2+count*(2*count+1));
                count++;
        }
        while (t>e);
        return count;
 
}
#pragma argsused
void main()
{
        double r;
        double x,y;
        double e;
        e=0,00001;
        double n;
        cout<<"Enter x: ";
        cin>>x;
        y=x*x;
        n=nn(y,e);
        cout<<" n= "<<n<<endl;
        cout<<3*x+x*sin(x)<<n<<endl;
        cout<<3*x+x*s(y,n)<<n<<endl;
        getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2014, 14:35     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты
Посмотрите здесь:

построить рекурсию для вычисления элементов последовательности C++
Лексема,Синтаксис и Семантика данного выражения. C++
C++ Дана строка символов, представляющих собой арифметическое выраже0ие. Вывести на экран результат данного выражения
Построить треугольник, найти площадь данного треугольника C++
Составить программу вычисления данного выражения C++
Построить одномерный массив, в котором элементы равны суммам элементов строк данного двумерного массива C++
C++ Построить двусвязный список из данного
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4387 / 3230 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
11.03.2014, 14:42     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #2
Цитата Сообщение от _Evg1 Посмотреть сообщение
e=0,00001;
десятичный разделитель точка, а не запятая.
_Evg1
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 5
11.03.2014, 14:50  [ТС]     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #3
Нет, ни чего не изменилось по прежнему выводит "-nan2" не знаю что ето
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,050
Записей в блоге: 5
Завершенные тесты: 1
11.03.2014, 15:01     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #4
Смысл возводить 1 в степень?
C++
1
                t = pow(1,count)*y/(2+count*(2*count+1));
Да и вообще это выражение написанно не верно. Разложите синус в ряд заново так как у вас закралась ошибка.
_Evg1
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 5
11.03.2014, 21:33  [ТС]     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #5
Разложенная функция будет выглядеть вот так f(x) = 3x+x(x(1+((-1)^n*x^2)/(2n(2n+1))) ну и дальше пытаюсь подсчитать (1+((-1)^n*x^2)/(2n(2n+1)) и как то дальше етим пользоваться, не знаю ну вроде верно.

Добавлено через 6 часов 6 минут
Народ, вроде как решил все проблемы но все же числа отличаются в сотых посоветуйте что может быть и где выскакивает не точность
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//---------------------------------------------------------------------------
#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <vcl.h>
#pragma hdrstop
 
//---------------------------------------------------------------------------
double s(double y, int n, int k=1)
{
 
        if(k==n)
        return(1.0+(pow((-1.0),k))*(y/(2*k*(2*k+1))));
        else return(1.0+pow((-1.0),k)*(y/(2*k*(2*k+1)))*s(y,n,k+1));
}
int nn(double y,double e)
{
        int t=1;
        int count=1;
        do
        {
 
                t = t*(y/count);
                count++;
        }
        while (fabs(t)>e);
        return count;
 
}
#pragma argsused
void main()
{
        double r;
        int x,y;
        double e;
        e=0.00001;
        int n;
        cout<<"Enter x: ";
        cin>>x;
        y=x*x;
       // n=nn(x,e);
       n=22;
        cout<<" n= "<<n<<endl;
        cout<<3*x+x*sin(x)<<endl;
        cout<<3*x+x*s(y,n)<<endl;
        getch();
}
//---------------------------------------------------------------------------
Ilot
Модератор
Эксперт С++
1784 / 1159 / 224
Регистрация: 16.05.2013
Сообщений: 3,050
Записей в блоге: 5
Завершенные тесты: 1
12.03.2014, 13:23     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #6
Точность нужно оценивать по формуле Тейлора с остаточным членом в форме Лагранжа. Другими словами нужно оценить значение первого из отброшенных членов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 00:35     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты
Еще ссылки по теме:

C++ Сравнить два введенных числа, не используя логические выражения
C++ Объясните значение данного выражения
Вычислить значение данного выражения C++
C++ Регулярные выражения: почему результаты поиска не заносятся в массив?
Вычислить значение выражения и сравнить с ожидаемым значением C++

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

Или воспользуйтесь поиском по форуму:
_Evg1
0 / 0 / 0
Регистрация: 01.03.2014
Сообщений: 5
13.03.2014, 00:35  [ТС]     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты #7
Проблема в том что подсчет итераций неверен скорее всего но я не могу написать функцию для подсчета n как не пытался, вроде как все перепробовал, а толку 0. Помогите если не составит труда
Yandex
Объявления
13.03.2014, 00:35     Построить рекурсию данного выражения 3x+xsinx и сравнить результаты
Ответ Создать тему
Опции темы

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