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

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

Войти
Регистрация
Восстановить пароль
 
CovCek
6 / 5 / 4
Регистрация: 23.05.2014
Сообщений: 184
#1

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

17.11.2014, 12:37. Просмотров 539. Ответов 8
Метки нет (Все метки)

Доброго времени суток.

было у меня задание:
Кликните здесь для просмотра всего текста

Используя разложение функции в ряд, вычислить значение функции тремя способами:
Точное значение (f_a (x)), используя библиотечные математические функции;
Приближенное (f_ε (x)) с точностью ε, указываемой пользователем, т.е. |〖f_a (x)-f〗_ε (x)|≤ε.
Приближенное (f_k (x)) для заданного числа членов ряда k (k≥3), указанным пользователем, вычисляя погрешность на каждом шаге ε=〖f_a (x)-f〗_ε (x).


Написал вот такой вот код:
Кликните здесь для просмотра всего текста
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian");
 
    float x, E, U, Fa, Fe; //U = x, Fa = sin(x), Fe = 1 + U
    int i = 2, k; char c;
    do {
        printf("Введите X:");
        scanf_s("%f", &x);
 
        printf("Введите погрешность E:");
        scanf_s("%f", &E);
 
        if (abs(x) < 1){ printf("Введено неверное значение x.\n"); }
        if (E > 1 || E < 0) { printf("Введено неверное значение E.\n"); }
    } while (abs(x) < 1 || E > 1 || E < 0);
 
    U = x, Fa = sin(x), Fe = 1 + U;
 
    printf("Хотите лично ввести переменную K? (Y/N)\n");
    std::cin >> c;
 
    if (c == 'Y' || c == 'y') {
 
        do{
            printf("Введите переменную K:\n");
            scanf_s("%d", &k);
            if (k <= 3) { printf("Неверное значение K.\n"); }
        } while (k <= 3);
        printf("i=%-5d Fa=%-10.5f Fe=%-10.5f  E=%-10.5f \n", i, Fa, Fe, abs(Fa - Fe));
        i = 3;
        do
        {
            U = U*(-1)*((x*x) / ((2 * i - 1)*(2 * i - 2)));
            Fe = Fe + U;
            printf("i=%-5d Fa=%-10.5f Fe=%-10.5f E=%-10.5f\n", i, Fa, Fe, abs(Fa - Fe));
            i++;
        } while (i <= k);
 
    }
    else
    {
        printf("i=%-5d Fa=%-10.5f Fe=%-10.5f  E=%-10.5f \n", i, Fa, Fe, abs(Fa - Fe));
        i = 3;
 
        while (fabs(Fa - Fe) <= E);
        {
            U = U*(-1)*((x*x) / ((2 * i - 1)*(2 * i - 2)));
            Fe = Fe + U;
            printf("i=%-5d Fa=%-10.5f Fe=%-10.5f E=%-10.5f\n", i, Fa, Fe, abs(Fa - Fe));
            i++;
        }
    }
    system("pause");
    return 0;
}


Считает почему то неправильно. Подскажите в чем ошибка.

Спасибо за внимание.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.11.2014, 12:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Разложение функции в ряд и С++ код (C++):

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

Разложение в ряд Тейлора(код есть, но ошибочный) - C++
Передо мной стоит такая задача: http://imagepost.ru/?v=238/uBbB7Cp.png Я написала программу. Ввожу значения переменных, после чего...

разложение в ряд функции - C++
Прошу помощи, не могу разобраться где у меня ошибка. http://www.picshare.ru/uploads/121026/gs931LH4x8.jpg Нужно выполнить разложение в...

Разложение в ряд функции - C++
#include &lt;stdafx.h&gt; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; typedef double(*uf)(double,...

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

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

8
Kuzia domovenok
2128 / 1956 / 195
Регистрация: 25.03.2012
Сообщений: 6,808
Записей в блоге: 1
17.11.2014, 13:06 #2
а конкретно?
0
CovCek
6 / 5 / 4
Регистрация: 23.05.2014
Сообщений: 184
17.11.2014, 15:29  [ТС] #3
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
а конкретно?
ну вот к примеру, при разных значениях нужной погрешности, считает только до i=3 хотя должен больше.

мне кажется ошибка в формуле разложения в ряд.

Кликните здесь для просмотра всего текста

да и вот в 20, 21, 21 у меня ошибочка была должно быть так:
C++
1
2
3
if (abs(x) > 1){ printf("Введено неверное значение x.\n"); }
        if (E > 1 || E < 0) { printf("Введено неверное значение E.\n"); }
    } while (abs(x) > 1 || E > 1 || E < 0);
0
Миниатюры
Разложение функции в ряд и С++ код   Разложение функции в ряд и С++ код   Разложение функции в ряд и С++ код  

Kuzia domovenok
2128 / 1956 / 195
Регистрация: 25.03.2012
Сообщений: 6,808
Записей в блоге: 1
17.11.2014, 17:18 #4
кто тебя учил вводить десятичные дроби через запятую? Первый раз программу пишешь что ли? Все пендосы и гейропейцы вводят десятичные дроби через точку. Приходится привыкать к этому. Я как впервые за комп сел - стал их через точку вводить.
0
Andrej
И целого heap'а мало
94 / 55 / 9
Регистрация: 31.07.2014
Сообщений: 291
17.11.2014, 17:20 #5
CovCek, навсегда забудь о существовании float'ов, double!
0
CovCek
6 / 5 / 4
Регистрация: 23.05.2014
Сообщений: 184
17.11.2014, 18:36  [ТС] #6
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
кто тебя учил вводить десятичные дроби через запятую?
знаю я про точку. но здесь она не будет работать из-за
C++
1
setlocale(LC_ALL, "Russian");

Цитата Сообщение от Andrej Посмотреть сообщение
навсегда забудь о существовании float'ов, double!
а здесь то в чем я провинился?
0
Kuzia domovenok
2128 / 1956 / 195
Регистрация: 25.03.2012
Сообщений: 6,808
Записей в блоге: 1
17.11.2014, 18:56 #7
Цитата Сообщение от CovCek Посмотреть сообщение
знаю я про точку. но здесь она не будет работать из-за
setlocale(LC_ALL, "Russian");
чё? За базар отвечаешь? Или сам выдумал это чисто гипотетически?
0
CovCek
6 / 5 / 4
Регистрация: 23.05.2014
Сообщений: 184
17.11.2014, 19:03  [ТС] #8
А на слово уже и верить нельзя?
________________________________________

Рисунок 1:
Ввод с точкой (.)
Рисунок 2:
ну там все надеюсь понятно.

PS: поясню, было единственное нажатие enter - ввод 0.5
0
Миниатюры
Разложение функции в ряд и С++ код  
Изображения
 
CovCek
6 / 5 / 4
Регистрация: 23.05.2014
Сообщений: 184
17.11.2014, 19:32  [ТС] #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
чё? За базар отвечаешь? Или сам выдумал это чисто гипотетически?
А что насчет кода?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 19:32
Привет! Вот еще темы с ответами:

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

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

Разложение функции в ряд Тейлора - C++
Дано вещественное число X(|X|&lt;1) и целое число N(N&gt;0). Найти значение выражения: 1 + x/2 - (1*x^3)/(2*3) + (1*3*x^5)/(2*4*5) + ... +...

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


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

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

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