В ходе данной лабораторной работы студенты должны выполнить следующие пункты.
Реализовать метод исключения Гаусса без выбора главного элемента в виде процедуры на языке системы MATLAB (блок-схема алгоритма приведена ниже).
Протестировать реализованную процедуру решения СЛАУ на следующих тестовых задачах:
а) СЛАУ с хорошо обусловленной матрицей коэффициентов размером 50х50. Для формирования матрицы коэффициентов А и вектора свободных членов b можно использовать генераторы случайных чисел rand и randn (например, для матрицы A=rand(N) и вектора b=randn(N,1)).
б) СЛАУ с плохо обусловленной матрицей коэффициентов размером 50х50. Для получения плохо обусловленной матрицы можно использовать функции системы MATLAB A=hilb(N) или A=invhilb(N), которые генерируют плохо обусловленную матрицу Гильберта. Матрицы с большим числом обусловленности cond(A) ® ¥ (близкие к вырожденной) при использовании функции A=hilb(N) или A=invhilb(N) получаются при N ³ 15.
Для каждой сформированной матрицы коэффициентов А вычислить определитель det(A), число обусловленности cond(A) и оценку числа обусловленности rcond(A).
Сравнить полученное решение (вектор x) с результатами расчетов с помощью стандартного решателя системы MATLAB x=A\b.
Оформить отчет по лабораторной работе, который должен включать следующие обязательные разделы:
а) описание алгоритма метода исключения Гаусса (включая блок-схему);
б) текст программы решения СЛАУ методом Гаусса с необходимым числом комментариев;
элемента) для решения СЛАУ
в) результаты тестирования процедуры;
для каждой тестовой задачи необходимо привести вектор решений х, полученный своей программой и стандартным решателем MATLAB, значение определителя det(A) и величину числа обусловленности cond(А) матрицы коэффициентов и оценку числа обусловленности rcond(A);
г) выводы о проделанной работе.
Отчет по данной лабораторной работе выполняется с помощью текстового редактора MSWord или письменно. Отчет и написанную программу (m-файл) следует прислать для проверки в ТМЦ ДО ТУСУР. Программа должна содержать все необходимые комментарии, объясняющие работу отдельных фрагментов и основных операторов. Также в заголовке программы в комментариях студент должен указать свои ФИО, идентификатор и пароль.
4.4 Лабораторная работа № 3. Линейная полиномиальная интерполяция функций
Целью данной лабораторной работы является исследование поведения интерполирующего полинома и точности интерполяции в зависимости от числа узлов и вида приближаемой функции.
Интерполяция – это нахождение функции, которая в некоторых заранее указанных точках совпадает с заданной функцией.
Пусть на отрезке [a, b] задана n+1 точка x0, x1, … , xn (узлы интерполяции). Пусть в этих точках известны значения интерполируемой функции f(x):
yi = f(xi),
.Требуется построить функцию j(x), принадлежащую известному классу и принимающую в узлах интерполяции те же значения, что и f(x), т.е.
j(xi) = yi,
. (4.1)Геометрически это означает, что нужно найти кривую y=j(x) определенного вида, проходящую через заданную систему точек (xi, yi),
(см. рис. 4.1). Функция j(x) называется интерполирующей функцией.Рассмотрим задачу линейной интерполяции. При этом интерполирующая функция имеет следующий вид:
, (4.2)где j0(x), j1(x), … , jm(x) – базисные функции, вид которых задан; Ck – искомые коэффициенты.
Используя условие (4.1) и выражение (4.2), получаем систему уравнений
(4.3)Единственное решение системы (4.3) существует при двух условиях:
число точек (xi, yi),
равно числу коэффициентов Сk, , т.е. m = n.система уравнений (4.3) должна быть невырожденной, т.е. определитель системы D ¹0.
Таким образом, если выполняются вышеуказанные условия, то через точки (xi, yi) проходит единственная функция вида
.На практике в качестве интерполирующей функции j(x) часто используются алгебраические полиномы, так как
легко вычислять, дифференцировать и интегрировать. При этом интерполяция носит название полиномиальной.В случае линейной полиномиальной интерполяции базисные функции имеют следующий вид: j0(x)= x0=1, j1(x)= x1=x, j2(x)= x2, … , jm(x)= xm. Интерполирующая функция при этом имеет вид полинома степени m: j(x)= Pm(x)=C0 + C1 x + C2 x 2 + … +Cm x m. При m = n система (4.3) примет вид
(4.4)В матричной форме систему (4.4) можно переписать как А*C=B, где
– матрица Ван дер Монда; ; .Решением системы (4.4) будет вектор коэффициентов полинома С. Так как определитель матрицы Ван дер Монда всегда отличен от нуля (при xi¹xj), то решение системы (4.4) – единственное. Для решения системы (4.4) необходимо найти обратную матрицу A. В этом случае решением (4.4) будет C=A–1*B.
Вывод: Таким образом, через заданные на интервале [a, b] точки (xi, yi),
всегда можно провести единственный интерполяционный полином степени n Pn(x)=C0 + C1 x + + C2 x2 + … +Cnxn, коэффициенты которого находятся в результате решения системы (4.4).Выражение (4.1) определяет поведение функции j(x) только в узлах интерполяции (xi, yi),
. Между узлами j(x) может вести себя произвольным образом, сколь угодно далеко, в принципе, отклоняясь от зависимости f(x). Определить погрешность приближения можно, используя выражение для абсолютной ошибки e=| f(x) – j(x) |.Ошибка полиномиальной интерполяции. Лучший способ проверить качество интерполяции – вычислить значения интерполирующей функции в большом числе точек и построить график. Однако в некоторых ситуациях качество интерполянта можно проанализировать. Предположим, что величина yi представляет собой точные значения известной функции f(x) в точках xi. Пусть Pn(x) – единственный полином n-й степени, интерполирующий функцию по этим точкам (xi, yi),
. Предположим, что во всех точках хÎ[a, b] функция f(x) имеет (n+1)-ю непрерывную производную. Тогда можно показать, что абсолютная ошибка интерполяции e(x) = | f(x)– Pn(x) | в некоторой точке определяется выражением , (4.5)где
- максимальное значение (n+1)-й производной функции f(x) на интервале [a, b]; . Рисунок 4.2 – Интерполяция функции Рунге полиномом степени n |
Теперь посмотрим, что получится, если интерполировать известную функцию f(x) все в большем и большем числе точек на фиксированном интервале. Выражение для погрешности (4.5) состоит из трех разных частей: факториал и произведение разностей wh(x) с увеличением n уменьшают ошибку, но порядок производной при этом растет. Для многих функций величина Mn+1 увеличивается быстрее, чем (n+1)!. В результате полиномиальные интерполянты далеко не всегда сходятся к обычной непрерывной функции. Практический эффект выражается в том, что интерполирующий полином высокой степени может вести себя очень плохо в точках, отличных от узлов интерполяции (xi, yi),
. Поэтому на практике обычно используют интерполирующие полиномы степени не выше 5-6.