Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Вычислить функцию с помощью разложения в ряд (число членов ряда и значение аргумента ввести с консоли) - C++

12.09.2016, 10:00. Просмотров 258. Ответов 11
Метки нет (Все метки)

Здравствуйте. Нужно вычислить функцию с помощью разложения в ряд. Число членов разложения ряда и значение аргумента ввести с консоли.

Пример подобного задания:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
 
int main(){
    float /*double*/ x,y1,y2,a;
    int n;
    cout<<"Enter x = "; cin>>x;
    cout<<"Enter n = "; cin>>n;
    y1=x*x*x*atan(x);
    if(x<=1){
        a=x*x*x*x; y2=a;
        for(int i=2; i<=n; i++){
                a= a*(-1)*x*x/(2*i-1);
                y2= y2+a;
                }
        cout<<"y1 = "<<y1<<endl;
        cout<<"y2 = "<<y2<<endl;
    }
    else cout<<"Error: you have a condition x<=1"<<endl;
    system("pause");
}
0
Миниатюры
Вычислить функцию с помощью разложения в ряд (число членов ряда и значение аргумента ввести с консоли)  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2016, 10:00
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычислить функцию с помощью разложения в ряд (число членов ряда и значение аргумента ввести с консоли) (C++):

вычислить функцию с помощью разложения в ряд.(Ряд Тейлора) - C++
Нужно написать программу по Ряду Тейлора.

Вычислить значение функции с помощью разложения в ряд Тейлора - C++
Составить программу для приближенного вычисления значения функции в точке х с помощью разложения в ряд Тейлора. Найти приближенное...

Помогите вычислить функции с помощью разложения в ряд! - C++
Где я нетак делаю? компилятор Dev-C++ #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; main() { float...

Вычислить с помощью разложения в ряд (программа с таблицами не работает) - C++
Я только начинаю изучать С++, и мне дали задание, но не могу понять почему не работает или не правильно составил #include &lt;stdio.h&gt; ...

Найти значение функции c заданной точностью с помощью разложения в ряд Тейлора - C++
Найти значение функции √(1+x) в точке х (-1≤x≤1) c заданной точностью с помощью разложения в ряд: √(1+x)=1+1/2 x-1/8 x^2+1/16 x^3-5/128...

С помощью разложения функции в ряд Тейлора разработать программу, вычисляющую значение функции sin(x) - C++
С помощью разложения функции в ряд Тейлора разработать программу, вычисляющую значение функции sin(x) с максимально возможной...

11
lolopop12
0 / 0 / 1
Регистрация: 20.01.2016
Сообщений: 50
13.09.2016, 14:46  [ТС] #2
Прошу помощи экспертов, у меня затруднения
0
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
13.09.2016, 15:21 #3
Я не доктор эксперт, но посмотреть могу.
C++
1
2
3
4
5
6
7
8
9
10
11
#include<iostream>
#include<cmath>
 
using namespace std;
 
int main(){
    double item = 1, sum = 1, x = 12; //x сам введёшь
    int n = 1000; //n — тоже
    for (int i=1;i<=n;sum+=item=-item*x/(2*i++));
    cout << sum << endl << exp(-x/2);
}
1
WalterWhile
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
Завершенные тесты: 1
13.09.2016, 15:25 #4
Если реализовывать именно это разложение, с факториалом, то вычисление факториала от n>20 невозможно с использованием базовых типов, так что, значение n должно быть от 1 до 20.
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
#include <iostream>
#include <math.h>
using namespace std;
 
long long factorial (int x)
{
    long long result=1;
    for(int i=1; i<=x; i++)
        result*=i;
    return result;
}
double func (double x, int n)
{
    double result=0;
    for(int i=0; i<n; i++)
    {
        result+=(1-2*(i%2))*pow(x, i)/(pow(2,i)*factorial(i));
    }
    return result;
}
 
int main()
{
    int n;
    double x;
    cout<<"n=";
    cin>>n;
    if(n>20||n<=0){
        cout<<"Incorrect value of n";
        return -1;
    }
    cout<<"x=";
    cin>>x;
    cout<<"f(x)="<<func(x, n)<<endl;
    cin>>x;
    return 0;
}
1
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
13.09.2016, 15:28 #5
Цитата Сообщение от WalterWhile Посмотреть сообщение
вычисление факториала от n>20 невозможно с использованием базовых типов
Да ладно. Никто не просит вычислять факториал.
0
WalterWhile
1 / 1 / 0
Регистрация: 30.01.2016
Сообщений: 6
Завершенные тесты: 1
13.09.2016, 15:35 #6
Цитата Сообщение от SpBerkut Посмотреть сообщение
Да ладно. Никто не просит вычислять факториал.
В формуле, что фигурирует в прикрепленном изображении, факториал присутствует. А реализовать надо разложение именно по этой формуле, как я понимаю, не упрощая и не меняя ее. Задание-то по программированию, а не по матану.
0
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
13.09.2016, 15:37 #7
Цитата Сообщение от WalterWhile Посмотреть сообщение
А реализовать надо разложение именно по этой формуле, как я понимаю, не упрощая и не меняя ее.
Реализуйте разложение для x = 32.
0
JokeR.BY
CAPITAL OF ROCK!
1273 / 700 / 573
Регистрация: 03.03.2010
Сообщений: 2,284
Завершенные тесты: 2
13.09.2016, 15:44 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
 
using namespace std;
 
const float EPS = 0.001;
 
int main()
{
    float x;
    cout << "Input x=";
    cin >> x;
    double sum = 0.0, si = -x / 2.0;
    unsigned int i = 1;
    while (abs(si) > EPS)
    {
        sum += si;
        si *= (-x / 2.0 / ++i);
        //cout << i << "   " << si << endl;
    }
    cout << "sum=" << sum << endl;
    return 0;
}
1
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
13.09.2016, 15:46 #9
JokeR.BY, тут нужно определённое количество членов посчитать, а не до точности.
0
JokeR.BY
CAPITAL OF ROCK!
1273 / 700 / 573
Регистрация: 03.03.2010
Сообщений: 2,284
Завершенные тесты: 2
13.09.2016, 15:54 #10
SpBerkut, суть принципиально не меняется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    float x;
    cout << "Input x=";
    cin >> x;
    double sum = 0.0, si = -x / 2.0;
    unsigned int n;
    cout << "Input n=";
    cin >> n;
    for (unsigned int i = 2; i <= n; ++i)
    {
        sum += si;
        si *= (-x / 2.0 / i);
        //cout << i << "   " << si << endl;
    }
    cout << "sum=" << sum << endl;
    return 0;
}
0
SpBerkut
Объявлятель переменных
908 / 234 / 113
Регистрация: 24.09.2011
Сообщений: 875
Завершенные тесты: 2
13.09.2016, 15:58 #11
JokeR.BY, ответ неверный. В 11-й строке sum = 1.0.
0
JokeR.BY
CAPITAL OF ROCK!
1273 / 700 / 573
Регистрация: 03.03.2010
Сообщений: 2,284
Завершенные тесты: 2
13.09.2016, 16:02 #12
SpBerkut, каюсь, не заметил, что ряд от нуля. вроде как итоговый вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
    float x;
    cout << "Input x=";
    cin >> x;
    double sum = 1.0, si = 1.0;
    unsigned int n;
    cout << "Input n=";
    cin >> n;
    for (unsigned int i = 1; i <= n; ++i)
    {
        si *= (-x / 2.0 / i);
        sum += si;
    }
    cout << "sum=" << sum << endl;
    cout << "  f=" << (1.0 / (pow(exp(x), 0.5))) << endl;
    return 0;
}
1
13.09.2016, 16:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.09.2016, 16:02
Привет! Вот еще темы с ответами:

Вычислить сумму первых N членов ряда, значения N и x ввести с клавиатуры - C++
y= sinx+1/1 + sinx+2/1+3 + sinx+3/1+3+1 + sinx+4/1+3+1+3 +... Контрольное значение: y = 6.0069 при x=1.38 и N=7 Контрольное...

Вычислить сумму первых N членов ряда, значения N и x ввести с клавиатуры - C++
помогите пожалуйста

Написать функцию, которая выводит на экран ряд чисел Фибоначчи до n. Число n принимается в качестве аргумента - C++
Кто знает как решить задачу на С++, при помощи рекурсии? Написать функцию, которая выводит на экран ряд чисел Фибоначчи до n. Число n...

Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью 0,0001 - C++
Ребята выручайте! 1. Дано действительное число x. Вычислить значение y с помощью стандартной функции и с помощью ряда с точностью...


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

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

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