logo
Элементы вычислительной математики Учебное пособие по курсу Информатика

3.6. Адаптивные программы.

При численном интегрировании величина погрешности зависит не только от используемого метода, но и от вида интегрируемой функции. Основным способом уменьшения погрешности вычисления интеграла является уменьшение ширины элементарного отрезка х, т.е. увеличение количества разбиений. Однако это приводит к увеличению объема вычислений и соответственно к увеличению продолжительности счета.

Вместе с тем влияние ширины отрезка х на точность расчета может быть неодинаковым на разных участках интегрирования. Если функция на некотором участке изменяется мало или ее вид близок к виду аппроксимирующей функции (х), то для обеспечения требуемой точности целесообразно проводить вычисления с более крупным шагом. Там, где функция изменяется более быстро, целесообразно уменьшать шаг интегрирования.

Для обеспечения выбора приемлемого шага интегрирования на участке в зависимости от выбора типа метода интегрирования и поведения подинтегральной функции применяются адаптивные программы, построенные на алгоритмах с одной или двумя функциями, автоматически определяющими величину шага.

Пользователь подобной программы указывает конечный интервал [a,b] и допустимую погрешность . Программа пытается вычислить величину S, такую, что

.

В процессе вычислений интервал [a,b] разбивается на подинтервалы [xi-1,xi]. В большинстве программ новый подинтервал получается делением пополам подинтервала, полученного на более раннем этапе вычисления. Реальное число подинтервалов и их длина зависят от функции f(x) и требуемой точности .

Типичная схема применяет к подинтервалу две различные формулы. Например, схемы, основанные на формуле Симпсона, используют основную формулу с двумя элементарными отрезками

и составную формулу с четырьмя элементарными отрезками

.

Выражения S1i и S2i являются приближениями к величине интеграла

.

Основная идея адаптивного метода состоит в сравнении двух приближений S1i и S2i и получении при этом оценки их точности. Если точность приемлема, то одно из чисел принимается в качестве значения интеграла по данному подинтервалу. Если точность недостаточна, то подинтервал делится на две или более частей и процесс повторяется для меньших подинтервалов. Если точность значительно меньше требуемой, то на следующем шаге величина подинтервала увеличивается.

Сокращение общего количества вычислений может быть достигнуто также за счет того, что две формулы для расчета S1i и S2i используют значения подинтегральной функции в нескольких общих точках. Например, для формулы Симпсона S2i требует вычисления в пяти точках, три из которых используются при расчете S1i, и поэтому достаточно вычислить только два новых значения функции f(x).

Для формулы Симпсона сокращение интервала вдвое увеличивает точность вычисления приблизительно в 16 раз.

.

Выразим отсюда неизвестную величину Ii S2i:

.

Проводя подобные вычисления для формул прямоугольников или трапеций, получим оценку погрешности

.

Разность между истинным значением и результатом вычисления с уменьшенным вдвое шагом оказывается меньше, чем разность между результатами расчета с первоначальным и половинным шагом. Поэтому, если на каждом шаге обеспечить выполнение условия

,

то при суммировании всех интервалов будем иметь

.

На рис. 3.6 приведена блок-схема адаптивного алгоритма вычисления определенного интеграла методом средних прямоугольников. В начале программы в качестве шага интегрирования выбирается длина всего диапазона интегрирования. Далее по двум формулам с целым и половинными шагами рассчитываются значения интеграла на участке шириной x.

При обеспечении требуемой точности расчета полученное значение S2iсуммируется с вычисленными ранее на предыдущих интервалах и делается следующий шаг.

Если точность расчета заметно (в приведенной схеме в 20 раз) превышает требуемую, длина шага увеличивается в 1,87 раза.

В том случае, если погрешность расчета оказывается чрезмерной, длина шага уменьшается вдвое.

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

  1. Решение системы линейных уравнений.

4.1. Постановка задачи.

В инженерных расчетах довольно часто приходится решать системы линейных уравнений. В общем случае система имеет вид

(4.1)

Здесь х1, х2, … ,хn – неизвестные параметры, значения которых необходимо найти; а11, а12, … , а1n, а21, … , а2n, … , аnn – известные коэффициенты при неизвестных параметрах х1, х2, … ,хп. Первый индекс коэффициента означает номер строки (номер уравнения в системе), второй индекс – номер неизвестного параметра, при котором стоит данный коэффициент; b1, … bn – свободные члены в уравнениях, индекс означает номер уравнения.

Обычно число уравнений равно числу неизвестных. В этом случае коэффициенты при неизвестных и свободные члены образуют матрицу размером nn+1. Здесь целесообразно свободные члены обозначить как элементы матрицы с индексами i,n+1 (аi,n+1). Параметр i принимает значения от 1 до n.

Для того, чтобы система имела единственное решение, входящие в нее n уравнений должны быть линейно независимыми, то есть никакое уравнение не может быть линейной комбинацией других уравнений. Необходимым и достаточным условием существования единственного решения является неравенство нулю определителя матрицы коэффициентов.

Алгоритмы решения задач такого типа делятся на прямые и итерационные. Прямые методы дают решения за конечное число действий. Для систем порядка n<200 применяются практически только прямые методы. Итерационные методы выгодны для систем со слабо заполненной матрицей большого порядка n103-105.