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

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

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

Вычисление функции разложением в ряд - C++

20.06.2014, 15:33. Просмотров 263. Ответов 0
Метки нет (Все метки)

Помогите пожалуйста, не могу добиться корректной работы проги.

Задание: Для динамического одномерного массива X из N (0<N≤20) элементов составить алгоритм и программу (консольное приложение на Си) нахождения суммы ряда с заданной точностью E (0<E<0.1) для каждого из элементов X. Использовать рекуррентные соотношения при вычислении очередного члена ряда.
Вычисление суммы Sum(Xi) заканчивается, если модуль очередного слагаемого оказывается меньше заданного значения точности (E), причем для этих рядов (при fabs(x)<1) абсолютная величина суммы всех отброшенных членов ряда при этом оказывается меньше E.
Для оценки правильности результата предусмотреть вычисление по контрольной формуле F(Xi).
Слагаемое следует считать составным (a(b±c)) и выводить рекуррентные соотношения для каждой составляющей отдельно:
ai+1 = ai * Coef1(x); bi+1 = bi * Coef2(x); ci+1 = ci * Coef3(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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
//---------------------------------------------------------------------------
#include <stdio.h>  // printf, scanf
#include <conio.h>  // getch
#include <math.h>   // fabs, pow, ceil\floor, log, log10, exp, sqrt
#include <stdlib.h>  // randomize, rand
#include <windows.h> // SetConsoleOutputCP(1251); SetConsoleCP(1251);
 
//---------------------------------------------------------------------------
const double xx[7] = {0.00001, -0.99, -1, -0.1, 0.1, 1, 0.99};
 
#pragma argsused
void main()
{
    int n,i,k,z;
    double e, m,a,b,c,sum,f, *x;
    SetConsoleOutputCP(1251);
    randomize();
 
    printf("Enter e=? "); // приглашение – шрифт Lucida Console нужен
    scanf("%lf", &e);  // ввод десятичного(%d) n
    if (e<1e-13 || e>0.11)
    {
        printf("Invalid e (0..0.1] \nPress any key");
        getch(); // ожидание нажатия клавиши
        return;  // выход из функции main
    }
    fflush(stdin);
 
    printf("Enter n=? "); // приглашение
    scanf("%d", &n);  // ввод десятичного(%d) n
    if (n<1 || n>20) {
        printf("Invalid n [1..20]! \nPress any key");
        getch(); // ожидание нажатия клавиши
        return;  // выход из функции main
    }
    fflush(stdin);
 
    x = new double [n];  // выделяем память для n элементов массива
 
    printf("Enter n=%d value X from (-1,+1):\n", n); // приглашение
    for (i = 0; i < n; i++)
    {     // ввод x[0]...x[n-1]
        scanf("%lf", &x[i]);       // типа long float (%lf)
 
        if (fabs(x[i])>=1)
        {
            x[i]=xx[rand() % 7];
            if (fabs(x[i])==1)
            {
                x[i]=x[i]*(rand()%100) /100;
                if (x[i]==0) x[i]=e; // ддя некоторых вариантов x=/=0
            }
            printf("invaid value transform in %15.10lf\n", x[i]);
        }
    }
 
    z = ceil(fabs(log(e)/log(10)))+1;
 
    printf("e = %*.*lf\n", z+2, z, e); // вывод e:(z+2):z
    printf("N |        X        |      Sum(X)     | K|       F(X)      |  |Sum(X)-F(X)|\n");
    for (i=1; i < 80; i++) printf("="); printf("\n");
    for (i = 0; i < n; i++)
    {
 
    // поиск суммы ряда
        a=pow(x[i],2);
        b=1;
        c=1;
        m=a*(b+c);
        sum =m;
        k=1;
        while ((fabs(m)>=e) && (k!=100))
        {
 
        a*=a*(-pow(x[i],2));
        b*=b*1/(k+1);
        c*=c*1/(2*k*(2*k+1));
        m*=a*(b+c);
            sum+=m;
            k++;
        };
 
        f= x[i]*sin(x[i])-exp(-pow(x[i],2))+1;
 
        printf("%2d|%17.*lf|%17.*lf|%2d|%17.*lf|%17.*lf\n",
            i+1, z, x[i],  z, sum,  k,    z, f,   z+2, fabs(sum-f));
    }
 
    delete [] x;
 
    printf("Press any key");
    getch();
    return;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2014, 15:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вычисление функции разложением в ряд (C++):

Вычисление функции разложением в ряд - C++
Здравствуйте, помогите написать программу пожалуйста. лекцию прослушал и не понимаю как. мой вариант на 1й фотографии нужно сделать по...

Вычисление функции разложением её в ряд - C++
Привет,народ) Помогите пожалуйста написать код для данной задачи:help: Заранее спасибо:) П.5.18 и 5.19 Правил 18. Запрещено размещать...

Вычисление функции,разложением ее в ряд - C++
Помогите, пожалуйста, в решении задачи. НИЧЕГО НЕ ПОЛУЧАЕТСЯ Написать программу нахождения суммы ряда с заданной точностью ε. ...

1.5 Вычисление функции разложением её в ряд - C++
Составить алгоритм и программу нахождения суммы ряда с заданной точностью Е. Использовать рекуррентные соотношения при вычислении...

Вычисление функции разложением в ряд - C++
1. Составить алгоритм и написать программу вычисления следующих сумм. 2. Составить программу вычисления суммы первых n=10; 20; 30 членов...

Вычисление функции разложением в ряд - C++
Доброго времени суток,народ...Помогите найти ошибку:help: #include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cmath&gt; using...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2014, 15:33
Привет! Вот еще темы с ответами:

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

Вычисление функции разложением в ряд Тейлора - C++
Прошу помощи

Вычисление значения функции разложением ее в ряд - C++
Составить программу вычисления значений функции в точках хi , хi = х0 + i х, i = 0,1, …, воспользовавшись формулами разложения элементарных...

Вычисление значения функции разложением в ряд - C++
Составить программу вычисления значения функции, разложенной в ряд (сумму ряда). В формулах E – заданная степень точности; n – порядковый...


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

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

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