Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для oobarbazanoo
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835

Тестирование функции интеграла Гаусса

30.09.2017, 17:31. Показов 1502. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, как тестирвоать функцию интеграла Гаусса.

Вот сама функция.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
double gaussianIntegral(double x)
{
    double res(x);
    double numerator(x);
    unsigned int factorial(1);
    for(unsigned int i(1), k(3); numerator/(k*factorial) > kEps; ++i, k+=2)
    {
        numerator*=(-x*x);
        factorial*=i;
        res+=numerator/(k*factorial);
    }
    return res;
}
Вот что она значит.
https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{0}^{x}{e}^{{-t}^{2}}dt = x - \frac{{x}^{3}}{3*1!} + \frac{{x}^{5}}{5*2!} - \frac{{x}^{7}}{7*3!} + ...

Хотелось бы как-нибудь перед возвращением результатам написать
C
1
assert(res == ?);
и вместо знака вопроса правильное значение.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.09.2017, 17:31
Ответы с готовыми решениями:

Вычисление интеграла по квадратурной формуле Гаусса
Помогите, пожалуйста. Не нашел ничего схожего к требуемому заданию. Необходимо вычислить интеграл по квадратурной формуле Гаусса: ...

Нахождение определенного интеграла методом Гаусса
Помогите мне пожалуйста... Очень надо, горю...........

Вычисление определенного интеграла методом Гаусса СИ
хелп

3
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
30.09.2017, 18:27
oobarbazanoo, во-первых, вы неправильно функцию написали, у вас переполнение будет при отдельном расчете факториала,надо как-то так :
C++
1
2
3
4
5
6
7
8
9
10
11
double gaussianIntegral(double x)
{
    double res(x);
    double numerator(x);
    for(unsigned int i(1), k(3); numerator/(k*i) > kEps; ++i, k+=2)
    {
        numerator*=(-x*x) / i;       
        res+=numerator/k;
    }
    return res;
}
во-вторых, вашей функцией вообще невозможно ничего посичтать, поскольку ряд получается знакочередующимся с возрастающим порядком слагаемых (просто выведите их на экран и посмотрите, что там происходит).
А вообще эта функция должна стремится с ростом x к https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac { \sqrt \pi } 2 .
1
 Аватар для oobarbazanoo
7 / 30 / 9
Регистрация: 13.05.2015
Сообщений: 1,835
01.10.2017, 11:24  [ТС]
woldemas, а в чём проблема? Почему ряд не стримтся к нужному значению? Подскажите, пожалуйста.
0
677 / 479 / 216
Регистрация: 06.09.2013
Сообщений: 1,312
01.10.2017, 13:30
Лучший ответ Сообщение было отмечено oobarbazanoo как решение

Решение

oobarbazanoo, там еще одна ошибка, сравнивать точность надо по модулю:
C++
1
2
3
4
5
6
7
8
9
10
11
double gaussianIntegral(double x)
{
    double res(x);
    double numerator(x);
    for(unsigned int i(1), k(3); std::abs(numerator) > 1e-18; ++i, k+=2)
    {
        numerator*=(-x*x) / i;
        res+=numerator/k;
    }
    return res;
}
В этом варианте ряд сходится для небольших значений x <= 5 и дает верные результаты, на самом деле при x >= 5 считать особого смысла нет, поскольку интеграл уже практически не изменяется.
Почему при большом x дает неверные результаты? Видимо, теряется точность при сложении чисел с высоким порядком, т.к. слагаемые вырастают до довольно больших величин.
Вообще рядом эту функцию считать, очевидно, не оптимально, попробуйте лучше квадаратурными формулами, там такого явления не будет, вроде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2017, 13:30
Помогаю со студенческими работами здесь

Составить функции вычисления определённого интеграла от функции f(x)
Составить функции вычисления определённого интеграла от функции f(x) с использованием формул (Рис1). С применением этих формул вычислить...

unit-тестирование функции
Заполнить массив n´m нулями и единицами «цепочкой квадратов». Размер квадрата задается. Тест: K = 4 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0...

Есть ли встроенные функции для вычисления интеграла?
Добрый вечер, подскажите есть ли какие-то функции встроены, по вычислению интеграла ? Или код надо самому прописывать ?

Разработать программу для вычисления дифференциала и интеграла функции
Нужно разработать программу для вычисления дифференциала и интеграла функции с помощью одного базового класса, а также вложенных классов...

Вычисление интеграла методом Гаусса
Написать и отладить программу вычисления интеграла указанным методом двумя способами – по заданному количеству разбиений n и заданной...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru