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

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

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

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Помогите пожалуйста в написание программы с блок-схемой алгоритма вычисления определённого интеграла, тема звучит так : "Программа реализации численных методов интеграла", на примере
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Облачные приложения на Rust: руководство по архитектуре микросервисов
golander 13.07.2025
Когда я впервые взялся за проектирование облачной платформы для одного из наших клиентов, выбор стоял между привычными Go и Java. Но после нескольких месяцев разработки микросервисной системы,. . .
Как Node.js выполняет асинхронные операции
Reangularity 13.07.2025
Каждый раз, когда я рассказываю про Node. js, возникает один и тот же вопрос: "Как эта штука может быть быстрой, если JavaScript — однопоточный язык?" И это действительно кажется парадоксом. Ведь в. . .
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru