Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/25: Рейтинг темы: голосов - 25, средняя оценка - 4.72
0 / 0 / 1
Регистрация: 17.10.2013
Сообщений: 33

Интегрирование методом Симпсона. Обобщение

24.01.2015, 17:33. Показов 4547. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть код для решения интеграла методом Симпсона функции f(x)

Помогите организовать работу если функций несколько f1(x), f2(x)...fn(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
static double f(double x) 
        {
            return x*x+2*x; 
        }
        
        static double Simpson(double n)      //Интегрирование по методу Симпсона
        {
            double x, a, b, h, s;
            a = 0;
            b = 0.5;
            h = (b - a) / n;
            s = 0;
            x = a + h;
            while (x < b)
            {
                s = s + 4 * f(x);
                x = x + h;
                s = s + 2 * f(x);
                x = x + h;
            }
            s = h / 3 * (s + f(a) - f(b));
 
            Console.WriteLine(" Интеграл(Метод Симпсона) = " + s);
            double Simpson = s;
            return Simpson;
        }
 
        static void Main(string[] args)
        {
            
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.01.2015, 17:33
Ответы с готовыми решениями:

Интегрирование методом Гаусса
Добрый день, необходимо реализовать метод Гаусса для интегрирования на C#, подскажите пожалуйста что я делаю не так, вот мой код, но он к...

Вычисление интеграла методом Симпсона
Найти площадь фигуры с заданной точностью, ограниченной графиками функций: 1. Рассчитать точки пересечения заданных функций. 2....

Численное интегрирование методом трапеций
доброго времени суток уважаемые форумчане. вообщем у меня возник вопрос связанный с численным интегрированием. у меня есть проект который...

4
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
24.01.2015, 18:19
Используйте делегат, к примеру.
1
Заблокирован
24.01.2015, 19:33
Лучший ответ Сообщение было отмечено Gagik как решение

Решение

Gagik, воспользуйтесь советом ture:

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
       
             static double f(double x)
        {
            return x * x + 2 * x;
        }
        static double Simpson(Func<double,double> func,double n)//Интегрирование по методу Симпсона
        {
            double x, a, b, h, s;
            a = 0;
            b = 0.5;
            h = (b - a) / n;
            s = 0;
            x = a + h;
            while (x < b)
            {
                s = s + 4 * func(x);
                x = x + h;
                s = s + 2 * func(x);
                x = x + h;
            }
            return h / 3 * (s + func(a) - func(b));
        }
        static void Main(string[] args)
        {
            Console.WriteLine(" Интеграл(Метод Симпсона) = {0}", Simpson(f, 10));
            Console.WriteLine(" Интеграл(Метод Симпсона) = {0}", Simpson(x => 3 * x + 4, 10));
            Console.ReadKey(true);
        }
реализацию метода не проверял. Только лучше границы тоже передавать в метод
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.01.2015, 20:17
Какой-то неправильный симпсон. Достаю своего - из глубин папки OldProjects

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
using System;
 
namespace ConsoleApplication22
{
    class Program
    {
        static void Main()
        {
            Func<double, double> f = x => Math.Exp(-x*x);
            var res = Simpson(f, 0, 1);
            Console.WriteLine(res);
            var resinf = InfSimpson(f, 0, 0.0001);
            Console.WriteLine(resinf);
            Console.ReadKey();
        }
 
        static double Simpson(Func<double, double> f, double a, double b)
        {
            return (f(a) + 4*f((a + b)/2) + f(b))*(b - a)/6;
        }
 
        static double InfSimpson(Func<double, double> f, double from, double epsilon)
        {
            double result = 0, summand = double.PositiveInfinity;
            for (double a = from, b = a + 1; summand > epsilon && !double.IsInfinity(result); a = b, b *= 2)
            {
                summand = Simpson(f, a, b);
                result += summand;
            }
            return Math.Abs(result);
        }
    }
}
Добавлено через 3 минуты
Хотя по прошествии того времени, как я это писал, видна куча косяков - например при a = -inf будет вечный цикл.
1
0 / 0 / 1
Регистрация: 17.10.2013
Сообщений: 33
25.01.2015, 12:51  [ТС]
Ev_Hyper, спасибо выручил!!! Все работает

Psilon, Почему неправильный? Считает же правильно!!! проверял через Mathcad
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.01.2015, 12:51
Помогаю со студенческими работами здесь

Программа не считает интеграл методом Симпсона
Доброго времени суток. У меня возник вопрос. Я решаю интеграл методом Симпсона, а выводится конец отрезка интегрирования в качестве...

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

Численное интегрирование методом Гаусса I = exp^(-(x/2))dx
Help me, please :umbrage: возникли трудности с написанием программы(новичек в программировании) вычисления интегрирования методом Гаусса...

Вычисление определенного интеграла методом парабол (Симпсона)
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication33 { ...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru