Практичне заняття 2. Розв’язування систем лінійних рівнянь у системі matlab
МATLAB-програма порівняльного розв’язування СЛАР є компактною, але містить багато інформації.
%*********************************************************************
%**** Resolution of linear systems poorly conditioned **********
%*********************************************************************
clear;
for n=1:40;
%for n=1:12;
B=[1./(1:n)]'.*(1+1e-16*randn(n,1)); A=zeros(n);
%*** The Vandermonde matrix A(i,j)=b(i)^(j-1).
for j=1:n; A(:,j)=B.^(j-1); end; %A(:,13:n)=[];
x1=A\B; er1(n)=max(abs((A*x1-B)./B));
[L,U]=lu(A); y=L\B; x2=U\y; er2(n)=max(abs((A*x2-B)./B));
[Q,R]=qr(A); y=Q'*B; x3=R\y; er3(n)=max(abs((A*x3-B)./B));
end;
plot(1:n,er1,'b', 1:n,er2,'g', 1:n,er3,'r');
Увесь текст програми, крім першого і останнього операторів, охоплений циклом за індексом n від 1 до 40 з кроком 1. Оскільки n означає порядок системи, програма формує і розв’язує СЛАР різного порядку. Коментар показує, як задати порядки систем від 1 до 12.
На початку циклу утворено вектор-стовпець В, який є правим вектором системи Аx=В. Операція ділення з попередньою крапкою означає поелементне ділення, що виконується з кожним елементом матриці зокрема. Операція ділення без крапки означає матричне ділення. Це зауваження стосується всіх арифметичних операцій. Символ ' означає транспонування матриці. Вектор В поелементно домножується на близькі до одиниці коефіцієнти, що мають малі псевдовипадкові відхилення (функція randn). Ці відхилення потрібні для надійного розділення розв’язків системи.
Далі формується погано обумовлена квадратна матриця, названа іменем французького математика 18-го сторіччя Вандермонда (Vandermonde). До програми можна включити оператор, що в поданому тексті є коментарем (після символа %). Тоді матриця А буде прямокутною, починаючи з n=13.
Cистема Аx=В розв’язується тричі різними способами. Спочатку з використанням MATLAB-операції \, що означає розв’язування будь-яких СЛАР з автоматичним вибором методу розв’язування. Потім ця ж система розв’язується LU-розкладом та QR-розкладом. Для кожного з розв’язків обраховується похибка: максимальне значення модулів відносних похибок рівнянь з підставленими розв’язками. Значення похибок кожного розв’язку для кожного порядку n системи зберігаються в масивах er1, er2 та er3.
Останній оператор програми будує та виводить у графічне вікно залежності похибок розв’язків від розміру системи (рис. 5 та рис. 6).
- Інститут підприємництва та перспективних технологій Матвійчук я.М. Методи та алгоритми обчислень на еом
- Передмова
- Розділ 1. Обчислювальний метод та обчислювальний алгоритм
- Практичне заняття 1. Обрахунок степеневого поліному в системі matlab
- Практичне заняття 2. Розв’язування систем лінійних рівнянь у системі matlab
- Лабораторна робота 2. Розв’язування систем лінійних рівнянь у системі matlab
- Практичне заняття 3. Інтерполяція та апроксимація функції Рунге в системі matlab
- Лабораторна робота 3. Інтерполяція та апроксимація функції Рунге в системі matlab
- Практичне заняття 4. Сплайн-інтерполяція та сплайн-апроксимація в системі matlab.
- Лабораторна робота 4. Сплайн-інтерполяція та сплайн-апроксимація в системі matlab.
- Практичне заняття 5. Обчислення означених інтегралів у системі matlab
- Практичне заняття 6. Розв’язування нелінійних рівнянь у системі matlab
- Лабораторна робота 6. Розв’язування нелінійних рівнянь у системі matlab
- Практичне заняття 7. Оптимізація функції однієї змінної у системі matlab
- Лабораторна робота 7. Оптимізація функції однієї змінної у системі matlab
- Практичне заняття 8. Розв’язування задачі лінійного програмуван ня в системі matlab
- Практичне заняття 9. Розв’язування системи Ван-дер-Поля в системі matlab.