Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30

Программно-алгоритмический реализация расписания функции в ряд Тейлора

11.06.2013, 21:12. Показов 1880. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задания расчетно-графической работы «Программно-алгоритмический реализация расписания функции в ряд Тейлора» заключается в проведении программной реализации расчета приблизительного значения функции y, разложив функцию f (x) в ряд Тейлора, при этом необходимо вывести и применить рекуррентное отношение для расчета общей части для каждого слагаемого ряда или его части.
Исходными параметрами задач является аргумент функции, изменяется в диапазоне [Xbegin, Xend] с шагом Xdelta, и точность (допустимая погрешность) расчетов е, определяющая условие завершения рекурсивного расчета.
Само условие прикреплено в вордовском документе. Спасибо за помощь.
Миниатюры
Программно-алгоритмический реализация расписания функции в ряд Тейлора  
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.06.2013, 21:12
Ответы с готовыми решениями:

Программно-алгоритмический реализация расписания функции в ряд Тейлора
«Программно-алгоритмический реализация расписания функции в ряд Тейлора» заключается в проведении программной реализации расчета...

Программно-алгоритмическая реализация разложения функции в ряд Тейлора
#include <stdio.h> #include <conio.h> #include <locale.h> #include <math.h> int fact(int n) { return ((n==0 || n==1) ? 1...

Програмно-алгоритмическая реализация розкладу функции в ряд Тейлора
..... полягає в проведенні програмної реалізації розрахунку приблизного значення функції y, розклавши функцію f(x) в ряд Тейлора, при цьому...

3
Заблокирован
13.06.2013, 18:42
У меня такая же программа. Тоже интересно как ее писать.
1
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 30
13.06.2013, 22:06  [ТС]
ап теме
0
134 / 132 / 51
Регистрация: 25.05.2013
Сообщений: 233
15.06.2013, 02:10
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
//============================================================================
// Name        : taylor.cpp
// Author      : UranFlex
// Version     : 0.1 alpha
// Copyright   : GNU GPL
// Description : Задания расчетно-графической работы «Программно-алгоритмическая реализация расписания функции в ряд Тейлора»
//               заключается в проведении программной реализации расчета приблизительного значения функции y, разложив функцию f (x) в ряд Тейлора,
//               при этом необходимо вывести и применить рекуррентное отношение для расчета общей части для каждого слагаемого ряда или его части.
//               Исходными параметрами задач является аргумент функции, изменяется в диапазоне [ xBegin, xEnd ] с шагом xDelta,
//               и точность (допустимая погрешность) расчетов epsilon, определяющая условие завершения рекурсивного расчета.
//               Примечание 1 : Функция cos^2( x ) и ряд Тейлора в графическом файле.
//               Примечание 2 : Вводимые xBegin и xEnd - это значения в радианной мере.
//               Примечание 3 : cos^2( pi / 2 ) == 0 - хоть это и так, все же если попытаться выполнить следующий оператор
//                  cout << cos( M_PI_2 ) * cos( M_PI_2 ) << endl; - то в выводе мы не увидим просто 0.
//                  А увидим мы очень маленькое число и очень близкое к 0. Т.е. почти 0.
//                  Это особенность иррациональных чисел вроде числа ПИ, а также особенность представления чисел в памяти компьютера.
//                  В связи с этими особенностями и использованы манипулятор потока setprecision и флаг форматирования fixed.
//               C++, Ansi-style
//============================================================================
 
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
// функция считает факториал целого числа
long double Fact( long n );
// функция считает приближенно cos^2( x ) при помощи ряда Тейлора
// - значение x
// - точность вычислений
// - флаг, который определяет рекурсивно ли вызвана функция или впервые для данного x
long double Calc( long double x, const long double e, bool flagNew = true);
 
int main() {
 
     double xBegin, xEnd; // начальное и конечное значения x
     unsigned count; // количество вычисляемых значений на отрезке от начального до конечного значения x [ xBegin, xEnd ]
     double epsilon; // точность вычисления
 
     // запрашиваем у пользователя исходные данные
     cout << "Введите начальное и конечное значения x ( в радианах )" << endl;
     cin >> xBegin >> xEnd;
 
     cout << "Введите количество вычисляемых значений" << endl;
     cin >> count;
 
     cout << "Введите точность вычислений" << endl;
     cin >> epsilon;
 
     const double xDelta = ( xEnd - xBegin ) / ( count - 1 ); // находим шаг для вычислений
     cout << "Шаг для вычислений " << xDelta << "( радиан )" << endl;
 
     // в цикле вызываем функцию для рассчета очередного значения начиная с xBegin и заканчивая xEnd - xDelta элементом
     for ( unsigned i = 0; i < count - 1; ++i )
     cout << "X" << i + 1 << " = " << setprecision( 3 ) << Calc( xBegin + xDelta * i, epsilon ) << endl;
 
     // значение функции Calc( xEnd ) я решил вычислить отдельно, так как работаю с плавающей точкой
     // и при суммировании в цикле может быть неточность при вычислении граничного значения xEnd.
     cout << "X" << count << " = " << setprecision( 3 ) << fixed << Calc( xEnd, epsilon ) << endl;
 
 
    return 0;
}
 
long double Calc( long double x, const long double e, bool flagNew ) {
    static long double p; // степень
    static int koef; // для знака + или -
    // если функцию вызвали в первый раз - т.е. нерекурсивно
    if ( flagNew ){ // то устанавливаем начальные значения степени и коэффициента
        koef = 1;
        p = 2.0;
    }
    // для того чтобы в следующем операторе в вычислениях с правой стороны от знака "="
    // поменять знак очереднго элемент ряда на противоположенный знаку, который был в пердыдущем вычислении
    koef *= -1;
 
    // вычисляем очередной элемент ряда
    long double res = ( pow( x, p ) * pow( 2.0L, p - 1 ) / Fact( p ) ) * koef;
 
    // проверка на окончание рекурсии
    if ( fabs( res ) <= e ) // если очередной элемент ряда по модулю менее или равен epsilon
        return 1 + res; // то возвращаем значение и прерываем рекурсию
    else { // а если не
        p += 2.0; // то увеличиваем степень
        // прибавляем к очередному элементу ряда следующий элемент ряда, который будет вычислен рекурсивно
        return res + Calc( x, e, false );
    }
 
}
 
long double Fact( long n ) {
    return n > 0 ? n * Fact( n - 1 ) : 1;
}
Примеры работы программы.
1.
Кликните здесь для просмотра всего текста
Введите начальное и конечное значения x ( в радианах )
0
1.57079632679
Введите количество вычисляемых значений
2
Введите точность вычислений
0.01
Шаг для вычислений 1.5708( радиан )
X1 = 1
X2 = 0.000


2.
Кликните здесь для просмотра всего текста
Введите начальное и конечное значения x ( в радианах )
0
6.28318530718
Введите количество вычисляемых значений
10
Введите точность вычислений
0.0001
Шаг для вычислений 0.698132( радиан )
X1 = 1
X2 = 0.587
X3 = 0.0302
X4 = 0.25
X5 = 0.883
X6 = 0.883
X7 = 0.25
X8 = 0.0302
X9 = 0.587
X10 = 1.000


3. ( с низкой точностью )
Кликните здесь для просмотра всего текста
Введите начальное и конечное значения x ( в радианах )
-3.14159265359
0
Введите количество вычисляемых значений
13
Введите точность вычислений
0.1
Шаг для вычислений 0.261799( радиан )
X1 = 0.998
X2 = 0.937
X3 = 0.743
X4 = 0.499
X5 = 0.253
X6 = 0.0613
X7 = -0.000915
X8 = 0.069
X9 = 0.246
X10 = 0.5
X11 = 0.751
X12 = 0.931
X13 = 1.000


Пояснение к примерам
Кликните здесь для просмотра всего текста
1.57079632679 = π / 2
6.28318530718 = 2 * π
3.14159265359 = π
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.06.2013, 02:10
Помогаю со студенческими работами здесь

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

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

Функции ряд Тейлора
Не могу разобраться .

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

Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции
Распечатать таблицы значений функций cox (x) и на отрезке с шагом h, развив функции в ряд Тейлора и используя указатели на функции.


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru