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

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

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

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

17.11.2014, 12:37. Просмотров 425. Ответов 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;
}


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

Спасибо за внимание.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
17.11.2014, 13:06     Разложение функции в ряд и С++ код #2
а конкретно?
CovCek
6 / 6 / 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);
Миниатюры
Разложение функции в ряд и С++ код   Разложение функции в ряд и С++ код   Разложение функции в ряд и С++ код  

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

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

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

PS: поясню, было единственное нажатие enter - ввод 0.5
Миниатюры
Разложение функции в ряд и С++ код  
Изображения
 
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.11.2014, 19:32     Разложение функции в ряд и С++ код
Еще ссылки по теме:
Разложение функции в ряд Тейлора C++
Разложение функции в ряд Тейлора C++
Разложение функции в ряд с заданной точностью! C++
Разложение функции в ряд, частичная сумма C++
разложение функции в степенной ряд (acos) C++

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

Или воспользуйтесь поиском по форуму:
CovCek
6 / 6 / 4
Регистрация: 23.05.2014
Сообщений: 184
17.11.2014, 19:32  [ТС]     Разложение функции в ряд и С++ код #9
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
чё? За базар отвечаешь? Или сам выдумал это чисто гипотетически?
А что насчет кода?
Yandex
Объявления
17.11.2014, 19:32     Разложение функции в ряд и С++ код
Ответ Создать тему
Опции темы

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