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

Вычислить значения функций заданных разложением в ряд Тейлора

29.12.2024, 02:06. Показов 6639. Ответов 88
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите составить код функции с факториалом и экспонентой программированием в С++, не используя готовые математические функции.
Составить функцию в C++,
вывести на экран таблицу значений этой функции для x, изменяющегося от а до b с шагом h = (b-a)/10, если а = 0,1, b= 1,0 и k = 120. Готовые математические функции не использовать. Для вычисления факториала и экспоненты составить отдельные функции:

N!= 1 * 2 * 3*…*N , ⅇ^x=1+x+x^2/2!+x^3/3!+x^4/4!+⋯+x^n/n!+⋯+

Название: Screenshot_4.png
Просмотров: 305

Размер: 2.4 Кб

У меня код такой. Но я не уверена в его правильности
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
#include <iostream>
#include <iomanip>
#include <cmath>
 
// Функция для вычисления факториала
double factorial(int n) {
    double result = 1.0; // Используем double для избежания переполнения
    for (int i = 1; i <= n; ++i) {
        result *= i;
    }
    return result;
}
 
// Функция для вычисления экспоненты
double exponential(double x, int terms) {
    double result = 1.0; // Начальное значение для e^x
    double term = 1.0;   // Текущий член ряда
    for (int n = 1; n <= terms; ++n) {
        term *= x / n;   // Вычисляем n-й член
        result += term;  // Добавляем к результату
    }
    return result;
}
 
// Функция для вычисления y(x, k)
double y(double x, int k) {
    double sum = 0.0;
    double e_neg_x = exponential(x, k); // e^(x)
    for (int n = 0; n <= k; ++n) {
        sum += (pow(2, n) * pow(e_neg_x, n)) / factorial(n);
    }
    return sum;
}
 
int main() {
    double a = 0.1;
    double b = 1.0;
    int k = 120;
    double h = (b - a) / 10;
 
    std::cout << std::fixed << std::setprecision(6);
    std::cout << "x\t\t y(x, " << k << ")\n";
    std::cout << "-------------------------\n";
 
    for (double x = a; x <= b; x += h) {
        std::cout << x << "\t " << y(x, k) << "\n";
    }
 
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2024, 02:06
Ответы с готовыми решениями:

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

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

Вычислить значения функции, заданной разложением в ряд Тейлора
Формулы и задачу надо ПЕРЕПИСЫВАТЬ! Редактор формул внизу страницы

88
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,455
29.12.2024, 23:28
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Не соответствует условию.
я лишь показал, что ИИ такие задачи решает легко. Если надо по условию, то нужно в промт закинуть условие. А я делал иначе - кинул ему код с использованием готовых мат. функций из данной темы и просил их не использовать. В любом случае, роль посредника между ИИ и ТС я не брал, равно как нет никакого настроения писать заново или исправлять код ИИ. Ты можешь предложить ТС свой код.



Добавлено через 1 минуту

Не по теме:

Verevkin, ты в JNI разбираешься?

0
29.12.2024, 23:31

Не по теме:

Цитата Сообщение от Royal_X Посмотреть сообщение
ты в JNI разбираешься?
Нет.

0
 Аватар для abit
870 / 529 / 149
Регистрация: 03.02.2013
Сообщений: 1,858
29.12.2024, 23:31
Verevkin, ну как минимум толерантность страдает
1
29.12.2024, 23:33

Не по теме:

Цитата Сообщение от Verevkin Посмотреть сообщение
Нет.
ну вот, не прошел зачет) если честно, нужен был совет...

0
1 / 1 / 0
Регистрация: 28.11.2024
Сообщений: 53
29.12.2024, 23:35  [ТС]
Спасибо всем огромное!!!
Даже не ожидала, что моя задача вызовет такое бурное обсуждение, а у кого то даже ностальгию!
Код написан, результат есть, не уверена конечно, что на 100% правильный. Но будем надеяться что всё получится и зачет будет сдан!
СПАСИБО!!!!!!!!!!!!
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
29.12.2024, 23:39
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
Код написан, результат есть, не уверена конечно, что на 100% правильный.
Тебе ж надо сдать, а не чтоб потом с этой программой живые человеки работали.
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
Но будем надеяться что всё получится и зачет будет сдан!
Отпишись по результату, я за тебя порадуюсь.
Честно.

Добавлено через 1 минуту
Цитата Сообщение от abit Посмотреть сообщение
ну как минимум толерантность страдает
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,455
29.12.2024, 23:40
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
не уверена конечно, что на 100% правильный
результат 100% правильный. А вот код немного не соответствует условию, например, нужна отдельная функция для факториала, что бред. Вот так и скажи преподу "вам шашечки или ехать". Скажи, что ты сделала еще лучше, не согласившись с бредовым условием.
Можешь даже показать ему в комментарии, что ты умеешь создавать функции для факториала.
0
1 / 1 / 0
Регистрация: 28.11.2024
Сообщений: 53
29.12.2024, 23:49  [ТС]
Цитата Сообщение от Royal_X Посмотреть сообщение
результат 100% правильный. А вот код немного не соответствует условию, например, нужна отдельная функция для факториала, что бред. Вот так и скажи преподу "вам шашечки или ехать". Скажи, что ты сделала еще лучше, не согласившись с бредовым условием.
Можешь даже показать ему в комментарии, что ты умеешь создавать функции для факториала.
Боюсь преподавателю не понравятся "мои" умозаключения! Тем более по правде они не мои!
Мне хотя бы сдать зачет.

p.s. СПАСИБО ВАМ!!!!
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
30.12.2024, 04:23
Я чет не понимаю? Для n = 0 n! тоже будет равен 0, и программа на первом же шаге должна крашнуться с ошибкой "деление на ноль"?

А, сорян, отменяется, 0! оказывается равен 1. Кто бы мог подумать...

Добавлено через 9 минут
Цитата Сообщение от Royal_X Посмотреть сообщение
например, нужна отдельная функция для факториала, что бред.
Да почему бред то? Вычислить 120! в числах с плавающей запятой? Это будет 6,6895029134491270575881180540904e+198, и времени компьютерного это займет сущие пустяки. Если по условию нужно решить задачу тупо в лоб, и 120 раз вычислить факториал, почему бы не сделать это?
0
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,455
30.12.2024, 11:37
alexu_007, бред в том плане, что отдельно считать факториал не нужно, а всё вместе в одном цикле, как вот тут

C++
1
2
3
4
5
6
7
8
9
10
11
double func(double x, int k = 120) {
    double tmp = -calculate_exp(x); // Используем нашу реализацию exp(x)
    double memb = 1.0, sum = memb;
 
    for (int n = 1; n <= k; ++n) {
        memb *= 2 * tmp / n;
        sum += memb;
    }
 
    return sum;
}
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
30.12.2024, 15:40
Но в задании то написано, вычислить с помощью функций. Может это задание специально на написание функций. А следующее будет на оптимизацию предыдущего.

На ошибку топикастера указал TheCalligrapher во втором посте. Точность я взял по количеству значащих цифр в double, а сравнивал со стандартной функцией exp(x). Второе значение в функции double exponential(double x, double eps) не 1 и тем более не 120, а требуемая для нужной точности погрешность. Экспериментально подобрал это значение: 1e-14. Получилось вот так:

C++ (Qt)
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
// Функция для вычисления экспоненты
double exponential(double x, double eps)
{
    double result = 1.0; // Начальное значение для e^x
    double term = 1.0;   // Текущий член ряда
 
    for (int n = 1; fabs(term)>=eps; ++n)
    {
        term *= x / n;   // Вычисляем n-й член
        result += term;  // Добавляем к результату
    }
 
    return result;
}
 
 
void Widget::press_pbtn_01()
{
 
    double k = 0.19;
    ui->label_01->setText(QString::number(k));
 
    double x = exp(k);
    ui->label_02->setText(QString::number(x, 'g', 16));
 
    double sum = exponential(k, 1e-14);
    ui->label_03->setText(QString::number(sum, 'g', 16));
}
Миниатюры
Вычислить значения функций заданных разложением в ряд Тейлора  
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
30.12.2024, 15:42
Кстати, функция exponential написана талантливым человеком. Я проверил, необходимая точность достигается всего за 13 проходов цикла!
0
Модератор
Эксперт С++
 Аватар для zss
13789 / 10981 / 6492
Регистрация: 18.12.2011
Сообщений: 29,281
30.12.2024, 16:27
alexu_007, Это просто потому, что ряд быстро сходится.
1
Эксперт функциональных языков программированияЭксперт С++
 Аватар для Royal_X
6296 / 3018 / 1053
Регистрация: 01.06.2021
Сообщений: 11,455
30.12.2024, 17:14
alexu_007, добавлю к сказанному zss, что существует такое понятие как convergence rate, которое выражает скорость сходимости.



Так вот, у ряда Маклорена для exp(x) эта скорость, грубо говоря, факториальная. На фотке, к сожалению, не отображена такая скорость, но она быстрее квадратной, обозначенной красной линией.

alexu_007, тут никто в теме не говорил, что задание ТС сложно вычисляется. Говорили просто, что бредово решать отдельными функциями. Особенно, я не вижу смысла в отдельной функции для факториала, как того требует условие.
Но если хочешь помочь ТС, то никто не запрещает. Делай всё по условию.
1
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
30.12.2024, 19:27
Сама пусть делает, ей ошибку показали.
0
1 / 1 / 0
Регистрация: 28.11.2024
Сообщений: 53
01.01.2025, 19:13  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Сама пусть делает, ей ошибку показали.
Здравствуйте! Я сама не могу написать код, поскольку и не инженер, и не программист. А вы сможете?

p.s. но хотя бы знаю что 0! это 1

p.s. Вы - злой!
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
01.01.2025, 20:03
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
Я сама не могу написать код, поскольку и не инженер, и не программист. А вы сможете?
Я все могу. А вот вы зачем учитесь в техническом вузе?
Миниатюры
Вычислить значения функций заданных разложением в ряд Тейлора  
0
1 / 1 / 0
Регистрация: 28.11.2024
Сообщений: 53
01.01.2025, 20:22  [ТС]
Цитата Сообщение от alexu_007 Посмотреть сообщение
Я все могу. А вот вы зачем учитесь в техническом вузе?
Так получилось. Учусь. Надеюсь, что всё получится.

Ответ и у меня есть
0
Злостный нарушитель
 Аватар для Verevkin
10878 / 5817 / 1288
Регистрация: 12.03.2015
Сообщений: 26,855
01.01.2025, 20:43
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
Так получилось. Учусь. Надеюсь, что всё получится.
Ты ж здоровая девка, тебе работать надо... работать тебе надо... А ты ведёшь себя, как чёрт знает что.
0
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,316
01.01.2025, 20:46
Цитата Сообщение от Nelli Matveeva Посмотреть сообщение
Ответ и у меня есть
Это твой код из первого поста такой ответ выдает. Нужно только две ошибки исправить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.01.2025, 20:46

Вычислить значения функции заданной разложением в ряд Тейлора
Вычислить и вывести на экран значения функции в виде таблицы, заданной с помощью ряда Тейлора, на интервале от Хнач до Хкон с шагом dx и...

Вычислить значения функции заданной разложением в ряд Тейлора
Для каждого х, изменяющегося от а до b с шагом h, найти значения функции Y(x), суммы S(x) и Y(x)-S(x) и вывести в виде таблицы. Значения...

Вычисление функций разложением в ряд Тейлора
Формулы надо переписывать! Редактор внизу страницы

Вычисление функций разложением в ряд Тейлора
1. Напишите программу для вычисления значения функции, заданной с помощью ряда Тейлора, в точке Х с заданной точностью. 2. В дополнение...

Вычисление функций разложением в ряд Тейлора
. Написать функцию 1, которая для любого заданного Х вычисляет с заданной точностью e значение Y как сумму членов бесконечного ряда....


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи. Через несколько переработок от PHP кода к C89 (надеюсь, 89). Но довольно запутанно получилось. Код для Linux. Но если убрать time и то, что с ним. . .
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы Всем привет! Хочу поделиться свежим (и довольно. . .
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения: - добавлена многоязычность - добавлено снятие скриншотов - добавлено поддержание бафов хождения по воде (для жреца, дк и шамана) - и так, по. . .
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru