0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 16

Вычисление определенного интеграла методом парабол

12.01.2019, 19:46. Показов 9911. Ответов 11

Author24 — интернет-сервис помощи студентам
Доброго времени суток! Помогите пожалуйста в написание программы с блок-схемой алгоритма вычисления определённого интеграла, тема звучит так : "Программа реализации численных методов интеграла", на примере
https://www.cyberforum.ru/cgi-bin/latex.cgi?\int_{0}^{1}\cos \left(x+{x}^{3} \right)\ast \frac{1}{1+{x}^{2}}dx
Метод парабол (Симпсона).

Пример блок-схемы алгоритма
https://cdn1.savepice.ru/uploa... 4-full.png
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.01.2019, 19:46
Ответы с готовыми решениями:

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

Вычисление определенного интеграла методом криволинейных трапеций
Помогите пожалуйста написать программу вычисления определенного интеграла методом криволинейных трапеций интеграл : ...

Вычисление определенного интеграла методом криволинейных трапеций
Подскажите пожалуйста, написать консольную программу на C# для вычисления определенного интеграла методом криволинейных трапеций, интеграл...

11
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 16
18.01.2019, 02:40  [ТС]
Помогите пожалуйста написать программу вычисления определенного интеграла методом парабол (Симпсона) :
Название: latex.gif
Просмотров: 257

Размер: 783 байт
Заранее огромное спасибо
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 06:20
Likolus, разложим на составляющие:
1) определить значения функции с заданным шагом
2) для каждой серии из 3 значений функции определяем полином 2 степени
3) вычисляем определенный интеграл для каждого полинома
4) складываем значения определенных интегралов для каждого полинома

Добавлено через 13 минут
1) определение значений функции
C#
1
var values = GetFunctionValues(x => Math.Cos(x + x * x * x) / (1 + x * x), 0, 1, 25);
исходный код функции
C#
1
2
3
4
5
6
7
8
9
10
11
        delegate double Function(double x);
        static double [] GetFunctionValues(Function f, double min, double max, int count)
        {
            double[] v = new double[count + 1];
            double delta = (max - min) / count;
            for(int i = 0;min<=max;min+=delta,i++)
            {
                v[i] = f(min);
            }
            return v;
        }
Добавлено через 10 минут
добавим возможность хранения 2-х координат при помощи структуры
C#
1
2
3
4
5
6
7
8
9
10
        struct PointD
        {
            double X { get; set; }
            double Y { get; set; }
            public PointD(double x, double y)
            {
                X = x;
                Y = y;
            }
        }
тогда функция определения значений примет вид:
C#
1
2
3
4
5
6
7
8
9
10
        static PointD [] GetFunctionValues(Function f, double min, double max, int count)
        {
            PointD[] v = new PointD[count + 1];
            double delta = (max - min) / count;
            for(int i = 0;min<=max;min+=delta,i++)
            {
                v[i] = new PointD(min, f(min));
            }
            return v;
        }
Добавлено через 19 минут
2) чтобы определить коэффициенты полинома 2-ого порядка, необходимо решить систему из 3-х линейных уравнений, в которые подставлены значения координат 3-х исходных точек
здесь использован простейший метод подстановки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        struct Polynom2
        {
            public double A { get; set; }
            public double B { get; set; }
            public double C { get; set; }
            public PointD Minimum { get; set; }
            public PointD Maximum { get; set; }
            public Polynom2(PointD p1, PointD p2, PointD p3)
            {
                Minimum = p1;
                Maximum = p3;
                A = ((p3.Y - p1.Y) * (p2.X - p1.X) - (p2.Y - p1.Y) * (p3.X - p1.X)) /
                    ((p3.X * p3.X - p1.X * p1.X) * (p2.X - p1.X) - (p2.X * p2.X - p1.X * p1.X) * (p3.X * p1.X));
 
                B = (p2.Y - p1.Y - A * (p2.X * p2.X - p1.X * p1.X)) / (p2.X - p1.X);
 
                C = p1.Y - A * p1.X * p1.X - B * p1.X;
            }
        }
Добавлено через 4 минуты
видно, что общее количество точек должно иметь вид 2*k + 1;

Добавлено через 15 минут
3) определим интеграл полинома, допустим, через свойство класса Polynom2
C#
1
2
3
4
5
6
7
8
            public double Integral
            {
                get
                {
                    return (Maximum.X - Minimum.X) *
                        ((Maximum.X * Maximum.X + Maximum.X * Minimum.X + Minimum.X * Minimum.X) * A / 3 + (Maximum.X + Minimum.X) * B / 2 + C);
                }
            }
Добавлено через 1 минуту
4) Определим метод, возвращающий сумму определенных интегралов данного массива полиномов
C#
1
2
3
4
5
6
7
8
9
        static double GetIntegralAdd(Polynom2 [] p)
        {
            double sum = 0;
            for(int i = 0;i<p.Length;i++)
            {
                sum += p[i].Integral;
            }
            return sum;
        }
1
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 06:27
общая запись функции
C#
1
2
3
4
5
6
7
8
9
10
        public double GetIntegralSimpson(Function f, double min, double max, int count)
        {
            var values = GetFunctionValues(f, min, max, 2*count);
            Polynom2[] pols = new Polynom2[(values.Length - 1) / 2];
            for (int i = 0, j = 0; i < values.Length - 1; j++)
            {
                pols[j] = new Polynom2(values[i++], values[i++], values[i]);
            }
            return GetIntegralAdd(pols);
        }
и ее вызов
C#
1
double res = GetIntegralSimpson(x => Math.Cos(x + x * x * x) / (1 + x * x), 0, 1, 25);
Вложения
Тип файла: 7z Вычисление_интеграла.7z (17.2 Кб, 22 просмотров)
1
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 16
18.01.2019, 07:07  [ТС]
Он же пустой
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 07:11
Likolus, делал проект в формах, с прицелом на визуализацию. посмотри в Form1.cs
0
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 16
18.01.2019, 07:12  [ТС]
0
0 / 0 / 0
Регистрация: 18.06.2018
Сообщений: 16
18.01.2019, 07:15  [ТС]
Извиняюсь за свою тупизну, просто я никогда не работал на C# и мне дали месяц на подготовку плюс задание, поэтому в этой форме ничего не вижу, что помогло бы дать решение функции
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 07:17
Likolus, методы есть, осталось самое нудное - нашлепать контролы
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 07:23
Лучший ответ Сообщение было отмечено Likolus как решение

Решение

Likolus,
Цитата Сообщение от Likolus Посмотреть сообщение
что помогло бы дать решение функции
Миниатюры
Вычисление определенного интеграла методом парабол  
Вложения
Тип файла: 7z Вычисление_интеграла.7z (26.9 Кб, 43 просмотров)
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 07:28
Likolus, что-то меня смущает отрицательное значение...
0
384 / 184 / 107
Регистрация: 07.01.2016
Сообщений: 496
18.01.2019, 07:39
Лучший ответ Сообщение было отмечено Likolus как решение

Решение

Likolus, оказывается, крайняя справа точка не рассчитывалась, поправил условие
C#
1
2
3
4
5
6
7
8
9
10
        static PointD [] GetFunctionValues(Function f, double min, double max, int count)
        {
            PointD[] v = new PointD[count + 1];
            double delta = (max - min) / count;
            for(int i = 0;i<=count;min+=delta,i++)
            {
                v[i] = new PointD(min, f(min));
            }
            return v;
        }
Миниатюры
Вычисление определенного интеграла методом парабол  
Вложения
Тип файла: 7z Вычисление_интеграла.7z (27.0 Кб, 69 просмотров)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2019, 07:39
Помогаю со студенческими работами здесь

Нужна программа для вычисления определенного интеграла по методу прямоугольников, парабол и трапеций
Народ, нужна помощь! Задание: Написать программу вычисления определенного интеграла по методу прямоугольников, парабол и трапеций ...

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

Вычисление определенного интеграла. Подскажите, что от меня требуется?
Имеется задача вот такая задача: Мне непонятно что от меня требуется. Хотелось бы получить блок-схему или описание алгоритма...

Расчет определенного интеграла методом трапеции с заданной точностью
С математикой не очень дружу. Не могу формулу никак сделать . Форум просматривал но там с заданным количеством отрезком. Интеграл Ln2x. Не...

Расчет определенного интеграла методом Монте Карло. Перенос с TurboPascal
Привет, друзья! Столкнулся с проблемой реализации метода Монте Карло для нахождения значения определенного интеграла на c#. Нашел в...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

Новые блоги и статьи
Настройка гиперпараметров с помощью Grid Search и Random Search в Python
AI_Generated 15.05.2025
В машинном обучении существует фундаментальное разделение между параметрами и гиперпараметрами моделей. Если параметры – это те величины, которые алгоритм "изучает" непосредственно из данных (веса. . .
Сериализация и десериализация данных на Python
py-thonny 15.05.2025
Сериализация — это своего рода "замораживание" объектов. Вы берёте живой, динамический объект из памяти и превращаете его в статичную строку или поток байтов. А десериализация выполняет обратный. . .
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru