0 / 0 / 0
Регистрация: 22.03.2019
Сообщений: 9
|
|
1 | |
Вычисление определенного интеграла с применением метода трапеций22.03.2019, 21:44. Показов 3252. Ответов 9
Метки нет Все метки)
(
1. Реализовать программму вычисления площади фигуры, ограниченной кривой
4 * x ^ 3 + (4) * x ^ 2 + (-322) * x + (3723). 2. Вычисление определенного интеграла должно выполняться численно, с применением метода трапеций. 3. Пределы интегрирования вводятся пользователем. 4. Взаимодействие с пользователем должно осуществляться посредством case-меню. 5. Требуется реализовать возможность оценки погрешности полученного результата. 6. Необходимо использовать процедуры и функции там, где это целесообразно. HELP!!!
0
|
|
22.03.2019, 21:44 | |
Ответы с готовыми решениями:
9
Вычисление определенного интеграла методом трапеций.
Вычисление определенного интеграла функции на заданном отрезке (метод трапеций)
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
||||||
23.03.2019, 06:42 | 2 | |||||
![]() Решение
1
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
||||||
29.03.2019, 05:03 | 3 | |||||
Лучше всего запустить у себя Lazarus и создать исполняемый файл собственного производства. Файл 'zadanie.txt' содержит текст задания.
0
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
29.03.2019, 06:39 | 4 |
Первоначальный вариант глючит, я его пересобрал. Новый вариант программы в приложении без исполняемого файла.
0
|
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
|
||||||
30.03.2019, 22:36 | 5 | |||||
ValentinNemo,
У Вас это непонятно почему считается за ошибку. Оценка погрешности, применённая Вами, не совсем корректна. По крайней мере, у меня она вызывает сомненья. Моё решение. Имеется функция f(x) = 4x3 + 4x2 - 322x + 3723. Функция и все её производные не содержат разрывов на всей действительной оси. Вторая производная этой функции f"(x) = 24x + 8 - уравнение прямой линии. Для интегрирования методом трапеций проще всего применить несколько изменённую формулу Кортеса: где: h = (b - a) / n - шаг; n - количество интервалов разбиения: R - невязка (разность между истинным значением и вычисленным). Известно, что где Вычислить M2 заранее не составляет никакого труда, поскольку f"(x) - прямая: Незачем оценивать погрешность, если можно вычислить с заданной погрешностью. Примем ε=|R|, и исходя из заданных a, b и ε найдём количество интервалов разбиения и шаг: Результат: вводятся только пределы интегрирования и точность, что логично, для вычисления значения интеграла с заданной погрешностью применяется предопределённый цикл, нижний предел интегрирования может быть меньше, больше или равен верхнему пределу, как и положено.
1
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
31.03.2019, 16:39 | 6 |
Cyborg Drone, все что вы описали выше - это все хорошо и правильно ... но в чем тогда профит от использования вычислительной техники? Значение интегралов математики научились получать без численных методов.
В вашем алгоритме нужно отдельно найти вторую производную, то есть использовать отдельный компьютер, тот который у всех между ушами. А сделать так, чтобы было как можно проще и без привлечения дополнительных вычислительных мощностей никак нельзя? То есть прописать функцию на компьютерном языке, задать ограничения со всех сторон (ибо компьютер глуп и может считать числа до бесконечных величин), задать шаг интегрирования или количество аппроксимаций и получить результат, без вычисления производных, в том числе и вычислить из всех этих данных точность. Или так вычислить погрешность невозможно?
0
|
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
|
|
31.03.2019, 20:40 | 7 |
ValentinNemo, применение "отдельного компьютера", по моему мнению, всегда оправдано: это упрощает вычисления. Тем боле, если нужно написать программу для конкретной функции. Если вообще для любой функции (то есть, функция вводится во время работы программы), то (практически всегда) можно получить производную из строкового представления функции. В молодости, было дело, писал программу символьного дифференцирования. Ничего оригинального: таблица производных и парсинг строки. Можно, конечно, вычислять вторую производную (ускорение изменения функции) численно, но точность вычислений и скорость работы от этого пострадают. Можно и без производных, но тогда для получения достоверной оценки точности нужно вычислить на каждом шаге интеграл с гарантированным избытком и с гарантированным недостатком (метод трапеций для этого подходит плохо), либо применить другой метод, позволяющий оценить погрешность без вычисления производных. Ещё для оценки точности вычислений используется методы удвоения или утроения количества разбиений, но не для каждой функции оценка получается достоверной (поэтому и используют вторую производную, чтобы учесть "кривизну" функции). Без производных оценка точности, как правило, получается плюс-минус лапоть.
В принципе, всё можно сделать численными методами, в том числе, и оценку погрешности. Объём кода будет большим, работать программа будет значительно медленнее.
1
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
01.04.2019, 02:29 | 8 |
Так здесь нет гигабайтов кода и призы за быстроту исполнения кода тоже не раздают. Одна-единственная функция (не слишком сложная). И что из того, что она будет вычисляться, условно говоря, на 10 миллисекунд больше. Львиная доля компьютерного времени расходуется для обработки текстов юридического, бухгалтерского или бюрократического плана или для распределения аудио и видеопотоков в сети.
Я, конечно в восторге от ваших математических способностей, но в данном случае, мне было бы интересно, если бы вы нашли время и рассказали про алгоритм, который бы вычислял интеграл и его погрешность именно численно и без производных. (Сейчас мало кто подробно что-то рассказывает. В основном отбиваются фразой вроде "Тебя в Гугле забанили?"). А то, что это потребует больше кода и может быть потребует иного алгоритма вычислений, нежели метод трапеций - не важно. Конечно полной универсальности от этого ждать нельзя, но все же интересно посмотреть.
0
|
Модератор
9656 / 4976 / 3265
Регистрация: 17.08.2012
Сообщений: 15,476
|
|
01.04.2019, 04:35 | 9 |
ValentinNemo, да зачем всё это? Зачем сложно, если можно просто? Только лишь для того, чтобы "всё было по-честному", что ли? Почти уверен, что в методичке, которую выдали adm_uzу, предлагается оценивать погрешность методом удвоения (или утроения) количества интервалов с последующим сравнением вычисленных значений при n и 2n интервалов. Это что, лучше производных? Типа, если модуль разности станет меньше эпсилон, то нужная точность достигнута. Ага, щаззз. Далеко не для каждой функции это так.
Без производных вообще никак. Либо в явном виде, либо вычисленных численно - никуда от них не денешься, без них оценка погрешности будет недостоверная. Можно уменьшать шаг и вычислять интеграл с любой точностью, не вопрос. Вопрос в том, как эту точность оценить. Иными словами, каким нужно сделать шаг, чтобы требуемая точность вычислений была достигнута. Что можно сделать для метода трапеций? Для гладких функций (с грехом пополам) можно обойтись только первой производной. Возьмём отдельную трапецию и внимательно посмотрим на её линию, прилегающую к функции. Площадь сегмента между линией трапеции и функцией и есть невязка, и для каждой трапеции она своя. Сумма всех невязок будет (в точности) равна погрешности. Можно взять две трапеции, таких, чтобы для одной из них функция располагалась снаружи трапеции, а для другой - внутри. Для случаев, когда функция полностью располагается с одной стороны от линии трапеции, это сделать сравнительно легко. Нужно "всего лишь" провести касательную к функции в точке, наиболее удалённой от линии трапеции (да-да, это, по факту, вычисление первой производной, пусть численное, не алгебраическое). Разность площадей исходной трапеции и трапеции с касательной (параллелограмм получится) будет гарантированно больше невязки, и можно будет с уверенностью сказать, что, если сумма площадей всех параллелограммов (лучше сказать "параллелограммулечек") не больше погрешности, то заданная точность вычислений достигнута. Да, количество шагов получится раза в полтора-два больше, чем в случае со второй производной, но будет и достоверность. Если функция располагается по обе стороны от линии, то касательные (их будет две) провести будет сложнее, и нужно будет вычислить разницу площадей между трапециями, образованными этими касательными. В теории это красиво, а по факту вызывает кучу осложнений. Площадь отдельного параллелограммчика примерно ε/n, а эта ε и без того маленькое, где там функция максимально отдалена от хорды на каждом мизерном интервальчике длиною в h умумукаешься искать, разные числа одновременно в разрядную сетку не помещаются, ошибки усечения сплошь и рядом, а о том, что n будет стремиться все на свете int64 побороть, я вообще молчу. Да любой программе в этой теме скормить a=1000, b=10000, ε=0.0000000001, она и подавится. Я всё ж попробую, только не сейчас. Не очень люблю пялиться в Лазарус на рассвете.
1
|
2373 / 775 / 561
Регистрация: 15.01.2019
Сообщений: 2,394
|
|
01.04.2019, 17:24 | 10 |
Нет, конечно. Про заказчика задания уже речи не ведется.
Абсолютно честно признаюсь - не люблю в дебри высшей математики лезть. Слабоват я в этом, ошибки допускаю глупые, над которыми потом не то смеяться, не то плакать надо. Счастливый вы человек в том плане, что оно в вашей голове укладывается. Поэтому думал думал, и решил так: может кто более умный объяснит как надо сделать более менее универсальную программу, которая вычисляет интеграл "как есть", без дополнительных применений человеческого интеллекта. Зачем все это нужно? Это вы нашлись такой внимательный и объясняете, другие за ручку меня водить не будут и ошибки вряд ли искать будут. Я не математик и программы расчетные меня писать не заставляют. Я исключительно для самообразования интересуюсь. Именно поэтому хотелось бы все это автоматизировать, конечно если это возможно. То что есть интегралы жутко противные и сложные - я знаю. В универе каждый раз на таком "подрывался". Полностью согласен. Можно простые числа искать в какой нибудь миллиардной степени - так наверное всего кремния планеты не хватит на такие компьютеры. Только зачем? Обычно 0.001 - это уже хорошо. Так как вы человек более сведущий в применении высшей математики к числовым методам, то поэтому и обратился. Спасибо огромное, за то что взялись за такие труды. Не обязательно применять трапеции, не обязательно извращаться со скоростью вычислений. Не нужна и мегаточность. Основная цель - универсальность, как я уже говорил раньше. Написал функцию с вычисляемой формулой, вставил ее в алгоритм, задал границы, нарисовал в ТChart график с заполнением и все.
0
|
01.04.2019, 17:24 | |
Помогаю со студенческими работами здесь
10
Вычисление определённого интеграла методами трапеций и Симпсона Нужна программа вычисления определенного интеграла методом трапеций Вычислить значение определенного интеграла методом трапеций. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |