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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 49, средняя оценка - 4.90
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
#1

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

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

Люди, если у кого есть время, прошу помочь с решением задачи ! Решение задачи должно быть на C !
http://xmages.net/out.php/i609131_Zadacha.gif
http://xmages.net/out.php/i609134_Uslovie.gif
Заранее благодарю !
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2009, 18:36     Вычисление суммы бесконечного ряда (ряд Тейлора)
Посмотрите здесь:

C++ Вычисление суммы бесконечного ряда с точностью эпсилон
Вычисление суммы бесконечного ряда C++
Вычислить значения функции ch x (гиперболический косинус) с помощью бесконечного ряда Тейлора C++
Вычисление суммы бесконечного ряда C++
C++ Вычисление функции через разложение в ряд (Ряд Тейлора)
Вычисление значения суммы бесконечного ряда C++
Не могу найти ошибку(Вычисление суммы бесконечного ряда) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 18:57     Вычисление суммы бесконечного ряда (ряд Тейлора) #2
опа, что-то подобное я делал.... а там точности никакой нет?? Без нее оно и так будет считатся до бесконечности. И думаю для икса интервал вроде должен быть

Добавлено через 5 минут
C
1
2
3
4
5
x=1/2;
s=sl=0;
for(n=0;;n++)
{sl=sl*pow((x*x-x),(n-1))
s=s+sl}
как то так вроде.... или нет

Добавлено через 1 минуту
давай я лучше покажу свое - там нечто похожее
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 18:59  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #3
Точность есть ! Сказано с точность E т.е. мы сами должны её задавать ! )) Если можешь, то полностью весь код программы в студию !
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:00     Вычисление суммы бесконечного ряда (ряд Тейлора) #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
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
void main ()
{
    float y, x=0, eps=1e-8, sl, S;
    int k;
    clrscr();
    printf("   x\tk\tS\t\t  y\n\n");
    do
    {
        S=sl=x;
        k=0;
        do
        {
            sl=sl*((pow(x,2.)*(2.*k+1.))/(4.*(2.*k+3.)));
            S=S+sl;
            k++;
        }
        while (fabs(sl)>eps);
        y=log((1.+x/2.)/(1.-x/2.))/2.;
        printf("%4.2f\t%d\t%10.8f\t%11.8f\n", x, k, S, y);
        x+=0.04;
    }
    while (x<=1.002);
}
Миниатюры
Вычисление суммы бесконечного ряда (ряд Тейлора)  
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:02     Вычисление суммы бесконечного ряда (ряд Тейлора) #5
ну фунция тебе не понадобится

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

Добавлено через 26 секунд
а 17 строку замени на
C
1
sl=sl*pow((x*x-x)
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:04  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #6
Функция начинается с while и заканчивается тоже while (x<=1.002); ??! Можно удалять так понимаю ?! )
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:08     Вычисление суммы бесконечного ряда (ряд Тейлора) #7
а не, на
C
1
sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2))
Добавлено через 1 минуту
Цитата Сообщение от Opiym Посмотреть сообщение
Функция начинается с while и заканчивается тоже while (x<=1.002); ??! Можно удалять так понимаю ?! )
вот это не уверен - поскольку у меня аргумент менялся от 0 до 1 - то у меня на этом и заканчивалось, а вот у тебя аргумент просто >1/2, с такими случаями не сталкивался

Добавлено через 20 секунд
и начинается она с do

Добавлено через 52 секунды
начало 11 строка - конец 26
начало 15 строка - конец 21
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:09  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #8
Спасибо ! Буду сейчас пробовать что - нибудь мутить !
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:11     Вычисление суммы бесконечного ряда (ряд Тейлора) #9
ах да, "у" присваиваешь значение log(x)

Добавлено через 1 минуту
точность думаю можешь такой-же оставить
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:12  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #10
Что такое pow ???
Ошибку в 17-ой строке выдаёт !
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:13     Вычисление суммы бесконечного ряда (ряд Тейлора) #11
надеюсь помог =)

Добавлено через 22 секунды
Цитата Сообщение от Opiym Посмотреть сообщение
Что такое pow ???
Ошибку в 17-ой строке выдаёт !
pow - это возведение в степень.
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
04.11.2009, 19:14     Вычисление суммы бесконечного ряда (ряд Тейлора) #12
возведение в степень это...
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:22     Вычисление суммы бесконечного ряда (ряд Тейлора) #13
C
1
sl=sl*((pow(x-1,n+1)*pow(x,n-1)*(n+1))/(n+2))
- ты это вставлял?? вроде ничего тут такого нет.... все нормально должно работать

Добавлено через 1 минуту
а, еще, где у меня в коде k - там по идее у тебя n

Добавлено через 31 секунду
(нy кроме 17 строки)
в 19 - n++

Добавлено через 1 минуту
и можешь сказать, тебе что, просто любой икс больше 1/2 взять и посчитать или все иксы, которые больше 1/2?

Добавлено через 15 секунд
если первое, то все выйдет куда проще

Добавлено через 1 минуту
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
void main ()
{
        float y, x=0.75, eps=1e-8, sl, S;
        int n;
        clrscr();
        printf("   x\tn\tS\t\t  y\n\n");
                S=sl=x;
                k=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);
}
вот для первого случая

Добавлено через 1 минуту
сдесь оно считает х=0,75
если другое значение - то просто там менять его надо.
можно сделать, чтобы пользователь вводил значение с клавиатуры
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:23  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #14
Хотя наверно просто любой x>1/2
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:26     Вычисление суммы бесконечного ряда (ряд Тейлора) #15
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>
 
void main ()
{
        float y, x, eps=1e-8, sl, S;
        int n;
        clrscr();
        scanx:
        scanf("%f",&x);
        if(x<0)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
                S=sl=x;
                k=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);
}
вот вариант ввода с клавиатуры

Добавлено через 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
#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:
        scanf("%f",&x);
        if(x<0)
        {
        printf("x<=1./2. error!\n");
        goto scanx; 
        }
        printf("   x\tn\tS\t\t  y\n\n");
                S=sl=x;
                k=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();
}
а так еще лучше (пока энтер не нажмешь программка не закроет окошко после выполнения)
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:27  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #16
Почему при построении решения, выдаётся ошибка clrscr(); в 9-ой строке ??? И нужно ли в 19-ой строке поменять к на n ?
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:29     Вычисление суммы бесконечного ряда (ряд Тейлора) #17
исправил чуток....

Добавлено через 1 минуту
Цитата Сообщение от Opiym Посмотреть сообщение
Почему при построении решения, выдаётся ошибка clrscr(); в 9-ой строке ??? И нужно ли в 19-ой строке поменять к на n ?
с клирскрином не знаю, это должно работать и так, а к на n менять нужно, у тебя ведь не используется переменная к.
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
04.11.2009, 19:32  [ТС]     Вычисление суммы бесконечного ряда (ряд Тейлора) #18
Я взял это ! Ошибка в 20 и 21 строке !
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
void main ()
{
        float y, x=0.75, eps=1e-8, sl, S;
        int n;
        clrscr();
        printf("   x\tn\tS\t\t  y\n\n");
                S=sl=x;
                k=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);
}
Iworb
анимешник++
93 / 60 / 2
Регистрация: 03.11.2009
Сообщений: 413
04.11.2009, 19:35     Вычисление суммы бесконечного ряда (ряд Тейлора) #19
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");
                S=sl=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();
}
вот, ошибок не выдает, правда саму работу программы надо-бы исправить....

Добавлено через 36 секунд
Цитата Сообщение от Opiym Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<conio.h>
#include<stdio.h>
#include<math.h>
 
void main ()
{
        float y, x=0.75, eps=1e-8, sl, S;
        int n;
        clrscr();
        printf("   x\tn\tS\t\t  y\n\n");
                S=sl=x;
                k=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);
}
в 12 строчке к на n замени

Добавлено через 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
#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=0;
                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();
}
а если так?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2009, 19:36     Вычисление суммы бесконечного ряда (ряд Тейлора)
Еще ссылки по теме:

Вычисление суммы бесконечного ряда. Конвертация из паскаля в с++ C++
Вычисление суммы бесконечного ряда C++
C++ Функция бесконечного ряда Тейлора с заданной точностью на С
C++ Вычисление приближенного значения tan(x) через ряд Тейлора/ряд Маклорена
C++ Вычисление суммы бесконечного ряда

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

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

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