Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/36: Рейтинг темы: голосов - 36, средняя оценка - 4.50
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
1

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

04.11.2009, 18:36. Просмотров 7298. Ответов 44
Метки нет (Все метки)

Люди, если у кого есть время, прошу помочь с решением задачи ! Решение задачи должно быть на C !
http://xmages.net/out.php/i609131_Zadacha.gif
http://xmages.net/out.php/i609134_Uslovie.gif
Заранее благодарю !
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.11.2009, 18:36
Ответы с готовыми решениями:

Ряд Тейлора. Вычисление ряда суммы
Помогите с программой вычисляющей ряд суммы: Условие: Вычислить и вывести на экран в виде таблицы...

Вычисление суммы бесконечного ряда
помогите написать программу

Вычисление суммы бесконечного ряда
напишите код, пожалуйста Определить с заданной точностью сумму членов бесконечного ряда: ...

Вычисление суммы бесконечного ряда
S = \frac{x-1}{2} - \frac{{(x-1)}^{2}}{2} + \frac{{(x-1)}^{3}}{3} - ... сравнить полученное...

44
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
04.11.2009, 19:37 21
не, не пойдет

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

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

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

Добавлено через 3 минуты
чтож, надеюсь дальше уже без моей помощи справишься)))
(с 20 строкой всеравно надо чтото делать)
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:48  [ТС] 24
За что 20-ая строка вообще отвечает ??? И ещё eps=1e-8 это любое маленькое число ???
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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 - ну тут я не уверен, сейчас попробую переделать немного код программы.
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:56  [ТС] 26
Если есть время !
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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 минуты
а не, стоп, так нельзя, я забыл...
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:00  [ТС] 28
Ошибки есть !
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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 минуты
так, ладно, задача решена - проблема за малым... я пойду пожалуй, если что - пиши в личку.
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:14  [ТС] 30
Объясни sl=pow(x-1,n)/x; ??? )))
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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) попробуй
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:25  [ТС] 32
У меня мозг уже отказывает ! ))
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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();
}
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:28  [ТС] 34
Что такое sl вообще ? Я запутался !
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
04.11.2009, 20:32 35
Цитата Сообщение от Opiym Посмотреть сообщение
Что такое sl вообще ? Я запутался !
sl - это выражение, которое стоит внутри автосуммы, в твоем условии - это как после второго равно, где почленно расписана сумма

Добавлено через 2 минуты
и каждый раз она считает следующий член, получая его из предидущего. Вот чтобы получить второй член - нужно первый умножить на реккурентную формулу. Вот мы получили второй член выражения и прибавили его к сумме, затем повторяем цикл, получая из второго члена третий, который прибавляем опять к сумме и т.д.
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:40  [ТС] 36
Я взял S=0;
sl=(x-1.)/x;
n=0;
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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();
}
такведь это правильнее будет
0
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:45  [ТС] 38
А результат S отрицательным разве должен получаться ???
0
анимешник++
94 / 61 / 7
Регистрация: 03.11.2009
Сообщений: 426
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!
1
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 20:49  [ТС] 40
Спасибо ! Пока !
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.11.2009, 20:49

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Вычисление суммы бесконечного ряда
Никак не вычисляются значения, что делаю не так? #include &lt;iostream&gt; #include&lt;stdio.h&gt;...

Вычисление суммы бесконечного ряда
Составить программу для вычисления суммы бесконечного ряда с погрешностью \varepsilon ={10}^{-4}...

Вычисление суммы бесконечного ряда
Вычислить сумму элементов бесконечного ряда с заданной точностью e. Вычисления продолжаются пока...

Вычисление суммы бесконечного ряда
Помогите решить задачу нужна найти сумму бесконечного ряда с точностью E=0.0001...


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

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

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