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

Посмотри что у меня не так! - C++

Восстановить пароль Регистрация
 
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 11:48     Посмотри что у меня не так! #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
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <math.h>
using namespace std;
 
int main()
 
{
    float  n, y, a, s, x, xn, xk, dx, e;
    
    cout << "Xn= ";
    cin >> xn;
    
    cout << "Xk= ";
    cin >> xk;
    
    cout << "Dx= ";
    cin >> dx;
 
    cout << "E= ";
    cin >> e;
 
 
 
    for (x=xn;x<=xk;x=x+dx)
    {   
        n=0;
        s=0;
        a=0;
        while (a<e)
        {
            y=(2*x)+1;
            a=1/((2*x)+1)*(pow(x,y));
            s=s+a;
            n=n+1;
            cout << x << "___________________ \n";
            cout << s << "___________________ \n";
            cout << n << "___________________ \n";  
        }
    }   
 
    
return 0;
}
Добавлено через 2 минуты
Вот Формула

a=1/((2*x)+1)*(pow(x,y))(от 0 до бесконечности)!!!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dmitry_gdv
 Аватар для Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 351
30.11.2011, 11:50     Посмотри что у меня не так! #2
желательно переменную для управления фором делать интовой, так как на разном железе будет работать по - разному
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 11:55  [ТС]     Посмотри что у меня не так! #3
у меня шаг dx= 0.1!
так что x будет принимать значения 1 , 1.1 , 1.2 итд до 2

у меня программа циклиться ((((((((((( ни чего ни могу понять( почему(
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
30.11.2011, 11:58     Посмотри что у меня не так! #4
Цитата Сообщение от lipv Посмотреть сообщение
a=0;
while (a<e)
Конечно циклится.
a = 0;
так понимаю е > 0
a всегда у тебя будет < e

Выход из цикла напиши!
Dmitry_gdv
 Аватар для Dmitry_gdv
64 / 64 / 5
Регистрация: 18.03.2010
Сообщений: 351
30.11.2011, 12:03     Посмотри что у меня не так! #5
да просто посмотри отладчиком - вот и всё сразу станет ясно
программка у тебя оч простенькая

Добавлено через 4 минуты
Цитата Сообщение от ZaVyLoN Посмотреть сообщение
Конечно циклится.
a = 0;
так понимаю е > 0
a всегда у тебя будет < e

Выход из цикла напиши!
да нет
а у него меняется в цикле - там вроди всё норм
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
30.11.2011, 12:06     Посмотри что у меня не так! #6
Да, извиняюсь.
поверхностно посмотрел
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 12:11  [ТС]     Посмотри что у меня не так! #7
Люди добрые. Подскажите мне не умному зачем нужна точность??? (е)???

вот я получил на первом шаге , при вводе xn=1 xk=2 dx=0.1, а(получаю)= 1/3, 1/5... а точность зачем ?? чё она дает?((((
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 12:13     Посмотри что у меня не так! #8
попробуй так:
C++
1
2
3
4
do
{
//... 
} while (a<e);
Проблем уже меньше будет
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
30.11.2011, 12:14     Посмотри что у меня не так! #9
lipv, при каких значениях
Цитата Сообщение от lipv Посмотреть сообщение
рограмма циклиться (((((((((((
!?

У меня все отработало нормально.
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 12:17  [ТС]     Посмотри что у меня не так! #10
xn = 1 xk = 2 dx = 0.1 ну и точность я ввожу (хотя незнаю для чего она нужна (((( !) e=10

Добавлено через 42 секунды
а как формулу математическую здесь написать??? Можно я формулу напишу?
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 12:24     Посмотри что у меня не так! #11
Вот тело твоего цикла:
C++
1
2
3
4
5
6
7
8
9
10
11
do
                {
                        y=2*x+1;
                        a=1/((2*x)+1)*(pow(x,y)); // перепроверьте правильность формулы...
// ...на всякий случай
                        s=s+a;
                        n=n+1; /* зачем здесь n? */
                        cout << x << "___________________ \n";
                        cout << s << "___________________ \n";
                        cout << n << "___________________ \n";  
                } while (a<e);
n вообще не используется, разве нет?
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 12:32  [ТС]     Посмотри что у меня не так! #12
http://www.cyberforum.ru/cgi-bin/latex.cgi?arth x= (2*n)+1

Добавлено через 58 секунд
n - это количество шагов!

Добавлено через 2 минуты
http://www.cyberforum.ru/cgi-bin/latex.cgi?arth x= sum(n=0;n=бесконечность) 1/((2*n)+1)*(x^(2*n)+1)

Добавлено через 1 минуту
неполучается написать формулу(
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 12:33     Посмотри что у меня не так! #13
Нет,я понимаю, что по логике n - количество шагов, только сколько шагов? И когда уже хватит идти?
По крайней мере, у вас в формуле написано:
C++
1
y=2*x+1;
А вы сами сказали, что нужно написать
C++
1
y=2*n+1;
Возможно это также касается переменной a.
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 12:38  [ТС]     Посмотри что у меня не так! #14
всё верно , программа считает правильно, просто я немогу разобраться Для Чего Нужна Точность e(эпсилант), и ввожу её от балды , и у меня циклитсся программа и от этого ((((

Добавлено через 1 минуту
SleepMaster Спасибо тебе огроменное , что хотябы отклинулся), но я так и немогу разобраться(((
SleepMaster
 Аватар для SleepMaster
40 / 40 / 1
Регистрация: 26.11.2011
Сообщений: 80
30.11.2011, 12:55     Посмотри что у меня не так! #15
Да не нужна там e! Вообще. Есть интервал от a до b с шагом h. Всё, этого достаточно. Можно было по-другому записать: считать сумму, пока следующий элемент больше e, тогда да, точность нужна, а a, b и h - нет. Знаешь почему у тебя не работает? Вот смотри, твоя программа должна выглядеть так:
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
#include <iostream>
#include <math.h>
#include <conio.h>
using namespace std;
 
int main()
 
{
        float  n, y, a, s, x, xn, xk, dx;
        
        cout << "Xn= ";
        cin >> xn;
        
        cout << "Xk= ";
        cin >> xk;
        
        cout << "Dx= ";
        cin >> dx; 
 
                n=0;
                s=0;
                a=0;
        for (x=xn;x<=xk;x=x+dx)
        {       
                        y=(2*x)+1;
                        a=1/((2*x)+1)*(pow(x,y));
                        s=s+a;
                        n=n+1;
                        cout << x << "___________________ \n";
                        cout << s << "___________________ \n";
                        cout << n << "___________________ \n";  
                }
                getch();
return 0;
}
У тебя очень быстро растёт функция y. Введи xn = 1, xk = 10, h = 0.1 и посмотри, чему равен y.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2011, 17:12     Посмотри что у меня не так!
Еще ссылки по теме:

C++ Как сделать так что я мог умножать не на два числа а на 3,4,5 и так далее?
C++ Нужно написать код программы, а у меня не очень получается . это все что у меня получилось
C++ Не понял, что от меня хотят

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

Или воспользуйтесь поиском по форуму:
lipv
0 / 0 / 0
Регистрация: 29.11.2011
Сообщений: 24
30.11.2011, 17:12  [ТС]     Посмотри что у меня не так! #16
СПАСИБОЧКИ ТЕБЕ SLEEPMASTER!!!!!!! respect Я ЕЁ ЗДЕЛАЮ!!!!!!!!!
Yandex
Объявления
30.11.2011, 17:12     Посмотри что у меня не так!
Ответ Создать тему
Опции темы

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