Смекни!
smekni.com

Задачи изучения дисциплины 5 4 Перечень дисциплин, усвоение которых необходимо для изучения данной дисциплины: 6 (стр. 11 из 19)

3) Написать программу для построения трехмерной поверхности функции z=f(x, y) следующего вида z = f(x).*sin(y)./y, где f(x) берется из табл. 1 (см. приложение А). Задать цветовую шкалу для значений z, используя команды COLORMAP и COLORBAR.

4) Написать программу для проверки генератора случайных чисел. На одном графическом экране построить гистограммы нормального и равномерного законов распределений (использовать операторы RAND, RANDN, SUBPLOT и HIST).

Отчет по данной работе представляет собой программу (один или несколько m-файлов) на языке MATLAB. Листинг программы в письменном виде или саму программу в виде m-файла следует прислать для проверки в ТМЦ ДО ТУСУР. Программа должна содержать все необходимые комментарии, объясняющие работу отдельных фрагментов и основных операторов. Также в заголовке программы в комментариях студент должен указать свои ФИО, идентификатор, пароль и номер варианта.

4.3 Лабораторная работа № 2. Решение систем линейных алгебраических уравнений методом Гаусса

Целью данной лабораторной работы является изучение одного из основных методов решения систем линейных алгебраических уравнений – метода Гаусса, а также закрепление навыков программирования в среде системы для инженерных расчетов MATLAB.

4.3.1 Вводные замечания

Система алгебраических линейных уравнений (СЛАУ) имеет вид:

(1)

Также СЛАУ можно записать в матричной форме

Ax=b,

где x=[x1,x2,…,xn]T – вектор-столбец неизвестных; b = [b1,b2,…,bn]T – вектор-столбец коэффициентов правой части системы (вектор свободных членов); А – матрица nxn коэффициентов левой части СЛАУ. Значок Т означает транспонирование матрицы (вектора), т.е. замену строки соответствующим столбцом.

В общем случае система (1) будет иметь единственное решение, если выполняются следующие условия:

1) число неизвестных xi (

) равно числу уравнений, т.е. матрица коэффициентов А должна быть квадратной;

2) определитель матрицы коэффициентов A не равен нулю, т.е. detA¹0.

Если detA=0, то в системе (1) есть линейно зависимые уравнения и СЛАУ в общем случае не имеет единственного решения. Система уравнений, у которой определитель матрицы коэффициентов равен нулю (detA=0), называется вырожденной.

Для решения СЛАУ используются два класса методов: прямые и итерационные. Прямые методы являются универсальными и используются для решения СЛАУ сравнительно невысокого порядка (n £ 100…200). Прямые методы – это методы, которые теоретически позволяют получить точное решение системы уравнений за конечное число действий. Они используют аналитические выражения, которые дают точный результат, если не делать округления чисел в процессе расчетов. К прямым методам относятся, в частности, методы Гаусса обратной матрицы, Крамера и др.

На практике при выполнении вычислений на ЭВМ неизбежны ошибки округления. Поэтому решение СЛАУ на ЭВМ с использованием прямых методов осуществляется с определенной погрешностью, которая возрастает с увеличением порядка системы уравнений.

В данной лабораторной работе студентам предлагается реализовать наиболее распространенный метод решения СЛАУ – метод Гаусса. Этот метод при реализации в виде программы требует гораздо меньшего числа вычислений, чем методы обратной матрицы и Крамера. Метод Гаусса применим только к СЛАУ с невырожденной матрицей коэффициентов (detA¹0).

4.3.2 Основные положения метода Гаусса

Метод Гаусса основан на приведении матрицы к треугольному виду. Это достигается последовательным исключением неизвестных из уравнений системы. Сначала при использовании первого уравнения в качестве ведущего исключается x1 из всех последующих уравнений СЛАУ. Затем с помощью второго уравнения исключается x2 из третьего и всех последующих уравнений и т.д. Этот процесс называется прямым ходом. Он продолжается до тех пор, пока в левой части последнего (n-го) уравнения не останется лишь один член с неизвестным xn, т.е. пока матрица коэффициентов А системы не будет приведена к треугольному виду.

На произвольном k-м шаге прямого хода формулы для пересчета коэффициентов имеют следующий вид:

;
;
.

Это основные формулы для прямого хода метода Гаусса.

Обратный ход метода Гаусса состоит в последовательном вычислении искомых неизвестных: решая последнее уравнение приведенной системы, находим неизвестное xn. Далее, используя это значение, из предыдущего (n–1)-го уравнения вычисляем xn–1, и т.д. Последним найдем x1 из первого уравнения.

Общая формула расчета переменных xk (

) имеет следующий вид

В процессе исключения неизвестных приходится выполнять деление неизвестных на коэффициенты a11, a22, … и т.д. Поэтому они должны быть отличными от нуля, в противном случае необходимо соответственным образом переставить уравнения СЛАУ. Перестановка уравнений должна быть предусмотрена в вычислительном алгоритме при его реализации на ЭВМ.

Недостаток стандартного метода Гаусса (метода единственного деления). При малой величине главного элемента

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

4.3.3 Стандартные функции системы MATLAB для работы с СЛАУ

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

norm – вычисление нормы векторов и матриц

Синтаксис: n=norm(A,p)

Функция n=norm(A,p) вычисляет p-норму матрицы А. В качестве параметра p можно использовать значения 1, 2 или inf. Матрица А имеет размер nxm.

n=norm(A,1) – вычисляет 1-норму матрицы А:

- максимальная сумма модулей элементов столбцов;

n=norm(A,inf) – вычисляет max-норму (¥-норма) матрицы А:

- максимальная сумма модулей элементов строк;

n=norm(A,2) – вычисляет 2-норму (евклидову норму) матрицы А:

.

cond – вычисление числа обусловленности матрицы

Синтаксис: k=cond(A)

Функция k=cond(A) возвращает число обусловленности матрицы А. Число обусловленности k – есть мера относительной погрешности при операциях обращения матрицы. Оно характеризует близость матрицы к вырождению. Матрицы с большим по величине числом обусловленности (близкие к вырожденной) дают большие ошибки при решении СЛАУ или обращении матрицы.

rcond – оценка числа обусловленности матрицы

Синтаксис: k=rcond(A)

Функция k=rcond(A) возвращает величину, обратную значению числа обусловленности матрицы А относительно 1-нормы. Если матрица А хорошо обусловлена, то значение k близко к единице, если матрица А плохо обусловлена, то значение k близко к нулю.

det – определитель матрицы

Синтаксис: d=det(A)

Функция d=det(A) вычисляет определитель квадратной матрицы.

inv – вычисление обратной матрицы

Синтаксис: Y=inv(A)

Функция Y=inv(A) вычисляет матрицу, обратную квадратной матрице А. В случае, когда матрица А плохо масштабирована или близка к вырожденной выдается соответствующее предупреждение.

На практике вычисление явной обратной матрицы требуется не часто. Если необходимо искать решение СЛАУ, то в среде MATLAB рекомендуется использовать решатели систем, т.е. операторы вида x=A\b или x=A/b, а не операцию x=inv(A)*b. Расчеты с помощью решателя систем выполняются быстрее и с большей точностью.

/ \ – решатели систем линейных уравнений

Синтаксис: X=B\A

X=B/A

Функция X=B\A находит решение системы уравнений вида AX=B, где А – прямоугольная матрица размера m x n и В – матрица размера n x k.

Функция X=B/A находит решение системы уравнений вида XA=B, где А – прямоугольная матрица размера n x m и В – матрица размера m x k.

lu – треугольное LU разложение матрицы

Синтаксис: [L,U,P]=lu(A)

Функция [L,U,P]=lu(A) находит разложение для квадратной матрицы А в виде трех составляющих – нижней треугольной матрицы L, верхней треугольной матрицы U и матрицы перестановок P, так что PA=LU.

Алгоритм LU-разложения основан на методе исключения Гаусса. LU-разложение широко используется при вычислении определителей, нахождении обратных матриц и при решении СЛАУ.

Для получения информации по другим функциям системы MATLAB для работы с линейной алгеброй см. дополнительную литературу или встроенный HELP среды.