Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/48: Рейтинг темы: голосов - 48, средняя оценка - 4.77
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279

Интеграл Гаусса в ряд

14.10.2011, 14:40. Показов 8850. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите запрограммировать интеграл Гаусса за разложением его в ряд.

Наброски сделал, но не знаю правильно ли.

C++
1
2
3
4
5
6
7
8
9
10
double gauss(double x) 
{   double t=x,k=1,s=t,f=1,i=1,eps=0.000000001;
do {
    f=f*i;
    k=k+2; t=-t*x*x/k*f;
    s=s+t;
    i++;
}while(t>eps);
return s;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.10.2011, 14:40
Ответы с готовыми решениями:

Определённый интеграл методом Гаусса
Составить программу вычисления определенного интеграла с автоматическим выбором шага интегрирования. Расчет интеграла различными методами,...

Вычислить двойной интеграл методом Гаусса
Неправильный результат выдаёт. Помогите найти в чём ошибка. (Visual C++ 2008) #include "stdafx.h" #include...

Интеграл Гаусса
Здравствуйте форумчане, препод задал написать программу на паскале "Вычислить интеграл функции sqr(x)-5*x+6 на паскале, сделать ввод...

5
 Аватар для aeshes
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 15:00
Лучший ответ Сообщение было отмечено как решение

Решение

вот тут
C++
1
t=-t*x*x/k*f;
вместо деления на факториал f умножаешь на него
и строка s=s+t; должна быть первой в цикле, иначе ты не прибавляешь первое слагаемое никогда

твое слагаемое t меняет знак и если ты сравниваешь с точностью именно его, а не модуль, то цикл закончится на первом же проходе (любое отрицательное число < eps)

вот так можно вычислить с использованием общего рекуррентного множителя данную формулу, если использовать запись ряда вида https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i=0}^{\propto} \frac{{(-1)}^{i}{x}^{2i+1} }{(2i+1) i!}

C++
1
2
3
4
5
6
7
8
9
10
double gauss(double x) 
{       
    double t=x,i=0,eps=0.000000001, s=0;
    do {
        s+=t;
        t*=-x*x*(2*i+1)/(2*i+3)/(i+1);     
        i++;
}while(fabs(t)>eps);
return s;
}
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.10.2011, 15:36
aeshes,
Цитата Сообщение от aeshes Посмотреть сообщение
double t=x,i=0,eps=0.000000001, s=0;
* * do {
* * * * s+=t;
* * * * t*=-x*x*(2*i+1)/(2*i+3)/(i+1); * *
* * * * i++;
- ну и где же здесь (-1)^i ???
да и это некорректно
Цитата Сообщение от aeshes Посмотреть сообщение
*(2*i+1)
по вашему x^(2*i+1) = x^2*(2*i + 1) может всё-таки pow(x,2*i + 1) надо, м???!

Добавлено через 9 минут
Цитата Сообщение от aeshes Посмотреть сообщение
while(fabs(t)>eps)
- такое условие окончания не означает
Цитата Сообщение от aeshes Посмотреть сообщение
с точностью именно его
нужно брать разность | X[i + 1] - X[i] | < eps
Точность - это разность между соседними членами!
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.10.2011, 16:27
Вот моя Си реализация
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
#include <stdio.h>
#include <math.h>
 
double gauss(double x, double eps)
{
    long i = 1;
    double xi   = x;
    double xi_1 = (-1)*x*x*(xi/1.0*i)*(2*(i - 1) + 1.0)/(2*i + 1.0);
    double sum = xi;
    double buf = fabs(xi_1 - xi);
    while((i++) && eps < fabs(xi_1 - xi))
    {
        sum  += xi_1;
        xi   =  xi_1;
        xi_1 *= (-1)*(x*x)*(xi/1.0*i)*(2*(i - 1) + 1.0)/(2*i + 1.0);
        printf("%d: %lf\n",i, (buf = fabs(xi_1 - xi)));
    }
    return sum;
}
 
int main()
{
    double x = 0, eps = 0;
    int iMENU = 1;
    do
    {
        printf("Enter x : ");scanf("%lf",&x);
        printf("Enter e : ");scanf("%lf",&eps);
        printf("ANSWER  : %lf\n",gauss(x, eps));
        printf("Enter 1 for new input : ");
        scanf("%d",&iMENU);
    }
    while(iMENU == 1);
    return 0;
}
Миниатюры
Интеграл Гаусса в ряд  
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
14.10.2011, 16:30
aeshes, прошу прощения за своё это выссказывание
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- ну и где же здесь (-1)^i ???
да и это некорректно
Сообщение от aeshes
*(2*i+1)
по вашему x^(2*i+1) = x^2*(2*i + 1) может всё-таки pow(x,2*i + 1) надо, м???!
- я понял что вы каждый раз домножение элемента использовали, однако на счёт стоп условия

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(fabs(t)>eps)
- такое условие окончания не означает
Сообщение от aeshes
с точностью именно его
нужно брать разность | X[i + 1] - X[i] | < eps
Точность - это разность между соседними членами!
- всё в силе
0
 Аватар для aeshes
448 / 211 / 21
Регистрация: 07.10.2011
Сообщений: 462
14.10.2011, 16:54
-=ЮрА=-, я использую следующее окончание вычислительного процесса для рядов: если текущее слагаемое по модулю меньше эпсилон, то можно вычисления заканчивать. Это типичное условие при вычислении сходящихся рядов, у которых каждое следующее слагаемое меньше предыдущего по модулю. А этот ряд сходится. t - собственно слагаемое. А точность - это разность между соседними значениями суммы

Разность между двумя членами имеет смысл проверять, если нет уверенности в сходимости ряда, но тогда собственно нужно еще ограничение на максимальное число итераций, потому что в расходящемся ряде ни мое, ни ваше условие может не выполниться. Например, ряд https://www.cyberforum.ru/cgi-bin/latex.cgi?\sum_{i=0}^{\propto } {x}^{i} при х=1, при вашем условии закончит вычисления на второй итерации (первое слагаемое =1, второе слагаемое равно 1, разность равна 0, точность достигнута). При моем условии вообще не остановится, потому что при х=1 расходится, слагаемые к нулю не стремятся. Поэтому, по-хорошему, нужно сочетать одно из условий окончания вычисления с проверкой на максимально допустимое число итераций

Это не претензия, просто делюсь тем, чему нас учили в универе
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.10.2011, 16:54
Помогаю со студенческими работами здесь

Определенный интеграл методом Гаусса
Подскажите пожалуйста алгоритм вычисления определенного интеграла методом Гаусса,а то мне надо реализовать в делфи,как минимум с 8...

Определенный интеграл методом гаусса
помогите пожалуйста,мне надо реализовать программу вычисления определенного интеграла по формулам гаусса,интеграл можно взять...

Методом Гаусса решить интеграл
{6x1+0.6x2+0.5x3=41.0 0.6x1+5x2+0.4x3=30.2 0.5x1+0.4x2+4x3=21.0}

Несобственный интеграл методом гаусса
Проблема в реализации в среде matlab программы по расчету несобственного интеграла методом Гаусса. На Delphi 7 кое как получилось...

Исследовать ряд(Признак Раабе, Гаусса).
\sum \frac{(sqrt2+1)\cdot ...\cdot (sqrt2+n)}{(sqrt3+1)\cdot ...\cdot (sqrt3+n)} помогите решить...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru