Разработать программное средство для решения систем линейных уравнений (методы решения определяет преподаватель).



Лабораторная работа № 1

Тема: «Прямые и итерационные методы решения систем линейных уравнений»

 

Цель работы: изучение методов решения линейных уравнений, оценка и сравнение этих методов. Получение практических навыков программной реализации методов решения систем линейных уравнений.

Технические средства: IBM PS AT.

Программное средство: Delphi или Visual Studio

 

Теоретические сведения

 

Система m линейных алгебраических ура­в­не­ний с n не­известными в общем виде может быть за­­­писана сле­ду­ющим образом:

                  (1.1)

или в матричном виде AX = B, где A - прямоу­голь­­­ная мат­рица размерности m´n, X - век­тор n-го по­ряд­ка, B- век­тор m-го порядка. Ре­ше­нием сис­­темы (1) на­зы­ва­ет­ся такая упо­­ря­до­ченная со­­во­куп­ность чисел  которая об­ра­ща­ет все уравнения сис­­те­мы в вер­ные ра­­вен­ства. Две системы называются эк­­ви­ва­лентными (рав­но­­силь­ны­ми), если множества их ре­ше­­ний сов­­падают.

Система линейных уравнений называется сов­­­мест­­­­ной, ес­ли она имеет хотя бы одно ре­ше­ние, и не­­сов­­мест­ной - в про­тивном случае. Сов­мест­­ная сис­­те­ма на­зы­ва­ет­­ся определенной, если она имеет един­ст­вен­ное ре­ше­ние, и не­оп­ре­де­лен­ной - в про­тив­­ном слу­чае. Система яв­ля­­ется опре­де­­ленной, ес­­ли rang A = rang B, где матри­ца B, по­­лученная из матрицы A добавлением стол­бца сво­бод­ных чле­­нов, на­зы­­вается  рас­ши­рен­ной.

Если матрица A- квадратная и det A ¹ 0, то она на­зы­­вается неособенной (невырожденной), при этом сис­те­ма уравнений, имеющая не­о­со­бен­ную мат­ри­цу A, сов­мес­­тна и имеет единственное ре­­шение.

Eсли уравнения (1) являются не­ли­ней­­­ными от­но­си­тельно неизвестного вектора Х, то со­от­вет­с­т­ву­ю­щая сис­тема, записанная в век­тор­ной форме

                                  (1.2)

на­­­зы­вается системой нелинейных уравнений. Она мо­жет быть также представлена в ко­орди­натном виде:

       1 < k < n.

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

 

Метод исключения Гаусса для систем линейных уравнений

     Из курса линейной алгебры из­­вестно, что ре­ше­ние системы линейных урав­не­ний можно прос­то най­ти по правилу Крамера - че­­рез отношение оп­ре­де­ли­те­лей. Но этот способ не очень удобен для ре­шения сис­тем урав­не­ний с чис­­лом неизвестных > 5, т.е. когда най­ти опре­де­ли­тель сложно, а при чис­­ле не­известных > 10 на­­­хож­де­ние оп­ре­­де­ли­теля с до­ста­точ­но высокой сте­пенью точ­нос­ти ста­но­вится са­мо­сто­ятельной вы­чис­­ли­тель­­­ной за­дачей. В этих слу­чаях применяют иные методы ре­­­шения, среди ко­то­рых самым рас­про­­стра­нен­ным яв­ля­ет­ся метод Га­ус­са.

     Запишем систему линейных уравнений (1.1) в ви­де

                           (1.3)

Если матрица системы верхняя треугольная, т.е. ее эле­мен­ты ниже главной диагонали рав­ны ну­­лю, то все хj можно найти по­сле­до­ва­тель­но, на­­чиная с хn, по фор­му­ле

.        (1.4)

 

При j > k и аjj ¹  0 этот метод дает возможность най­­ти решение системы.

Метод Гаусса для произвольной системы (1.1) ос­­­но­ван на приведении матрицы Асис­те­мы к верх­­ней или ниж­ней треугольной. Для это­го выч­и­та­ют из второго уравнения системы первое, умно­­­­женное на такое число, при котором а21 = 0, т.е. ко­­­эф­фи­ци­ент при х1 во второй строке должен быть ра­вен ну­­лю. Затем та­ким же образом ис­­клю­чают по­­сле­до­­ва­­тельно а31 , а41 , ..., аm1 . После за­вер­ше­­ния вы­чис­­ле­ний все эле­мен­ты первого столбца, кроме а11, бу­­дут равны ну­лю.

Продолжая этот процесс, исключают из мат­ри­­­цы А все коэффициенты аij, лежащие ниже главной ди­а­го­на­ли.

Построим общие формулы этого процесса. Пусть ис­клю­чены коэффициенты из k - 1 столб­ца. Тог­да ниже глав­ной диагонали долж­­­ны остаться урав­не­ния с нену­ле­выми эле­­­ментами:

     Умножим k-ю строку на число

и вычтем ее из m-й строки. Первый не­ну­­­левой элемент этой строки обратится в нуль, а ос­­­таль­ные изменятся по формулам

          (1.5)

   Произведя вычисления по формулам (1.5) при всех ука­занных индексах, исключим эле­мен­ты k-го столб­ца. Та­кое исключение назовем цик­­лом, а вы­­полнение всех цик­лов назовем пря­мым ходом ис­ключения.

После выполнения всех циклов получим верх­­нюю тре­угольную матрицу А системы (1.3), ко­то­рая легко ре­шается обратным ходом по фор­му­лам (1.4). Если при прямом ходе коэффициент аjj ока­зал­ся ра­вен нулю, то пе­ре­ста­нов­кой строк пе­ремеща­ем на глав­ную ди­а­го­наль не­ну­ле­вой эле­мент и про­дол­жа­ем расчет.

Формальные параметры процедуры. Входные: n (тип in­te­ger) - порядок системы; а (тип real) - мас­сив ко­эф­фи­ци­­ентов системы размером n´n; b (тип real) - массив-стро­­ка свободных чле­нов. Выход­ные: х (тип real) - мас­сив-строка, в который по­ме­ща­ется ре­­шение системы.

 

Метод главных элементов

 

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

Формальные параметры процедуры. Входные: n (тип in­­te­ger) - целое положительное число, рав­ное по­­­рядку ис­­ходной системы; aa (тип real) - массив из n´n дейс­т­ви­тель­ных чисел, содержащий мат­ри­цу ко­­эф­фи­циентов сис­те­мы (aa[1] = а11; aa[2] = а21; aa[3] = a31; ...; aa[n]= an1; aa[n +1]= =a12; aa[n + 2] = a22; ...; aa[2*n] = аn2; ...; aa[n*n] = аnn); b (тип real) - мас­сив из n действительных чисел, со­дер­жа­щий стол­бец сво­бодных членов исходной системы (b[1] = =b1; b[2] = b2; ...; b[n] = bn). Выходные: b (тип real) - мас­­сив из n действительных чисел (он же был вход­ным) при выходе из подпрограммы, со­дер­жа­щий ре­ше­ния ис­ход­ной системы (b[1]= x1; b[2] = x2; ...; b[n] = xn); ks (тип in­­te­ger) - признак пра­виль­нос­ти ре­­ше­ния или код ошиб­ки: если ks = 0, то в ма­с­си­ве b со­дер­жится ре­­шение ис­ход­ной сис­те­мы; если ks = 1, то исход­ная сис­тема не име­ет ре­ше­ния (глав­ный опре­де­ли­тель ее равен нулю).

 

Решение систем линейных уравнений методом итераций

 

Итерационные методы решения систем ли­ней­ных урав­нений дают возможность вычислить ре­ше­­­ние сис­те­мы как предел бесконечной по­сле­до­ва­­тель­нос­ти про­ме­жуточных решений. Причем каж­­дое по­сле­ду­ющее ре­ше­ние в слу­чае схо­­ди­мости ите­рационного про­цесса счи­та­­ет­­ся более точ­ным. В этих методах, в от­личие от точ­­ных, ошиб­ки в на­чаль­ном при­­бли­жении и по­­­сле­ду­ю­­щих вы­чис­ле­­ниях ком­пен­­­сируются, т.е. ите­ра­ци­­он­ные методы (в слу­чае схо­­ди­мости) по­­зволяют по­лу­­чить решение бо­лее точ­­ное, чем пря­мые. По­э­то­му ите­­ра­ци­онные ме­то­ды от­носят к са­­­мо­ис­прав­ля­ю­­щим­ся.

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

Пусть дана система линейных ал­геб­ра­и­чес­ких урав­не­ний (1)с неособенной матрицей. В ме­то­де простой ите­ра­ции если аii ¹ 0, то ис­ход­ная сис­тема мо­жет быть пре­об­ра­зо­вана к виду хi = bi + aij хj , i ¹ j, т.е. из каждого уравнения по­­сле­до­ва­тельно вы­ра­жа­ют хi.

Здесь bi = Fi / аii; aij = - аij / аii. Таким образом, в мат­рич­ном виде имеем Х = В+ . Полученную сис­­­­тему бу­дем решать методом по­сле­до­ва­тель­ных при­­ближений. За ну­левое приближение Х(0)мож­но при­нять матрицу В:Х(0)= = B, и далее, под­ста­вив най­денные значения в исходную систему, по­лу­чим Х (1) = В + A Х(0) .

При бесконечном повторении этой вы­чис­ли­тель­­ной схемы имеем

,

 где  и будет искомое решение системы.

Условия сходимости итерационного процесса опре­­­де­ля­ются теоремами, которые приводятся на­ми без до­ка­за­тельств.

Теорема 1. Для того, чтобы по­сле­до­ва­тель­ность при­бли­­жений Х(n) сходилась, до­ста­точ­но, что­бы все соб­ст­вен­ные значения матрицы A были по мо­ду­лю меньше еди­ни­цы: | li | < 1, i = 1, 2, ..., n.

     Теорема 2. Если требовать, чтобы по­сле­до­ва­тель­ность Х(n) сходилась к  при любом на­чаль­ном при­бли­же­­­нии Х(0) , то условие те­о­ре­мы 1 яв­ля­ет­ся не­об­хо­ди­мым.

     Применение теорем 1 и 2 требует знания всех соб­­­ст­вен­ных значений матрицы A, нахождение ко­­то­рых яв­ля­ет­ся очень не простой за­да­чей. По­э­то­му на прак­ти­ке огра­ни­чи­ва­ются бо­лее прос­той те­о­ре­мой, дающей до­статочные ус­ло­­вия схо­димости.

Теорема 3. Если для системы Х= В+  в­ы­пол­­­няется хотя бы одно из условий :

;

,

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

Для многих приложений важно знать, какой яв­­ля­ет­ся ско­рость сходимости про­цес­са, и оценить по­­греш­ность по­лу­ченного ре­ше­ния.

Теорема 4. Если какая-либо норма мат­ри­цы A, со­гла­со­­ванная с рассматриваемой нормой век­то­ра Х, меньше еди­­ницы, то верна следующая оцен­­ка по­греш­нос­ти при­бли­жения в методе прос­той итерации:

.             

Формальные параметры процедуры. Входные: А (тип real) - матрица, составленная из коэф­фи­ци­ен­тов при Х преобразованного уравнения; В (тип real) - мат­ри­­ца, сос­тав­лен­ная из свободных членов; N (тип integer) - раз­мер­ность мат­риц А(N ´ N) и В(N); IK (тип integer) - пре­дель­но воз­мож­ное количество итераций (введено для то­го, что­бы в слу­чае рас­­хож­дения процесса выйти из под­про­грам­мы. Обы­ч­­но решение достигается за 3-6 ите­ра­ций); ЕРS (тип real) - за­дан­ная погрешность ре­шения. Вы­ходные: Х(тип real) - матрица, в ко­торой на­хо­дится ре­ше­­ние сис­темы.

 

Решение систем линейных уравнений методом Зейделя

     Этот метод относится к итерационным, имеет бо­­­лее бы­струю сходимость по сравнению с ме­то­дом простых ите­раций .

Метод Зейделя применяют в двух расчетных схе­­мах. Рассмотрим каноническую форму (для схе­­­мы ите­раций). Пусть система приведена к ви­ду Х = Вх + b. В схеме про­с­той итерации сле­ду­ю­щее при­бли­же­ние Х(k +1) находит­ся пу­тем под­ста­нов­­ки пре­ды­ду­ще­го приближения Х(k) в правую часть выражения X(k +1) = B X (k) + b.

Для удобства рассуждений полагаем, что ле­­­вые час­ти уравнений содержат хi (элементы матрицы X(k +1)) с воз­­рас­та­­ю­щи­ми но­ме­рами, т.е. сначала х1, затем х2, х3, ..., хn. Тог­да ре­ше­ние системы уравнений Х = Вх +b на оче­ред­ной (k +1) итерации будет имет вид

 

,            (1.6)

 

т.е. каждое очередное найденное приближение хi(k +1)сразу же используется для определения . Ус­ло­вия схо­ди­мос­ти для итерационного ме­тода Зей­де­ля дают те же тео­ре­мы, что и в ме­то­де простых ите­ра­ций.

     Вторая форма метода Зейделя требует пред­ва­ри­­тель­но­го приведения системы (1) к ви­ду, ког­да все ди­а­го­наль­ные элементы отличны от ну­­ля. Ес­ли раз­ло­жить мат­ри­цу А на сумму двух мат­­риц R + С, где R - ниж­няя ди­а­го­наль­ная мат­ри­­ца, а С- верх­няя с нулями на главной ди­а­­го­на­­ли, то систему (1) можно за­пи­сать как

Ax = (R + C)x = R x(k +1) + C x(k) = B

или x(k +1) = R-1B - R-1C x(k)

и тог­да становится ясно, что метод Зейделя в ка­но­ни­чес­кой форме равносилен методу простой ите­ра­ции, при­ме­не­н­ному к системе

X = R-1B - R-1C X.

         

     Формальные параметры процедурытакие же, как и в методе итераций.

 

Задание

Разработать программное средство для решения систем линейных уравнений (методы решения определяет преподаватель).

Варианты

1.                   2.

                      

       .              .

 

3.

 

      .

 

4.

   

   

 

5.

 

  .

6.

                      

    

  

 

7.

  

 

8.

 

    

   

 

9.

   

    

 

10.

   

        

        

 

Требования к программе

 

1. Программа должна быть написана в среде Visual Studio или Delphi.

2. В программе должно быть предусмотрено следующее:

- ввод исходных данных и вывод результата в удобной для пользователя форме;

- возможность пошагового просмотра решения задачи;

- справка с комментариями по работе с программой;

- корректировка исходных данных;

- сохранение исходных данных и результата в файле.

 

Порядок выполнения работы

 

1. Получить задание у преподавателя.

2. Разработать алгоритм решения задачи.

3. Реализовать полученный алгоритм.

4. Проанализировать результаты работы алгоритма.

5. Оформить отчет по лабораторной работе.

 

Содержание отчета

 

1. Номер и тема лабораторной работы.

2. Цель выполнения работы.

3. Описание алгоритма.

4. Руководство пользователю.

5. Пример работы программы.

6. Анализ полученных результатов и вывод по работе.

7. Текст программы с комментариями привести в приложении.

 

Лабораторная работа № 2

Тема: «Интерполирование                                                                                                и экстраполирование функций»

 

Цель работы: изучение методов интерполирования и экстраполирования функции. Получение практических навыков программной реализации методов интерполирования и экстраполирования функции.

Технические средства: IBM PS AT.

Программное средство: Visual Studio.

 

Теоретические сведения

 

Предположим, что задано некоторое упо­ря­до­чен­­­­­ное множество вещественных абcцисс х1, х2, ..., хn и свя­зан­ное с ним множество вещественных ор­ди­­нат у1, у2, ..., уn. Пусть х1< х2< ...< хn и каждое уi есть некоторое ве­щес­т­венное число, отвечающее хi, которое определяется ма­тематически или в результате каких-либо на­блю­де­ний (рис. 2.1). Точ­ки (xi,yi)называются узлами ин­тер­поляции. Кривая, которая точно проходит через эти уз­лы, называется интерполяционной кривой.

 

     При решении задач на ЭВМ достаточно час­то воз­ни­кает обратная задача, т.е. необходимо по­до­брать не­ко­торую простую функцию, кото­рая, с од­ной стороны, име­ла бы в известных точ­ках за­дан­ные значения, а с дру­гой — вы­чис­лялась бы бы­стрee и проще исходной.

     Исходя из изложенного можно сфор­му­ли­ро­вать (не строго) следующие определения. Задача одно­мер­­­ной ин­тер­­­по­ля­ции за­клю­ча­ет­ся в по­­строении та­­кой не­пре­рыв­ной функ­ции f, при которой f(хi уi для всех хi, т.е. функ­ция f обя­за­тельно должна про­хо­дить абсолютно точ­но че­­рез за­дан­ные узлы ин­тер­поляции. Однако при этом f(xk) долж­на при­нимать "ра­зумные" зна­че­ния для всех xk, ле­жа­­щих между за­данными точ­ка­ми хi. Кро­­ме того, на ин­тер­­по­ли­ру­ющую функ­цию на­кла­ды­ва­ет­ся еще ряд оче­вид­ных ог­ра­ни­че­ний: не иметь особых точек на ин­тер­ва­ле ин­­тер­по­лирования; быть дос­таточно глад­кой; иметь не­­об­ходимое ко­ли­­­чест­­во про­из­вод­ных и пр. Если функ­ция определена и не­пре­рыв­на на [y1, y2],ее ин­­тер­по­ля­ци­­онные узлы рас­по­ложены на [х1, х2], а точка x Ï [х1, х2] или f(x)Ï [y1, y2],то тогда говорят о задаче экст­ра­по­ли­ро­ва­ния функции.

     Таким образом, задачи интерполирования и экст­ра­по­лирования возникают в следующих случаях:

1) если решаются прогнозные задачи (экстра­по­ли­ро­­ва­ние);

2) практически всегда при решении различных практических за­дач (интерполирование и экстра­по­ли­ро­ва­ние);

3) при обработке данных, полученных в экспе­ри­мен­­тах (ин­терполирование);

4) всегда при решении задач на ЭВМ (интер­по­ли­ро­ва­ние и экстра­по­ли­ро­ва­ние);

5) при задании функции графиком или таблицей (ин­тер­­­по­ли­ро­вание и экстра­по­ли­ро­ва­ние);

6) во всех остальных не описанных здесь случаях, ес­ли это необходимо.

Построение интерполяционного полинома Лагранжа по заданным значениям функции

Пусть теперь функция f(x)известна лишь в х1, х2, ..., хn уз­лах некоторой сетки. Попытаемся по­стро­ить та­кую дру­гую функцию j(х;a), которая пол­нос­тью сов­па­­да­ла бы с за­­данной f(x)в этих узлах, т.е. j(х; a) = j(х, а1, а2, ..., ат)ººf(xк). Тогда из по­след­не­го равенства мож­но будет опре­де­лить компоненты a. При k £ т, а в част­ном случае k = т, ком­поненты aопределяются из ре­шения системы

 ,                      (*)

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

.

Система функций, удовлетворяющая условию (*), является Чебышевской.

Одним из самых важных классов среди ин­тер­по­ли­ру­­ю­щих функций является множество ал­геб­ра­и­чес­ких по­линомов вида

,

где аi - некоторые неизвестные коэффициенты. Для то­го что­бы их определить однозначно, не­об­хо­ди­мо иметь n+1 точек для построения системы из n ли­нейных урав­не­ний относительно аi:

, (j = 0, 1, ..., N+1).

При этом потребуем, чтобы построенный по­ли­ном в заданных узлах хi Î {Х} в точности сов­па­дал со зна­че­ни­ями f(хi) в указанных точках. Если сре­ди множества хi нет совпадающих, тогда сис­те­ма ли­ней­ных урав­не­ний, полученная относительно аi,

определена, имеет решение и это ре­шение един­ствен­ное. Заметим, что главный опре­де­литель сис­те­мы - это оп­ре­де­литель Ван­дер­мон­да:

 ,

который при вы­полнении названных ус­­ло­вий всегда отличен от 0. Значит система имеет решение и это ре­ше­ние будет един­ствен­ное. Очевидно, что решением сис­те­мы будет по­ли­ном n-й степени, который называют по­ли­номом Ла­гран­жа и за­пи­сы­ва­ют

.                          (2.1)

Важно отметить, что существует один и только один полином степени меньше n, который ин­тер­по­ли­ру­ет за­данные n + 1 точки. При ис­поль­зо­ва­нии всего из­вест­но­го набора точек ин­тер­по­ли­ру­ю­щий по­ли­­ном на­­зывают гло­­баль­ным интер­по­ли­ру­ю­­щим по­­ли­но­мом. Од­нако по те­о­ре­ме Фа­бера при специальном расположении узлов ин­тер­по­ля­ции n всегда можно найти такой полином Рn, не­пре­рыв­ный на за­дан­ном отрезке [х0, хn], ко­то­рый не сходится к f, несмотря на то, что Рn(хiуi . Поэтому на практике редко поль­зуются гло­бальным ин­тер­по­ли­ру­ю­щим по­ли­­но­мом, за­ме­няя его полиномом степени не вы­ше 5. Тог­­да го­во­рят о скользящей интерполяции.

Формальные параметры про­цедуры. Вход­ные: b (тип real) - точка на оси Ох, для ко­то­рой ищутся значение функ­­ции; n (тип integer) - ко­ли­чество точек, по которым стро­­ится ин­тер­по­ли­ру­­ющий полином. Степень поли­но­ма долж­на быть на единицу меньше n; x, y (тип real) - мас­­­сивы, в которых находятся за­дан­ные зна­чения то­чек. Выходные: L (тип real) - зна­че­ние функции в точ­ке b.

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

Один из возможных способов оценки ошибки при ин­терполировании заключается в следую­щем. Во-пер­вых, пред­полагают, что заданные чис­ла уi являются в дейст­ви­тель­ности значениями не­­ко­то­рой функции f(хi). Во-вторых, что f(хi) имеет n +1 не­пре­рыв­ную про­из­вод­ную для всех хi. В-третьих, что Pn - един­ственный по­ли­ном сте­пе­ни < n, ин­тер­по­ли­ру­ю­щий заданные точки {(хi , уi)}. Тогда мож­­но до­ка­зать, что для любого дей­стви­тель­ного хi вы­пол­ня­ет­ся

,

где x - некоторая неизвестная точка на ин­тер­ва­ле, оп­­ре­де­ля­емом точками х0, х1, ..., хn и хn+1. Когда из­вест­­ны гра­ни­цы для f(х), эта разность дает оцен­ку ошибки.

 

Построение интерполяционного полинома Ньютона по заданным значениям функции

В силу единственности многочлена степени n, по­­­­стро­ен­ного по n + 1 значениям функции f(х), мно­­­гочлен Нью­то­на Рn(х) является раз­но­вид­нос­тью записи ин­тер­по­ля­ци­он­но­го мно­гочлена и по­л­нос­тью сов­па­да­ет с многочленом, по­стро­ен­ным по фор­­муле Ла­гран­жа (2.1). Однако с помощью мно­го­чле­­­на Нью­­тона удобнее про­во­дить интерполяцию в на­­ча­­ле и конце таблицы зна­че­ний функции.

В на­ча­ле таб­­лицы используют пе­рвую ин­­тер­по­ля­ци­он­ную фор­­му­лу Ньютона, а в кон­це - вто­­рую. Рас­­смотрим один из спо­­со­бов по­стро­ения пер­вой ин­­тер­по­ля­ци­он­ной фор­му­­лы.

Пусть некоторая функция f(х) задана таб­­лич­ны­ми зна­­чениями у0 = f(х0); у1= f(х1); ...; уn = f(хn) в рав­но­от­сто­­ящих узлах интерполяции {х0 , х1 = х0 + h;...; хn = x0+ nh}. Требуется по­стро­ить ин­тер­по­ля­ци­он­ный поли­ном Нью­тона Рn(х)сте­пе­ни n, при котором

Рn(х0 у0; Рn(х1 у1; ...; Рn(хn уn . (2.2)

     Будем искать полином в виде

Pn(x0) = a0 + a1(x - x0) +a2(x - x0) (x - x1) + ...

...+ an(x - x0) (x - x1)...(x - xn),                (2.3)

где неизвестные коэффициенты аi находятся из очень простых зависимостей. Для того чтобы най­­­ти а0, по­ло­жим х=х0. Очевидно, что при этом Рn(х0) º у0 а0 [это сле­ду­ет из формулы (2.2) ]. Но так как все члены урав­нения (2.3) , кроме пер­вого, со­де­р­­жат сомножитель (x - x0), сле­до­ва­­тель­но, они все станут равными нулю, и из формулы (2.3) с учетом формулы (2.2) имеем Рn(х0) = а0 º  у0 .

Для того чтобы найти а1, положим х = х1. Повторив все рас­суждения и учитывая, что значение по­ли­нома в ука­зан­ной точке будет тождественно рав­­но у1 [формула (2.2)], пос­­ле подстановки в формулу (2.3) х1 име­ем

 Pn(x1) = a0 + a1(x1 - x0) = у0 + а1 h = у1 .

Все остальные со­мно­жи­те­ли при неизвестных ко­эф­фи­циентах аi будут рав­ны ну­лю. Преобразуя по­след­нее вы­ражение, на­хо­дим а1  как а1 = D1/h [здесь D1 = Рn(х0 + h) - -Рn(х0) = у1 - у0 ].

Для того чтобы определить а2, положим х = х2 и, рас­­суж­дая аналогично, определим третий ко­эф­фи­циент как a2 = D2 / (2! h2).

Подставляя в выражение (2.3) последовательно все хn, при­хо­дим к общей формуле для получения коэф­фи­ци­ен­тов аi:

ai = Di / ( i! hi),

которые подставим в фор­­мулу (2.3) и получим пер­вую ин­­тер­по­ля­ци­он­ную формулу Ньютона:

   (2.4)

     В формуле (2.4) обычно выполняют замену пе­ре­мен­ных: q = (х - х0)/h, где h - шаг ин­тер­­по­ли­ро­ва­ния. Тогда пер­вая интер­по­ля­ци­он­ная фор­мула Нью­то­на за­пи­сы­ва­ет­ся несколько ина­че:

         (2.5)

При n = 1 получаем формулу линейного ин­тер­по­ли­рования; при n = 2 - параболического ин­тер­по­ли­ро­вания и т.д.

     Вторую интерполяционную формулу Ньюто­на по­­лу­ча­ют, если узлы интерполяции в Рn(х) бе­рут в не­сколько ином порядке:

Pn(x0) = a0 + a1(x - xn) + a2(x - xn) (x - xn-1) + ...

...+ an(x - xn) (x - xn-1) ... (x - x0) .

Тогда, рассуждая как и в случае пер­вой ин­тер­по­ля­ци­онной формулы, получаем ис­ко­мую форму записи по­ли­нома Ньютона, кото­рая из­вест­на как вторая ин­тер­по­ляционная фор­му­ла:

   (2.6)

Выполнив подстановку q = (х - хn)/h, получим иную за­пись интерполяционого многочлена Ньютона:

            (2.7)

     Первая интерполяционная формула Ньютона ис­поль­зу­ет­­ся для интерполирования в начале отрезка [хi, хi+1] и эктра­по­лирования до первой точки х0, т.е. для ин­тер­по­ли­ро­ва­ния впе­ред и экс­траполирования назад. При таком ин­тер­по­­ли­ро­ва­­нии q = (х - хi)/h > 0. При экс­т­ра­по­лировании на­зад по первой интерпо­ля­ци­­онной фор­муле q = (х - хi)/h < 0. При ин­тер­по­ли­ро­­вании в кон­це таблицы, т.е. при ин­­терпо­ли­ро­ва­нии назад, ког­да шаг ин­тер­по­ляции по­­сто­я­нен, при­меняют вто­рую ин­тер­по­ля­ци­он­ную фор­­му­лу Нью­тона, где q = (х - хi+1) / h < 0. Эту же фор­­­мулу ис­поль­зу­ют при экст­ра­­по­ли­ро­ва­нии впе­ред (в кон­це таблицы), но тогда q = (х - -хi+1)/ h>0.

Как уже отмечалось, полином Нью­то­­на является иной записью полинома Лагранжа для функ­ции, за­дан­ной в рав­но­отстоящих узлах ин­тер­по­ляции.

Формальные параметры процедур. Входные: x, y (тип real) - мас­сивы за­дан­ных зна­че­ний хi и yi; n (тип integer) - ко­­­ли­чес­т­во то­чек в мас­сивах x и y; x1 (тип real)- ис­ко­­­мая точ­ка. Выходные: процедура-функ­ция воз­­вра­щает ве­щест­венное значение функ­ции в точке х1 со­гласно по­строенному полиному.

Оценка погрешности первой и второй ин­тер­по­ля­­ци­он­ных формул Ньютона получается из оцен­ки по­греш­ности интерполяционного поли­но­ма Ла­­гран­жа. Вве­дем обоз­на­че­ние h = хi+1 - хi и полагая для пер­вой ин­тер­по­ля­ци­он­ной фор­мулы q = (х - х0)/h, а для вто­рой q = (х - хn)/h, по­лу­чим для первой ин­­тер­поляционной формулы

и для второй интерполяционной формулы

.

Здесь x - некоторая точка из отрезка ин­­тер­по­ли­ро­ва­ния [х0, хn] в случае задачи ин­тер­по­ли­ро­ва­­ния или не при­над­ле­­жа­щая указанному от­рез­ку в случае за­­дачи экс­тра­по­ли­ро­ва­­ния. Выполняя пре­­­­дель­ный пе­­ре­ход для

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

и для второй интерполяционной формулы

.

По последним формулам производится оценка по­­­­грешности интерполирования.

         

     Интерполяция функции кубическими сплайнами

На практике редко проводят интерполяцию по­ли­­но­ма­ми высших степеней, так как, во-пер­вых, они да­ют зна­чи­тель­ные погрешности и, во-вто­­рых, при бес­ко­неч­ном уве­ли­чении порядка n ин­­тер­­по­ля­ци­он­но­­го по­ли­но­ма Рn(х) по­сле­­до­ва­тель­­ность Pn рас­хо­дит­­ся (согласно те­­о­реме Фа­бе­ра). Этот факт впер­вые обнаружил Рунге в 1901 г. Им же бы­ла вы­ска­за­на идея об ин­тер­по­ли­ро­­ва­­нии дви­­жущимися по­­ли­но­мами. Однако, так как сплайн­-интерполяция да­ва­ла бо­лее хорошие и ус­­той­чи­вые результаты, эта идея не по­лу­чи­ла ши­­ро­­ко­го рас­про­­странения.

     Haибольшей популярностью сегодня на прак­ти­ке при ин­терполяции пользуются полиномы 2-й и 3-й сте­пени. Ос­тановимся под­роб­нее на по­ли­но­мах 3-й сте­пе­ни, так на­зы­ваемых ку­­­бич­еских сплай­нах.

     Кубические сплайн-функции моделируют очень ста­­рое ме­­­ханическое устройство, которым поль­зо­ва­лись чер­теж­­ни­ки. Они брали гибкие рейки, из­­го­тов­лен­ные из до­­ста­точ­но упругого ма­те­ри­а­ла, на­при­мер из дерева. Эти рейки за­креп­ляли, под­­­ве­ши­вая груз­ики в точках ин­­терполяции, на­­зы­­­­ва­е­мых ин­тер­по­ляционными узлами. Рей­­ка или ме­ха­ни­чес­кий сплайн при­ни­ма­ли форму с на­и­мень­­шей по­тен­ци­аль­ной энер­ги­­ей. Последнее ус­ло­­­вие имеет свое мате­ма­ти­чес­­­кое вы­ра­жение: f(IV)(x)º 0. Если при этом сплайн н е раз­ру­­ша­ет­ся, то тог­да сле­дует, что f и f' должны быть не­пре­рыв­ны на[х0, хn] . Из теории балок известно, что функ­ция f(х) меж­ду каж­дой парой заданных то­чек может быть предствлена по­­линомом 3-й сте­пени

f(xi) = ai + bi(x - xi) + ci(x - xi)2 + di(x - xi)3,

где хi-1< х < хi. При этом между каждой парой со­сед­­них уз­­­лов полиномы соединяются непрерывно (так­ же, как их пер­­вые и вторые про­из­вод­ные).

Кубическую сплайн-функцию, удов­ле­тво­ря­ю­щую ус­ло­ви­­ям f"(х1) = f"(хn )= 0, называют ес­тест­­­венным ку­би­чес­ким сплайном. С ма­те­ма­ти­чес­кой точки зре­ния бы­ло до­ка­за­­но [Алберг, 1972], что она является един­ствен­ной функ­ци­­ей, об­ла­да­ю­щей минимальной кри­виз­ной среди всех функ­­­ций, интерполирующих данные точ­ки и име­ю­щих квад­­­ратично ин­те­гри­ру­е­мую вторую про­­из­­вод­ную. В этом смыс­­ле ку­би­чес­кий сплайн будет са­­мой гладкой функцией, ин­­тер­по­ли­­ру­ю­щей за­дан­ные точ­ки.

     Построение кубического сплайна - простой и чис­лен­­но ус­­тойчивый процесс. Вычислительных схем, ре­­а­ли­­зу­ющих по­­строение кубического сплайна по за­дан­ным зна­чениям функ­­ции, в математике из­вест­но до­воль­но мно­го. Здесь на­ми рассмотрена одна из эф­фек­тив­ных и прос­тых вы­чис­ли­тель­­ных схем, об­ла­дающая свойством абсолютной ус­той­чи­­­вос­ти. Рас­смотрим под­ин­­тер­вал [хi, хi+1] и пусть

hi = хi+1 - хi; w = (х - хi )/ h ; W = 1 - w.

Оче­видно, когда х пробегает значения из ука­зан­но­го под­ин­тервала, w изменяется от 1 до 0, а W - от 0 до 1. Рас­суж­дая, приходим к следующему пред­став­ле­нию сплай­на на этом подинтервале:

,

где si и si+1 - некоторые константы, которые пред­сто­­ит оп­ре­делить.

Первый и второй члены в этой фор­му­ле со­от­вет­с­твуют ли­ней­ной ин­тер­поляции, а член, взя­­тый в квад­ратные скоб­ки,- это ку­би­чес­кая по­прав­­ка, ко­то­рая обес­­­пе­чивает не­обходимую глад­­кость функ­ции. От­ме­тим, что она на концах под­­­ын­тер­­­ва­ла об­ра­ща­ется в 0 и тогда s(хi) = уi; s(хi+1) = уi+1. Та­ким об­ра­зом, s(х) будет ин­тер­по­ли­ровать за­­дан­ные зна­че­ния не­за­ви­си­мо от вы­бо­раsi

     Продифференцируем трижды s(х) как слож­ную функ­цию от х и, учитывая, что w' = 1/hi, W' = -1/hi, по­лу­чим про­из­водные s(х) 1-, 2- и 3-го порядков

,

, . Заметим, что s"(х) - линейная функция, ин­тер­по­ли­ру­ю­щая зна­че­ния6si и6si + 1 в точке х = хi . Сле­до­­­вательно, ко­эф­фи­циент si = s"(хi)/6, а s'''(х) яв­ля­­­ет­ся константой на каж­дом под­ин­тер­ва­ле и по­э­то­­му четвертая про­из­вод­ная тож­де­­ственно рав­на 0.

     На концах подинтервала s'+(хi) = s'-(хi), так как ра­нее бы­ло выставлено требование непре­рыв­нос­­ти функ­ции s(х). Но, с другой стороны,

s'+(хi) = Di - hi (si+1 +2si) и s'-(хi+1) = Di + hi (2si+1+si),

где Di = (уi+1 - уi)/hi. С учетом равенства про­из­вод­ных слева и справа в окрестности каждой точки для всех i по­­лу­ча­ем

Di - hi(si+1+ 2si) = Di-1 - hi-1(2si + si-1),

от­куда имеем трехточечную систему из n - 2 ли­ней­ных урав­нений относительно si

hi-1si-1+ 2(hi-1+ hi)si + hi si+1 = Di - Di-1,

где i = 1, 2, ..., n.

     Заменим третью производную по s разностью треть­его по­рядка. Тогда условие для s'''(х) в кра­е­вых точках i =1 и i = n запишется

(s2- s1) / h1 = D1(3)(sn - sn-1) / hn-1 = D(3)n-3.

Здесь введены следующие обозначения:

     Умножим полученные равенства для разностей треть­его по­рядка на квадрат их зна­ме­на­телей и по­лучим:

-h1s1 + h1s2 = h12D1(3) ; hn-1sn - hn-1sn-1= -hn-12D(3)n-3 .

     Таким образом, для сплайна с заданными вы­ше гра­нич­ны­ми условиями коэффициенты si удов­­ле­тво­ря­ют сле­ду­ю­щей системе из n линейных урав­­не­­ний с n не­из­вест­ными:

Последнюю систему из n линейных уравнений с n не­из­вес­тными можно решать методом ис­клю­­че­­ния, но однако ес­ли при решении ис­поль­зо­вать осо­­бые свой­ст­ва матрицы сис­темы (она трех­ди­а­го­наль­ная, сим­мет­ричная, для лю­бо­го выбора х1< х2< ... < хn не­вы­рож­­денная и диагонально до­минирующая), то всегда су­ще­ствует един­ствен­ное ре­ше­ние системы. Обозначим это решение через s1, s2, ..., sn . Мож­но так­же показать, по­скольку для всех х1, х2, ..., хn мат­­ри­ца ко­эффициентов хо­­рошо обус­лов­ле­на, то Гауссово ис­­клю­чение при­­ведет ис­­ход­ную сис­тему к ленточной фор­ме:

 .

Здесь вычисляются

- диагональные элементы ai:

a1 = - h1 ;ai = 2(h i-1 + hi) - h2i-1 / ai-1 ;

an = -hn-1 - h2n-1/ an-1;

 - правые части матрицы bi:

b1 = h21 D(3)1;  bi = (Di - Di-1) - hi-1bi-1 / ai-1;

 bn  = -h2n-1D(3)n-3- hn-1bn-1/ an-1,

(здесь для всех соотношений i = 2, 3, ..., n-1). Тог­да искомые si определяются через обратную под­­становку

sn = bn / an; si = (bi - hi s i+1) / a i

для всех i = n - 1,  n - 2, ..., 1.

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

В некоторых случаях по различным причинам пред­по­ч­ти­тельнее вычислять и сохранять коэф­фи­ци­ен­ты bi, сi и di для функции s(х), записанной в не­сколь­ко ином виде :

s(х) = уi + bi (х - хi ) + сi (х - хi)2 + di (х - хi )3 ,

 x Î [xi, xi+1],

где на каждом подынтервале [хi, хi+1] указанные коэф­фициенты выражаются через s i и hi:

 bi = (уi+1- уi) / hi - hi (si+1 + 2si); сi = 3si;

 di = (si+1 - si) / hi.

Использованиe такой формы хранения сплайнов упро­­щает не­которые операции с ними, например при вы­числении про­из­­водных и интегралов. За­ме­тим по­пут­но, что при N = 1 сплайн сов­­падает с мно­го­членом Нью­тона первой сте­пе­ни.

На практике, если дано достаточно много то­чек, то для по­стро­ения кубического сплайна вы­би­­­­рают 4 по­сле­до­ва­тел­ьно рас­положенные, по ко­­торым строят пер­вый по­ли­ном. Затем сдви­­га­ются на 3 точки и снова по 4 по­сле­до­ва­тель­­ным точ­кам стро­ят следующий сплайн. И так по­сту­па­­ют до тех пор, пока все точки не бу­дут вы­бра­ны.

     Формальные параметры процедур. Входные: n (тип integer) - ко­ли­чес­тво точек, по ко­то­рым строится сплайн (oно должно быть не меньше 2, но не боль­ше 4); x, y (тип real) - два массива раз­ме­ром 1´n, в ко­то­рые предварительно за­писаны данные для построения оче­редного сплайна. Вы­ходные: b, c, d (тип real) - массивы ко­эффициентов ку­бического сплай­на, если были пред­ло­же­­ны 4 точки.

    

Задание

 

По заданному преподавателем методу разработать программное средство.

 

Требования к программе

 

 

1. Программа должна быть написана в среде Visual Studio или Delphi.

2. В программе должно быть предусмотрено следующее:

- ввод исходных данных и вывод результата в удобной для пользователя форме;

- справка с комментариями по работе с программой;

- корректировка исходных данных;

- сохранение исходных данных и результата в файле.

 

 

 

Порядок выполнения работы

 

1. Получить задание у преподавателя.

2. Разработать алгоритм решения задачи.

3. Реализовать полученный алгоритм.

4. Проанализировать результаты работы алгоритма.

5. Оформить отчет по лабораторной работе.

 

Содержание отчета

 

1. Номер и тема лабораторной работы.

2. Цель выполнения работы.

3. Описание алгоритма.

4. Руководство пользователю.

5. Пример работы программы.

6. Анализ полученных результатов и вывод по работе.

7. Текст программы с комментариями привести в приложении.

 

Лабораторная работа № 3


Дата добавления: 2018-04-15; просмотров: 250; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!