Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
romaklayt
0 / 0 / 1
Регистрация: 05.10.2015
Сообщений: 26
#1

Разложение в ряд функции - C++

09.11.2015, 22:05. Просмотров 205. Ответов 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
34
35
36
37
38
39
40
41
42
43
44
#include <stdafx.h> 
#include <iostream>
#include <math.h>
#include <iomanip>
using namespace std;
typedef double(*uf)(double, double, int &);
void tabl(double, double, double, double, uf); 
double y(double, double, int &); 
double s(double, double, int &);
int main()
{
    cout << setw(8) << "x" << setw(15) << "y(x)" << setw(10) << "k" << endl;
    tabl(0.1,0.8, 0.1, pow(10,-6), y);
    cout<< endl;
    cout<< setw(8)<< "x" << setw(15) << "s(x)"<< setw(10)<< "k" << endl;
    tabl(0.1, 0.8,0.1,pow(10,-6), s);
    return 0;
}
void tabl(double a, double b, double h, double eps, uf fun)
    {
        int k = 0; double sum;
        for (double x = a; x < b + h / 2; x += h)
        {
            sum = fun(x, eps, k); 
            cout << setw(8) << x << setw(15) << sum << setw(10) << k << endl;
        }
    }
double y(double x, double eps, int &k)
{
    return 1/(1+x);
}
double s(double x, double eps, int &k)
{
    double a, m, sum;
    sum = m = x;
    k = 1;
    while (fabs(m) > eps)
    {
        m = pow(-1,k)*pow(x,k);
        sum += m;
        k++;
    }
    return sum;
}
суть в том, что y и s должны быть одинаковыми, но y считается правильно , а s - нет. если нужно условие то вот:

Вывести на экран таблицу значений функции и ее разложения в ряд для х, изменяющегося от а до b с шагом h = (b - а)/10. Расчет у(х) и s(x) поместить в функцию. Использовать прототипы функций. Параметры передавать по указателю. Расчет функции s(x) выполнить с заданной точностью http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon . a=1.9, b=2.9, y(x)=1/(1+x), http://www.cyberforum.ru/cgi-bin/latex.cgi?s(x)=\sum_{n=0}^{end} {(-1)}^{n}*{x}^{n}
http://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon = {10}^{-6}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2015, 22:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разложение в ряд функции (C++):

Вычисление функции через разложение в ряд (Ряд Тейлора)
Привет всем. Задание такого плана: Вычислить и вывести на экран в виде...

Разложение функции в ряд
Помогите пожалуйста найти сумму ряда у c точностью до члена ряда меньшего...

Разложение функции в ряд
Найти сумму ряда с точностью до члена ряда, меньшего 0.0001 для заданного...

разложение в ряд функции
Прошу помощи, не могу разобраться где у меня ошибка....

Дано разложение функции в ряд Тейлора. Вычислить для значения x и точности Eps точное значение функции
Дано разложение функции y(x) в ряд Тейлора. Составить программу, вычисляющую...

Разложение функции в ряд и С++ код
Доброго времени суток. было у меня задание: Используя разложение функции...

2
zss
Модератор
Эксперт С++
6950 / 6512 / 4133
Регистрация: 18.12.2011
Сообщений: 17,173
Завершенные тесты: 1
09.11.2015, 22:15 #2
Разложения в ряд так не считают
Вычисление функций разложением в ряд Тейлора

Добавлено через 50 секунд
Цитата Сообщение от romaklayt Посмотреть сообщение
pow(10,-6)
Действительные числа пишут так
C++
1
1e-6
0
romaklayt
0 / 0 / 1
Регистрация: 05.10.2015
Сообщений: 26
09.11.2015, 23:06  [ТС] #3
переделал программу, но значение все равно не выходит одинаковым
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
#include <stdafx.h> 
#include <iostream>
#include <math.h>
using namespace std;
double mycos(double *, double *);
double mysin(double *);
double a = 0.15, j = pow(10, -6), b = 0.95, m, v,h=0.1;
int main()
{
    for (double x = a; x < b; x += h)
    {
        m = mycos(&x,&j);
        v = mysin(&x);
        cout << x << " " << v << " " << m << endl;
    }
}
double mycos(double *x, double *eps)
{
    double s, an;
    int n;
    n = 0;
    an = 1;
    s = 0;
    while (fabs(an)>*eps)
    {
        an *= pow(-1, n)*pow(*x, n);
        s += an;
        n++;
        
    }
    return s;
}
double mysin(double *x)
{
    double s;
    int n;
    s = 1 / (1 + *x);
    return s;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2015, 23:06
Привет! Вот еще темы с решениями:

Разложение функции в ряд Тейлора
помогите найти ошибку, нужно найти ряд тэйлора скомпилировалось все правильно,...

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

Разложение функции в степенной ряд
Ребят,подсобите пожалуйста. Учусь на вечерней форме, ничего не успеваю + с...

Разложение функции в ряд Тейлора
Дано вещественное число X(|X|&lt;1) и целое число N(N&gt;0). Найти значение...


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

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

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