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




Введение

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

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

Список лабораторных работ

Табулирование функций

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

Рассмотрим два случая табулирования функции:

· С постоянным шагом изменения аргументов.

· С произвольным набором значений аргумента.

Алгоритм реализуется путем организации какого-либо цикла.

Пример 1.Вычислить

,

при R = 4.28 • 10-2; λ = 2.87;

xi изменяется с шагом Δх = 2; хn = 2; хk = 10.

Введем обозначение λ = 2.87.

Протокол программы:

R = 4.28е-02; = 2.87;

% Задается начальное значение х, шаг и конечное значение х

х = 2.0: 2.0: 10.0;

% Для вывода значения у в конце строки символ; не ставится!

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

Результаты вычислений:

ans =

2.0000 4.0000 6.0000 8.0000 10.0000

0.0682 0.1634 0.2517 0.3386 0.4250

Пример 2.Вычислить и вывести на экран значения функции

;

При х1 = 12.8; х2 = 23.4;х3 = 27.2; х4 = 17.8;х5 = 16.3; х6 = 14.9; а = 1.35; b = 0.98.

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

Протокол программы:

а = 1.35; b = 0.98; х (1) = 12.8; х (2) = 23.4; х (3) = 27.2; х (4) = 17.8; х (5) = 16.3; х (6) = 14.9;

form = 1:6; ;

% В конце строки вычисления функции у символ; не ставится.

y=   0.3609
y=   0.2327
y=   0.1473
y=   0.1800
y=   0.1771
y=   0.1658

Данные вычислений можно вывести в виде таблицы, если использовать запись [ х; у ] без точки с запятой или [ х у ].

Варианты заданий

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

Таблица 1

№ п/п Функция y1 = f(xi) Задача А Задача В
a b хн хк Δх x1 x2 хз х4 x5
  - 2.5 1.28 3.28 0.4 1.1 2.4 3.6 1.7 3.9
  1.35 0.98 1.14 4.24 0.62 0.35 1.28 3.51 5.21 4.16
  2.0 0.95 1.25 2.75 0.3 2.2 3.78 4.51 6.58 1.2
  - - 1.25 3.25 0.4 1.84 2.71 3.81 4.56 5.62
  -2.5 3.4 3.5 6.5 0.6 2.89 3.54 5.21 6.28 3.48
  - - 0.2 2.2 0.4 0.1 0.9 1.2 1.5 2.3
  0.4 0.8 3.2 6.2 0.6 4.48 3.56 2.78 5.28 3.21
  1.2 0.48 0.7 2.2 0.3 0.25 0.36 0.56 0.94 1.28
  1.1 0.09 1.2 2.2 0.2 1.21 1.76 2.53 3.48 4.52
  0.05 0.06 0.2 0.95 0.15 0.15 0.26 0.37 0.48 0.56
  2.0 3.0 0.11 0.36 0.05 0.08 0.26 0.35 0.41 0.53
  1.6 - 1.2 3.7 0.5 1.28 1.36 2.47 3.68 4.56
  4.1 2.7 1.2 5.2 0.8 1.9 2.15 2.34 2.73 3.16
  7.2 4.2 1.81 5.31 0.7 2.4 2.8 3.9 4.7 3.16
  - - 0.26 0.66 0.08 0.1 0.35 0.4 0.55 0.6
  2.0 1.1 0.08 1.08 0.2 0.1 0.3 0.4 0.45 0.65
  0.1 0.5 0.15 1.37 0.25 0.2 0.3 0.44 0.6 0.56
  2.5 4.6 1.1 3.6 0.5 1.2 1.28 1.36 1.46 2.35
  2.0 - 1.2 4.2 0.6 1.16 1.32 1.47 1.65 1.93
  0.8 0.4 1.23 7.23 1.2 1.88 2.26 3.84 4.55 -6.21
  - - 0.11 0.36 0.05 0.2 0.3 0.38 0.43 0.57
  2.25 - 1.2 2.7 0.3 1.31 1.39 1.44 1.56 1.92
  4.1 2.7 1.5 3.5 0.4 1.9 2.15 2.34 2.74 3.16
  7.2 1.3 1.56 4.71 0.63 2.4 2.8 3.9 4.7 3.16
  - - 0.22 0.92 0.14 0.1 0.35 0.4 0.55 0.6
  2.0 4.1 0.77 1.77 0.2 1.24 1.38 2.38 3.21 0.68
  0.1 0.5 0.33 1.23 0.18 0.5 0.36 0.40 0.62 0.78
  2.5 4.6 1.15 3.05 0.38 1.2 1.36 1.57 1.93 2.25
  2.0   1.08 1.88 0.16 1.16 1.35 1.48 1.52 1.96
  0.8 0.4 1.42 3.62 0.44 1.6 1.81 2.24 2.65 3.38

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

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

Пусть задана система п линейных алгебраических уравнений с п неизвестными:

(1)

Система уравнений (1) в матричной форме представляется следующим обра­зом:

АХ = В, (2)

где А - квадратная матрица коэффициентов, размером п х п строк и столбцов;

X - вектор-столбец неизвестных;

В - вектор-столбец правых частей.

Систему уравнений (2) можно решить различными методами. Один из наиболее простых и эффективных методов является метод исключения Гаусса и его модификации. Алгоритм метода основан на приведении матрицы А к треугольному виду (прямой ход) и последовательном вычислении неизвестных (обратный ход). Эти процедуры можно выполнять над невыраженными матрицами, в противном случае метод Гаусса неприменим.

Недостатком метода является накапливание погрешностей в процессе округления, поэтому метод Гаусса без выбора главных элементов используется обычно для решения сравнительно небольших ( п < 100) систем уравнений с плотно заполненной матрицей и не близким к нулю определителем. Если матрица А сильно разрежена, а ее определитель не близок к нулю, то метод Гаусса пригоден для решения больших систем уравнений. В MATLAB имеется обширный арсенал методов решения систем уравнений (2) методом исключения Гаусса. Для этого применяются следующие операторы

/ - правое деление;

\ - левое деление;

^ - 1-возведение в степень -1;

inv(А) - обращение матрицы А.

Выражения

X = В/А

X = В*А^-1

X = В*inv(А)

X = А\В

дают решения ряда систем линейных уравнений АХ = В, где А - матрица размером m х n, В- матрица размером п х к. Более сложные случаи решения систем уравнений (2) с плохо обусловленной матрицей А освещены в специальной литературе.

Пример 3.

Решить систему 4-х линейных уравнений:

Протокол программы (в М-файле)

а = [1.1161 0.1397 0.1254 0.1490;

0.1582 0.1768 1.1675 0.1871;

0.1968 1.2168 0.2071 0.2271;

0.2368 0.2568 0.2471 1.2671];

b = [1.5471; 1.6471; 1.7471; 1.8471];

Х4 = а\b

Эта программа выдает решение заданной системы с помощью четвертого оператора в виде матрицы - столбца

Х4 =

1.0406

0.9351

0.9870

0.8813

Внимание. В М-файле матрица а набирается по строкам, а элементыматрицы правых частей b отделяются символом;, т. е. тоже набираются по строкам. Решение другими операторами системы уравнений (2) требует набора матрицы а по столбцам, а элементы правых частей b отделяются только пробелом !

а = [1.1161 0.1582 0.1968 0.2368;
  0.1397 0.1768 1.2168 0.2568;
  0.1254 1.1675 0.2071 0.2471;
  0.1490 0.1871 0.2271 1.2671];
b = [1.5471 1.6471 1.7471 1.8471];

X1 =b/ а

Х2 = b*а ^ - 1

Х3 = b* inv(а)

Результаты решения

X1 =

1.0406 0.9351 0.9870 0.8813

Х2 =

1.0406 0.9351 0.9870 0.8813

X3 =

1.0406 0.9351 0.9870 0.8813

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

Таблица 2

  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;
  ;   ;

 

Аппроксимация функций

Одним из распространенных и практически важных случаев связи между аргументом и функцией является задание этой связи в виде некоторой таблицы {хi; уi}, например, экспериментальные данные. На практике часто приходится использовать табличные данные для приближенного вычисления у при любом значении аргумента х (из некоторой области). Этой цели служит задача о приближении (аппроксимации) функций: данную функцию f(х) требуется приближенно заменить некоторой функцией g(х) так, чтобы отклонение g(х) от f(х) в заданной области было наименьшим. Функция g(х) при этом называется аппроксимирующей. Если приближение строится на заданном дискретном множестве точек {хi}, то аппроксимация называется точечной. К ней относятся интерполирование, среднеквадратичное приближение и др. При построении приближения на непрерывном множестве точек (например, на отрезке [ а, b ]) аппроксимация называется непрерывной или интегральной. MATLAB имеет мощные средства точечной и непрерывной аппроксимации с визуализацией результата. Рассмотрим наиболее важную точечную аппроксимацию (обработка экспериментальных данных).

Пример 4.Используя линейную и полиномиальную аппроксимации, получить эмпирические формулы для функции у=f(х), заданной в табличном виде:

Xi 0.75 1.50 2.25 3.00 3.75
У i 2.50 1.20 1.12 2.25 4.28

Оценить погрешность эмпирических формул.

Протокол программы. В окне команд набираются значения хi и уi. Далее

выполняется команда построения графика только узловых точек.

>>х = [0.75, 1.50, 2.25, 3.00, 3.75];

>>у = [2.50, 1.20, 1.12, 2.25, 4.28];

>> plot (х, у,' 0 ');

Появляется окно с символами ' 0 ' на месте узловых точек (рис. 1).

Рис. 1 – Отображение узловых точек

Внимание. Следует помнить, что при полиномиальной аппроксимации максимальная степень полинома на 1 меньше числа экспериментальных точек!

На панели инструментов окна графика узловых точек в меню Тоо1s исполняем команду Basic Fitting. Появляется окно Основной Монтаж. В этом окне птичкой отмечаются необходимые данные аппроксимации. В частности, можно задать следующие операции:

· показать уравнение аппроксимирующей функции у = g(х);

· выбрать метод подбора: cплайн интерполяции: эрмитовская интерполяция, линейный, квадратный, кубический и т.д.

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

Рис. 2 – Пример графиков линейной и полиноминальной интерполяций

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

Linear: norm of residuals (норма погрешности) = 2.1061

Quadratic: norm of residuals = 0.10736

Cubic: norm of residuals = 0.035857 4

4th degree: norm of residuals = 9.6305^-015.

График погрешностей можно выводить в виде диаграмм (зоны), линий (линии) или отдельных точек (фрагменты). Сам график погрешностей представляет собой зависимость разности g(х) - f(х) в условных точках, соединенных прямыми линиями.

Кроме линейной и полиномиальной аппроксимации можно выбрать сплайн-аппроксимацию - когда на каждом интервале приближения используется кубический полином с новыми коэффициентами. В этом случае нельзя получить выражение для аппроксимирующей функции, т. е. такая аппроксимация является неполной. Аналогичными свойствами обладает и Эрмитовая аппроксимация. Она имеет только графическую интерпретацию.

Варианты заданий. Получить эмпирические формулы и оценить их погрешность для функции у =f(х), заданной таблично. Данные взять из таблицы 3.

Таблица 3

1. xi -3 -2 -1        
yi -0.71 -0.01 0.51 0.82 0.88 0.51 0.49
2. хi -6.6 -5.38 -3.25 -1.76 2.21 3.6 4.5
yi 2.89 1.41 0.29 -0.41 -0.69 -0.7 1.2
3. хi              
yi -0.31 0.9 2.11 3.3 4.51 5.73 6.93
4. хi -2 -1          
yi 7.1 3.9 1.1 0.8 3.1 4.5 5.3
5. хi -2 -1 -0.5   1.5   3.5
yi 5.9 2.8 2.1 3.2 6.1 7.6 4.3
6. хi -3 -2 -1        
yi 3.1 0.9 0.9 2.8 7.1 6.5 4.1
7. хi              
yi 10.0 7.5 5.5 4.0 3.0 2.0 2.24
8. хi -2 -1   1.5 2.3 2.6 2.9
yi 4.2 5.6 6.8 7.2 9.4 10.5 11.8
9. хi 10.0 12.0 13.0 15.0 18.0 20.0 21.0
yi 0.66 0.89 1.24 1.36 1.56 1.76 1.92
10. хi 22.0 24.0 27.0 30.0 31.0 35.0 40.0
yi 1.24 1.37 1.46 1.26 1.66 1.84 1.99
11. хi -7.0 -6.0 -5.0 -4.0 -3.0 -2.0 -1.0
yi 22.6 24.7 25.6 24.6 23.5 21.8 19.3
12. хi -25.0 -23.0 -21.0 -18.0 -17.2 -15.4 -14.0
yi 0.76 0.74 0.61 0.58 0.84 0.92 1.22
13. хi -4.0 -3.0 -2.0 -1.0 0.0 1.0 2.0
yi 1.71 1.56 1.24 1.36 1.78 2.21 4.31
14. хi -22.0 -20.0 -18.0 -16.0 -14.0 -12.0 -10.0
yi -2.26 -1.84 -1.92 -1.76 -1.56 -1.64 -1.34
15. хi 23.0 24.0 25.0 26.0 27.0 28.0 29.0
yi 1.26 1.37 1.44 1.56 1.15 1.28 1.06
16. хi 30.0 33.0 35.0 37.0 39.0 41.0 43.0
yi -2.6 -3.7 -2.5 -4.3 -2.3 -5.6 -1.9
17. хi 44.0 45.0 46.0 47.0 48.0 49.0 50.0
yi 2.24 3.46 5.36 1.89 1.76 1.54 2.12
18. хi 52.0 54.0 56.0 58.0 60.0 62.0 64.0
yi -1.28 -1.33 -1.44 -1.67 -1.77 -2.81 -2.16
19. хi 2.2 2.6 3.0 3.4 3.8 4.2 4.6
yi 1.88 1.65 1.61 1.73 1.56 1.24 1.99
20. хi 5.1 5.3 5.5 5.7 5.9 6.1 6.3
yi -2.8 -3.6 -5.7 -3.4 -1.9 -1.7 -1.5
21. хi 7.15 7.35 7.55 7.75 7.95 8.15 8.35
yi -2.2 -3.6 -1.7 -2.8 -1.6 -4.5 -2.2
22. хi 9.1 9.2 9.3 9.4 9.5 9.6 9.7
yi 1.48 1.16 2.08 1.96 1.81 2.31 5.61
23. хi -10.2 -10.1 -10.0 -9.9 -9.8 -9.7 -9.6
yi -6.5 -7.8 -10.2 -5.4 -4.6 -9.5 -10.3
24. хi 11.0 14.0 17.0 20.0 23.0 26.0 29.0
yi 1.2 1.6 1.9 1.1 1.16 1.24 1.36
25. хi -50.0 -48.0 -46.0 -44.0 -42.0 -40.0 -38.0
yi 1.23 1.32 1.57 1.19 1.16 1.10 2.28
26. хi -36.0 -34.0 -32.0 -30.0 -28.0 -26.0 -24.0
yi 1.1 1.3 2.1 1.9 1.7 1.5 1.8
27. хi 21.0 23.0 24.0 28.0 31.0 32.0 36.0
yi 1.24 1.37 1.56 1.64 1.84 1.26 1.14
28. хi 10.0 13.0 17.0 22.0 28.0 35.0 43.0
yi 1.21 1.36 1.51 1.84 1.06 1.21 1.36
29. хi -1.0 0.0 3.0 5.0 8.0 12.0 15.0
yi -2.1 -3.6 1.2 -4.3 1.8 2.6 -0.2
30. хi -8.0 -7.0 -5.0 -3.0 -1.0 2.0 5.0
yi 1.36 1.88 2.45 -2.1 -10.2 -4.4 1.16


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-01-11 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: