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

Вычисление суммы бесконечного ряда (ряд Тейлора) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.90
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 18:36     Вычисление суммы бесконечного ряда (ряд Тейлора) #1
Люди, если у кого есть время, прошу помочь с решением задачи ! Решение задачи должно быть на C !
http://xmages.net/out.php/i609131_Zadacha.gif
http://xmages.net/out.php/i609134_Uslovie.gif
Заранее благодарю !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 19:37     Вычисление суммы бесконечного ряда (ряд Тейлора) #21
не, не пойдет

Добавлено через 27 секунд
20 строчку надо поменять, правда я пока не знаю на что
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:38  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #22
x-значение аргумента
S-значение функции
n-количество просуммированных членов ряда
ТАК ???
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 19:44     Вычисление суммы бесконечного ряда (ряд Тейлора) #23
Цитата Сообщение от Opiym Посмотреть сообщение
x-значение аргумента
S-значение функции
n-количество просуммированных членов ряда
ТАК ???
да

Добавлено через 1 минуту
у - это то-же значение функции, но вычесленное непосредственно через нее. Ты логарифр представил через ряд Тейлора

Добавлено через 30 секунд
вот у и S должны в конечном счете сойтись - это и будет признак правильности работы программы.

Добавлено через 3 минуты
чтож, надеюсь дальше уже без моей помощи справишься)))
(с 20 строкой всеравно надо чтото делать)
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:48  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #24
За что 20-ая строка вообще отвечает ??? И ещё eps=1e-8 это любое маленькое число ???
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 19:54     Вычисление суммы бесконечного ряда (ряд Тейлора) #25
Цитата Сообщение от Opiym Посмотреть сообщение
За что 20-ая строка вообще отвечает ??? И ещё eps=1e-8 это любое маленькое число ???
20 строка - присвоение первоначального значения S и присвоение начального значения того, что будет к S прибавляться, предварительно умноженное на реккурентную формулу.
eps=1e-8 - это 10 в минус восьмой степени

Добавлено через 1 минуту
но в принципе eps тебе можно оставить так, а можно и немного увеличить.....но больше 10^(-5) не делай

Добавлено через 1 минуту
S первоначально должна быть равна 0 - это 100%
sl - ну тут я не уверен, сейчас попробую переделать немного код программы.
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:56  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #26
Если есть время !
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 19:59     Вычисление суммы бесконечного ряда (ряд Тейлора) #27
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
                S=0;
                n=0;
                do
                {
                        S=S+((pow(x-1,n+1))/(()n+1)*pow(x,n+1));
                        n++;
                }
                while (fabs(sl)>eps);
                y=log(x);
                printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
                cin.get();
}
можно и так

Добавлено через 2 минуты
а не, стоп, так нельзя, я забыл...
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:00  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #28
Ошибки есть !
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:12     Вычисление суммы бесконечного ряда (ряд Тейлора) #29
всетаки тот вариант в конце второй страницы правильнее был, надо только сообразить чему sl изначально приравнять.

Добавлено через 4 минуты
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        S=0;
        //sl=;
        n=0;
        do
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
            n++;
        }
        while (fabs(sl)>eps);
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
вот, вообщем додумай чему нужно приравнять sl первое, я тоже подумаю, а пока я его закомментарил

Добавлено через 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
27
28
29
30
31
32
33
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        S=0;
        sl=pow(x-1,n)/x;
        n=0;
        do
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
            n++;
        }
        while (fabs(sl)>eps);
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
вроде так - попробуй

Добавлено через 2 минуты
или нет..... чтото не подходит...

Добавлено через 2 минуты
так, ладно, задача решена - проблема за малым... я пойду пожалуй, если что - пиши в личку.
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:14  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #30
Объясни sl=pow(x-1,n)/x; ??? )))
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:21     Вычисление суммы бесконечного ряда (ряд Тейлора) #31
Цитата Сообщение от Opiym Посмотреть сообщение
Объясни sl=pow(x-1,n)/x; ??? )))
это я подумал и присвоил первому значению sl значение выражения при формуле при n=0

Добавлено через 2 минуты
стоп, тогда вообще надо sl=(x-1)/x

Добавлено через 40 секунд
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        S=0;
        sl=(x-1.)/x;
        n=0;
        do
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
            n++;
        }
        while (fabs(sl)>eps);
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
Добавлено через 11 секунд
попробуй этот код

Добавлено через 1 минуту
наверно опять не то, может 0е значение реккурентной формулы попробовать?

Добавлено через 1 минуту
sl=((x-1)*pow(x,-1))/2) попробуй
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:25  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #32
У меня мозг уже отказывает ! ))
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:26     Вычисление суммы бесконечного ряда (ряд Тейлора) #33
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        n=1;
        S=sl=((x-1.)*pow(x,n-1))/2;
        do
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
            n++;
        }
        while (fabs(sl)>eps);
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:28  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #34
Что такое sl вообще ? Я запутался !
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:32     Вычисление суммы бесконечного ряда (ряд Тейлора) #35
Цитата Сообщение от Opiym Посмотреть сообщение
Что такое sl вообще ? Я запутался !
sl - это выражение, которое стоит внутри автосуммы, в твоем условии - это как после второго равно, где почленно расписана сумма

Добавлено через 2 минуты
и каждый раз она считает следующий член, получая его из предидущего. Вот чтобы получить второй член - нужно первый умножить на реккурентную формулу. Вот мы получили второй член выражения и прибавили его к сумме, затем повторяем цикл, получая из второго члена третий, который прибавляем опять к сумме и т.д.
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:40  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #36
Я взял S=0;
sl=(x-1.)/x;
n=0;
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:43     Вычисление суммы бесконечного ряда (ряд Тейлора) #37
Цитата Сообщение от Opiym Посмотреть сообщение
Я взял S=0;
sl=(x-1.)/x;
n=0;
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        n=1;
        S=sl=((x-1.)*pow(x,n-1))/2;
        do
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
            n++;
        }
        while (fabs(sl)>eps);
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
такведь это правильнее будет
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:45  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #38
А результат S отрицательным разве должен получаться ???
Iworb
анимешник++
 Аватар для Iworb
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 411
04.11.2009, 20:46     Вычисление суммы бесконечного ряда (ряд Тейлора) #39
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
#include<conio.h>
#include<stdio.h>
#include<math.h>
#include<iostream.h>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        printf("input x=");
        scanf("%f",&x);
        if(x<=1./2.)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
        S=sl=((x-1.)*pow(x,n-1))/2;
        for(n=1;fabs(sl)<eps;n++)
        {
            sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2));
            S=S+sl;
        }
        y=log(x);
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, n, S, y);
        cin.get();
}
можно и так

Добавлено через 33 секунды
Цитата Сообщение от Opiym Посмотреть сообщение
А результат S отрицательным разве должен получаться ???
может и отрицательный получаться и положительный.

Добавлено через 1 минуту
так, все, ушел. Bye!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2009, 20:49     Вычисление суммы бесконечного ряда (ряд Тейлора)
Еще ссылки по теме:

Не могу найти ошибку(Вычисление суммы бесконечного ряда) C++
Вычисление суммы бесконечного ряда. Конвертация из паскаля в с++ C++
Вычисление суммы бесконечного ряда C++

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

Или воспользуйтесь поиском по форуму:
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:49  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #40
Спасибо ! Пока !
Yandex
Объявления
04.11.2009, 20:49     Вычисление суммы бесконечного ряда (ряд Тейлора)
Ответ Создать тему
Опции темы

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