Решение систем линейных алгебраических уравнений
К решению систем линейных уравнений сводятся многочисленные практические задачи, например различные краевые задачи для обыкновенных дифференциальных уравнений и уравнений в частных производных. Можно с полным основанием утверждать, что данная проблема является одной из самых распространенных и важных задач вычислительной математики.
Пусть задана система п линейных алгебраических уравнений с п неизвестными:
. (2.1)
Система уравнений (2.1) в матричной форме представляется следующим образом:
АХ = В, (2.2)
где А – квадратная матрица коэффициентов, размером п ´ п строк и столбцов;
Х – вектор-столбец неизвестных;
В – вектор-столбец правых частей.
В MATLAB имеется обширный арсенал методов решения систем уравнений (2.2). Применяются, в частности, следующие операторы
\ | - левое деление; |
Ù - 1 | - возведение в степень –1; |
inv(A) | - обращение матрицы А. |
/ | - правое деление; |
A¢, B¢ | – транспонирование матриц |
Выражения
Х | = | A\В |
Х | = | А^ - 1* В |
Х | = | inv(A) * В |
Х | = | В¢/A¢ |
дают решения ряда систем линейных уравнений АХ = В, где А – матрица размером m ´ n, В – матрица размером п ´ к, в частности - столбец. Более сложные случаи решения систем уравнений (2.2) с плохо обусловленной матрицей А рассматривать не будем.
Пример 3.
Решить систему 4-х линейных уравнений:
Протокол программы (в М-файле)
A | = | [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] ; |
Х1 = A \ B
Эта программа выдает решение заданной системы в виде матрицы-столбца
Х1 | = | 1.0406 0.9351 0.9870 0.8813 |
Внимание. В М-файле матрица A набирается по строкам, в правой части B – столбец. Элементы B отделяются символом « ;» (точка с запятой).Число строк в обеих матрицах должно совпадать.
Операцию « \ » называют операцией левого деления (или же умножения слева на обратную матрицу inv(A)). Этой операции эквивалентна функция A\B = mldivide(A,B) (Matrix left division), вызываемая в командном окне.
Х | = | inv(A) * В. |
Систему можно также решить, вычисляя обратную матрицу inv(A) и умножая на нее слева вектор (матрицу) правых частей системы В
Решение с помощью оператора « \ » эффективнее, чем использование обратной матрицы. Это объясняется тем, что алгоритм решения системы линейных уравнений при помощи оператора « \ » определяется структурой матрицы коэффициентов системы. В частности, MATLAB исследует, является ли матрица треугольной, или может быть приведена перестановками строк и столбцов к треугольному виду, симметричная матрица или нет, квадратная или прямоугольная (умеет решать системы с прямоугольными матрицами – переопределенные или недоопределенные). Использовать специальные методы вместо оператора обратного деления « \ » следует, если имеется информация об особенных свойствах матрицы системы.
Операция правого деления « / » также имеется в MATLAB, но она решает системы линейных уравнений несколько иного вида Y×A=B и поэтому требует перестановки местами матриц А и В. Выражение В¢/А¢ эквивалентно В¢*inv(A¢) или вызову функции mrdivide(B¢,A¢)- right-matrix division. При правом делении у матриц должно совпадать число столбцов, поэтому в нашем случае берутся транспонированные матрицы В¢,А¢
А¢ | = | [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] ; |
В¢ | = | [1.5471 1.6471 1.7471 1.8471] ; |
Решения, найденные с помощью команд
Х2 = В¢* А¢ ^ - 1
Х3 = В¢* inv(А¢)
Х4= В¢/А¢ ,
будут иметь вид вектора-строки.
Х1 | = | 1.0406 0.9351 0.9870 0.8813 |
Х2 | = | 1.0406 0.9351 0.9870 0.8813 |
Х3 | = | 1.0406 0.9351 0.9870 0.8813 |
Варианты заданий. Решить систему линейных алгебраических уравнений с помощью 4-х операторов. Данные взять из таблицы 2.2.
Таблица 2.2
Аппроксимация функций
Одним из распространенных и практически важных случаев связи между аргументом и функцией является задание этой связи в виде некоторой таблицы {xi ; yi}, например, экспериментальные данные. На практике часто приходится использовать табличные данные для приближенного вычисления у при любом значении аргумента х (из некоторой области). Этой цели служит задача о приближении (аппроксимации) функций: данную функцию f(x) требуется приближенно заменить некоторой функцией g(х) так, чтобы отклонение g(х) от f(x) в заданной области было наименьшим. Функция g(х) при этом называется аппроксимирующей. Если приближение строится на заданном дискретном множестве точек {xi}, то аппроксимация называется точечной. К ней относятся интерполирование, среднеквадратичное приближение и др. При построении приближения на непрерывном множестве точек (например, на отрезке [a, b]) аппроксимация называется непрерывной или интегральной. MATLAB имеет мощные средства точечной и непрерывной аппроксимации с визуализацией результата. Рассмотрим наиболее важную точечную аппроксимацию (обработка экспериментальных данных).
Пример 4. Используя линейную и полиномиальную аппроксимации, получить эмпирические формулы для функции у=f(x), заданной в табличном виде:
xi | 0.75 | 1.50 | 2.25 | 3.00 | 3.75 |
yi | 2.50 | 1.20 | 1.12 | 2.25 | 4.28 |
Оценить погрешность эмпирических формул.
Протокол программы. В окне команд набираются значения xi и yi. Далее выполняется команда построения графика только узловых точек.
>> x = [0.75, 1.50, 2.25, 3.00, 3.75] ;
>> y = [2.50, 1.20, 1.12, 2.25, 4.28] ;
>> рlot (x, y, ¢ 0 ¢) ;
Появляется окно с символами ¢ 0 ¢ на месте узловых точек (рис. 2.1).
4.5 | |||||||||
3.5 | |||||||||
3 | |||||||||
2.5 | |||||||||
2 | |||||||||
1.5 | |||||||||
0.5 | |||||||||
0.5 | 1.5 | 2.5 | 3.5 |
Рис. 2.1
Внимание. Следует помнить, что при полиномиальной аппроксимации максимальная степень полиноме на 1 меньше числа экспериментальных точек!
На панели инструментов окна графика узловых точек в меню Tools исполняем команду Basic Fitting. Появляется окно Основной Монтаж. В этом окне птичкой отмечаются необходимые данные аппроксимации. В частности, можно задать следующие операции:
- показать уравнение аппроксимирующей функции у = g(х);
- выбрать метод подбора: сплайн интерполяции
эрмитовская интерполяция
линейный
квадратные
кубический
…………….
В нашей задаче выбираем линейную и полиномиальную аппроксимации. В окне графика появляются соответствующие графики разноцветом и формулы аппроксимирующих функций (рис. 2.2).
Рис. 2.2
Чтобы узнать погрешность аппроксимации, надо отметить птичкой параметр График остатка в окне Основной Монтаж, и Показать норму остатков. График погрешностей с нормами можно вынести в отдельное окно, или вместе с графиком и аппроксимирующих функций – суб-график. Норма погрешностей указывает на статистическую оценку среднеквадратической погрешности. Чем она меньше, тем точнее полученная аппроксимирующая функция у = g(х). В нашем примере:
Linear : norm of residuals (норма погрешности) = 2.1061
Quadratic : norm of residuals = 0.10736
Cubic : norm of residuals = 0.035857
4 th degree : norm of residuals = 9.6305e-015.
График погрешностей можно выводить в виде диаграмм (зоны), линий (линии) или отдельных точек (фрагменты). Сам график погрешностей представляет собой зависимость разности g(х) - f(x) в условных точках, соединенных прямыми линиями.
Кроме линейной и полиномиальной аппроксимации можно выбрать сплайн- аппроксимацию – когда на каждом интервале приближения используется кубический полином с новыми коэффициентами. В этом случае нельзя получить выражение для аппроксимирующей функции, т. е. такая аппроксимация является неполной. Аналогичными свойствами обладает и Эрмитовая аппроксимация. Она имеет только графическую интерпретацию.
Варианты заданий. Получить эмпирические формулы и оценить их погрешность для функции у = f(x), заданной таблично. Данные взять из таблицы 2.3.
Таблица 2.3
1. | xi | -3 | -2 | -1 | ||||
yi | -0.71 | -0.01 | 0.51 | 0.82 | 0.88 | 0.51 | 0.49 | |
2. | xi | -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. | xi | |||||||
yi | -0.31 | 0.9 | 2.11 | 3.3 | 4.51 | 5.73 | 6.93 | |
4. | xi | -2 | -1 | |||||
yi | 7.1 | 3.9 | 1.1 | 0.8 | 3.1 | 4.5 | 5.3 | |
5. | xi | -2 | -1 | -0.5 | 1.5 | 3.5 | ||
yi | 5.9 | 2.8 | 2.1 | 3.2 | 6.1 | 7.6 | 4.3 | |
6. | xi | -3 | -2 | -1 | ||||
yi | 3.1 | 0.9 | 0.9 | 2.8 | 7.1 | 6.5 | 4.1 | |
7. | xi | |||||||
yi | 10.0 | 7.5 | 5.5 | 4.0 | 3.0 | 2.0 | 2.24 | |
8. | xi | -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. | xi | 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. | xi | 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. | xi | -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 | |
Продолжение таблицы 2.3 | ||||||||
12. | xi | -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. | xi | -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. | xi | -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. | xi | 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. | xi | 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. | xi | 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. | xi | 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. | xi | 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. | xi | 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. | xi | 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. | xi | 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. | xi | -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. | xi | 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. | xi | -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. | xi | -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. | xi | 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. | xi | 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. | xi | -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. | xi | -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 |