трусики женские украина

На головну

 Метод квадратних коренів для симетричної матриці при вирішенні систем лінійних алгебраїчних рівнянь - Математика

Міністерство освіти і науки Російської Федерації

Новосибірський державний технічний університет

Кафедра економічної інформатики

Курсова робота

з дисципліни «Чисельні методи»

на тему: «Метод квадратних коренів для симетричної матриці при вирішенні СЛАР»

Новосибірськ, 2010

Зміст

Введення

1. Математична постановка задачі

2. Опис програмного забезпечення

3. Опис тестових завдань

4. Аналіз результатів. Висновки

Висновок

Список використаної літератури

Введення даної роботі ми будемо досліджувати метод квадратних коренів для симетричної матриці при вирішенні систем лінійних алгебраїчних рівнянь (СЛАР).

У житті, дуже часто доводиться описувати стан різних об'єктів, у тому числі й економічних за допомогою математичних моделей. Після того, як об'єкт описаний такою моделлю, дуже часто необхідно знайти його стан рівноваги.

Саме тоді, щоб знайти цей стан, доводиться вирішувати систему рівнянь алгебри. У нашому випадку система складається з n лінійних рівнянь з n невідомими, і її можна описати так:

Також дану систему можна записати і в матричному вигляді:

Тоді ми будемо мати матрицю коефіцієнтів А:

,

стовпець вільних членів рівнянь f:

,

і стовпець невідомих х:

.

Щоб дана СЛАР мала єдине рішення, потрібно, щоб визначник матриці коефіцієнтів А чи не був рівний нулю (det (A)) ?0.

Дану систему можна вирішити багатьма методами. Наприклад, методом Гаусса. Вирішення цієї системи методом Гаусса потребують виконати

дій,

де n - число невідомих у рівнянні. А це досить таки складно, особливо при великих порядках числа n.

Ще одним точним методом для вирішення даних СЛАР є розглянутий у цій роботі метод квадратних коренів для симетричної матриці А.

Вивчати даний метод ми будемо таким чином. Спочатку розглянемо математичну постановку задачі для методу квадратних коренів при вирішенні СЛАР. У даному розділі буде повністю описана математична модель методу. Потім розглядається розроблена реалізація даного методу в середовищі MatLab 7.0. Після того, як метод буде реалізований, можна провести аналіз точності цього методу. Аналіз буде грунтуватися на дослідженні впливу мірності матриці А, її обумовленості, розрідженості на точність отриманого рішення. За результатами дослідження буде приведений графік залежності точності отриманого рішення від мірності матриці А.

метод рішення корінь симетрична матриця

1. Математична постановка задачі

Метод квадратних коренів використовується для вирішення лінійної системи виду Ах = f (1.1), в якій матриця А є симетричною, тобто аij = aji, де (i, j = 1, 2, ..., n).

Даний метод є більш економним і зручним у порівнянні з рішенням систем загального вигляду. Рішення системи здійснюється в два етапи.

Прямий хід. Уявімо матрицю А у вигляді добутку двох взаємно транспонованих трикутних матриць:

А = Т ? Т, (1.2)

де, а.

Перемножая матриці T ? і T і прирівнюючи матриці A, отримаємо такі формули для визначення tij:

(1.3)

Після того, як матриця Т знайдена, систему (1.1) замінюємо двома еквівалентними їй системами з трикутними матрицями

T ? y = b, Tx = y. (1.4)

Зворотний хід. Записуємо в розгорнутому вигляді системи (1.4):

(1.5)

(1.6)

І з цих систем (1.5) і (1.6) послідовно знаходимо

(1.7)

При обчисленнях застосовується звичайний контроль за допомогою сум, причому при складанні суми враховуються всі коефіцієнти відповідного рядка.

Зауважимо, що при дійсних aijмогут вийти чисто уявні tij. Метод застосовний і в цьому випадку.

Метод квадратних коренів дає великий виграш у часі в порівнянні з іншими методами (наприклад, методом Гаусса), так як, по-перше, істотно зменшує число множень і ділень (майже в два рази для великих n), по-друге, дозволяє накопичувати суму творів без запису проміжних результатів.

Всього метод квадратних коренів вимагає

операцій множення і ділення (приблизно в два рази менше, ніж метод Гаусса), а також n операцій витягання корня.2. Опис програмного забезпечення

Метод квадратних коренів був реалізований через функцію function [e, x] = mkk (a, f), з вхідними змінними а і f і вихідними e і х, де

а - матриця коефіцієнтів А,

f - стовпець вільних членів,

х - стовпець знайдених рішень,

е - стовпець помилок.

Стовпець помилок обчислюється, як Е = А * х-f.

Текст функції на мові MatLab:

function [e, x] = mkk (a, f)

f = f '; % Стовпець f переводимо в рядок

n = size (a, 1); % Обчислюємо мірність матриці А

if (a == a ')

if (det (a) ~ = 0)% перевіряємо, щоб система мала єдине рішення

if (size (f ', 1) == n)% перевіряємо чи відповідає мірність матриці А мірності вектора f

t = zeros (n); % Створюємо матрицю елементів T і заповнюємо її нулями

t (1,1) = sqrt (a (1,1)); % 1.3

for k = 2: n

t (1, k) = a (1, k) / t (1,1);

end

for j = 2: n

for i = 2: n

if (i == j)

c = 0;

for k = 1: (i-1)

c = c + t (k, i) ^ 2;

end

t (i, i) = sqrt (a (i, i) -c);

else

if (ic = 0;

for k = 1: (i-1)

c = c + t (k, i) * t (k, j);

end

t (i, j) = (a (i, j) -c) / t (i, i);

end

end

end

end

y = zeros (n, 1); % 1.7 створюємо стовпець у

y (1) = f (1) / t (1,1);

for i = 2: n

c = 0;

for k = 1: (i-1)

c = c + t (k, i) * y (k);

end

y (i) = (f (i) -c) / t (i, i);

end

x = zeros (n, 1); % Створюємо стовпець точних рішень

e = zeros (n, 1); % Створюємо стовпець помилок

x (n) = y (n) / t (n, n); % 1.8 обчислюємо вектор Х

for i = (n-1): - 1: 1

c = 0;

for k = (i + 1): n

c = c + t (i, k) * x (k);

end

x (i) = (y (i) -c) / t (i, i);

e = a * x-f ';

end

else

error ('Увага! Помилка! Розмірність матриці А не відповідає розмірності вектора F');

end

else

error ('Увага! Помилка! Визначник матриці А дорівнює 0')

end

else

f = f * a ';

a = a * a ';

if (det (a) ~ = 0)% перевіряємо, щоб система мала єдине рішення

if size (f ', 1) == n% перевіряємо чи відповідає мірність матриці А мірності вектора f

t = zeros (n); % Створюємо матрицю елементів T і заповнюємо її нулями

t (1,1) = sqrt (a (1,1)); % 1.3

for k = 2: n

t (1, k) = a (1, k) / t (1,1);

end

for j = 2: n

for i = 2: n

if (i == j)

c = 0;

for k = 1: (i-1)

c = c + t (k, i) ^ 2;

end

t (i, i) = sqrt (a (i, i) -c);

else

if (ic = 0;

for k = 1: (i-1)

c = c + t (k, i) * t (k, j);

end

t (i, j) = (a (i, j) -c) / t (i, i);

end

end

end

end

y = zeros (n, 1);

y (1) = f (1) / t (1,1);

for i = 2: n

c = 0;

for k = 1: (i-1)

c = c + t (k, i) * y (k);

end

y (i) = (f (i) -c) / t (i, i);

end

x = zeros (n, 1);

x (n) = y (n) / t (n, n);

for i = (n-1): - 1: 1

c = 0;

for k = (i + 1): n

c = c + t (i, k) * x (k);

end

x (i) = (y (i) -c) / t (i, i);

end

else

error ('Увага! Помилка! Розмірність вектора F не відповідає розмірності матриці А');

end

else

error ('Увага! Помилка! Визначник матриці А дорівнює 0');

end

end 3. Опис тестових завдань

Після того, як функція була розроблена, для її налагодження була складена програма, де задавалися матриця А, вектор f і звідки викликалася написана функція.

Програма має вигляд:

a = [1 0 0; 0 1 0; 0 0 1];

f = [7; 8; 9];

[E, x] = mkk (a, f)

Рішення для даної програми видано такий:

e =

0

0

0

x =

7

8

9

Як бачимо, рішення правильне.

Почнемо дослідження методу квадратних коренів. Для початку досліджуємо вплив мірності матриці А на точність рішення.

Для цього будемо послідовно вирішувати СЛАР, щоразу збільшуючи мірність А. Для цього складемо таку програму, яка

а) вирішить чотири СЛАР з різними мірностях матриці А,

б) порахує чотири точності отриманого рішення за формулою E1 = max | Ei |,

в) порахує чотири точності отриманого рішення за формулою

,

в яких i - кількість вирішених рівнянь

г) побудує два графіка залежності точностей отриманого рішення від мірності матриці А.

Текст програми:

e1 = 0;

e2 = 0;

a = [1 0.42; .42 1]

f = [0.3; 0.5]

[E, x] = mkk (a, f)

e1 = max (abs (e))

e2 = sqrt (sum (power (e, 2)))

a = [1 0.42 .54; .42 1 .32; .54 .32 1;]

f = [0.3; 0.5; .7]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [1 0.42 .54 .66; .42 1 .32 .44; .54 .32 1 .22; .66 .44 .22 1]

f = [0.3; 0.5; .7; .9]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [1 0.42 .54 .66 .53; .42 1 .32 .44 .45; .54 .32 1 .22 .41; .66 .44 .22 1 .25; .53 .45 .41 .25 1;]

f = [0.3; 0.5; .7; .9; .6]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

mernost = [2 3 4 5];

plot (mernost, e1);

pause;

plot (mernost, e2);

pause

Результат роботи програми:

>> Head5

a =

1.0000 0.4200

0.4200 1.0000

f =

0.3000

0.5000

e =

0

0

x =

0.1093

0.4541

e1 =

0

e2 =

0

a =

1.0000 0.4200 0.5400

0.4200 1.0000 0.3200

0.5400 0.3200 1.0000

f =

0.3000

0.5000

0.7000

e =

1.0e-016 *

0.5551

0

0

x =

-0.2405

0.3737

0.7103

e1 =

1.0e-016 *

0 0.5551

e2 =

1.0e-016 *

0 0.5551

a =

1.0000 0.4200 0.5400 0.6600

0.4200 1.0000 0.3200 0.4400

0.5400 0.3200 1.0000 0.2200

0.6600 0.4400 0.2200 1.0000

f =

0.3000

0.5000

0.7000

0.9000

e =

1.0e-015 *

-0.0555

0

-0.2220

0

x =

-1.2578

0.0435

1.0392

1.4824

e1 =

1.0e-015 *

0 0.0555 0.2220

e2 =

1.0e-015 *

0 0.0555 0.2289

a =

1.0000 0.4200 0.5400 0.6600 0.5300

0.4200 1.0000 0.3200 0.4400 0.4500

0.5400 0.3200 1.0000 0.2200 0.4100

0.6600 0.4400 0.2200 1.0000 0.2500

0.5300 0.4500 0.4100 0.2500 1.0000

f =

0.3000

0.5000

0.7000

0.9000

0.6000

e =

1.0e-015 *

0.0555

0.2220

-0.1110

-0.3331

0

x =

-1.6362

-0.1885

0.9761

1.6642

0.7358

e1 =

1.0e-015 *

0 0.0555 0.2220 0.3331

e2 =

1.0e-015 *

0 0.0555 0.2289 0.4191

Побудовані графіки для оцінки точності рішення:

Для E1 = max | Ei |,

Для

Як бачимо з рішення, виданого програмою, а також з графіків, помилка зростає зі збільшенням мірності матриці А, а точність рішення, як наслідок зменшується.

Тепер досліджуємо вплив розрідженості матриці А на точність рішення. Для цього трохи модифікуємо програму, використану для дослідження впливу мірності матриці А на точність рішення: змінимо в ній СЛАР для вирішення. На кожному кроці будемо збільшувати кількість нульових елементів в матриці.

Текст програми:

e1 = 0;

e2 = 0;

a = [1 0.42 .54 .66 .53; .42 1 .32 .44 .45; .54 .32 1 .22 .41; .66 .44 .22 1 .25; .53 .45 .41 .25 1;]

f = [0.3; 0.5; .7; .9; .6]

[E, x] = mkk (a, f)

e1 = max (abs (e))

e2 = sqrt (sum (power (e, 2)))

a = [1 0 .54 0 .53; 0 1 .32 .44 .45; .54 .32 1 .22 .41; 0 .44 .22 1 .25; .53 .45 .41 .25 1;]

f = [0.3; 0.5; .7; .9; .6]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [1 0 .54 0 .53; 0 1 .32 .44 .45; .54 .32 1 .22 .41; 0 .44 .22 1 0; .53 .45 .41 0 1;]

f = [0.3; 0.5; .7; .9; .6]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [1 0 .54 0 0; 0 1 0 .44 .45; .54 0 1 .22 0; 0 .44 .22 1 0; 0 .45 0 0 1;]

f = [0.3; 0.5; .7; .9; .6]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

mernost = [2 3 4 5];

plot (mernost, e1);

pause;

plot (mernost, e2);

pause

Результат роботи програми:

a =

1.0000 0.4200 0.5400 0.6600 0.5300

0.4200 1.0000 0.3200 0.4400 0.4500

0.5400 0.3200 1.0000 0.2200 0.4100

0.6600 0.4400 0.2200 1.0000 0.2500

0.5300 0.4500 0.4100 0.2500 1.0000

f =

0.3000

0.5000

0.7000

0.9000

0.6000

e =

1.0e-015 *

0.0555

0.2220

-0.1110

-0.3331

0

x =

-1.6362

-0.1885

0.9761

1.6642

0.7358

e1 =

3.3307e-016

e2 =

4.1910e-016

a =

1.0000 0 0.5400 0 0.5300

0 1.0000 0.3200 0.4400 0.4500

0.5400 0.3200 1.0000 0.2200 0.4100

0 0.4400 0.2200 1.0000 0.2500

0.5300 0.4500 0.4100 0.2500 1.0000

f =

0.3000

0.5000

0.7000

0.9000

0.6000

e =

1.0e-015 *

0.0555

0.1110

0.2220

0.1110

0.1110

x =

-0.1810

-0.1718

0.5355

0.7673

0.3618

e1 =

1.0e-015 *

0.3331 0.2220

e2 =

1.0e-015 *

0.4191 0.2989

a =

1.0000 0 0.5400 0 0.5300

0 1.0000 0.3200 0.4400 0.4500

0.5400 0.3200 1.0000 0.2200 0.4100

0 0.4400 0.2200 1.0000 0

0.5300 0.4500 0.4100 0 1.0000

f =

0.3000

0.5000

0.7000

0.9000

0.6000

e =

1.0e-015 *

-0.0555

-0.0555

0

0.1110

0

x =

-0.4156

-0.4724

0.5213

0.9932

0.8192

e1 =

1.0e-015 *

0.3331 0.2220 0.1110

e2 =

1.0e-015 *

0.4191 0.2989 0.1360

a =

1.0000 0 0.5400 0 0

0 1.0000 0 0.4400 0.4500

0.5400 0 1.0000 0.2200 0

0 0.4400 0.2200 1.0000 0

0 0.4500 0 0 1.0000

f =

0.3000

0.5000

0.7000

0.9000

0.6000

e =

1.0e-015 *

0

0

0

0

-0.1110

x =

0.0374

-0.1969

0.4863

0.8797

0.6886

e1 =

1.0e-015 *

0.3331 0.2220 0.1110 0.1110

e2 =

1.0e-015 *

0.4191 0.2989 0.1360 0.1110

Для E1 = max | Ei |,

Для

Як бачимо з рішення і графіків, величина помилок зменшується, а точність знайденого рішення збільшується зі збільшенням кількості нульових елементів в матриці А. Це пов'язано з тим, що збільшення числа нульових елементів поступово зменшує число ненульових елементів задіяних в обчисленнях.

Тепер досліджуємо вплив обумовленості матриці А на точність одержуваного рішення. Для цього в третій раз модифікуємо нашу програму. Тепер ми будемо брати обумовлені матриці, з кожним кроком збільшуючи їх розмірність.

Текст програми:

e1 = 0;

e2 = 0;

a = [500501; 501500]

f = [15000; 16000]

[E, x] = mkk (a, f)

e1 = max (abs (e))

e2 = sqrt (sum (power (e, 2)))

a = [500501 -503; 501500499; -503499500]

f = [15000; 16000; 18000]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [500501 -503500; 501500499 -501; -503 499 500 502; 500 -501 502 500]

f = [15000; 16000; 18000; 16000]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

a = [500501 -503500499; 501500499 -501500; -503499500502 -501; 500 -501 502 500 -500; 499 500 -501 -500 500]

f = [15000; 16000; 18000; 16000; 17000]

[E, x] = mkk (a, f)

e1 = [e1 max (abs (e))]

e2 = [e2 sqrt (sum (power (e, 2)))]

mernost = [2 3 4 5];

plot (mernost, e1);

pause;

plot (mernost, e2);

pause

Результат роботи програми:

>> Head5

a =

500501

501500

f =

15000

16000

e =

1.0e-010 *

-0.2910

0.5821

x =

515.4845

-484.5155

e1 =

5.8208e-011

e2 =

6.5078e-011

a =

500501 -503

501500499

-503499500

f =

15000

16000

18000

e =

1.0e-010 *

0.0182

0.0364

0.1455

x =

-2.0239

32.9970

1.0330

e1 =

1.0e-010 *

0.5821 0.1455

e2 =

1.0e-010 *

0.6508 0.1511

a =

500501 -503500

501500499 -501

-503499500502

500 -501 502 500

f =

15000

16000

18000

16000

e =

1.0e-008 *

0

0

-0.1120

0.0997

x =

14.5050

16.5505

17.4961

16.5125

e1 =

1.0e-008 *

0.0058 0.0015 0.1120

e2 =

1.0e-008 *

0.0065 0.0015 0.1500

a =

500501 -503500499

501500499 -501500

-503499500502 -501

500 -501 502 500 -500

499 500 -501 -500 500

f =

15000

16000

18000

16000

17000

e =

1.0e-010 *

-0.0364

0.0364

0.8367

-0.9459

0.1091

x =

33.0693

35.1332

-1.0682

-2.1077

-37.3144

e1 =

1.0e-008 *

0.0058 0.0015 0.1120 0.0095

e2 =

1.0e-008 *

0.0065 0.0015 0.1500 0.0127

Для E1 = max | Ei |,

Для

В цілому обумовленість матриці А дає високу точність рішення, але за обраними в даній роботі системам важко судити про вплив мірності обумовленої матриці А на точність рішення. 4. Аналіз результатів. Висновки

За дослідженням можна сказати наступне. Точність рішення СЛАР методом квадратних коренів для симетричної матриці залежить від багатьох параметрів, як то: мірність матриці А, розрідженість матриці А, обумовленість матриці А. Точність залежить від цих параметрів як окремо, так і в комбінації. Можна також сказати, що точність рішення сильно залежить від кількості заокруглень під час вирішення і, як наслідок власне кількості обчислень, які необхідно зробити, щоб вирішити СЛАР методом квадратних коренів. Було відзначено на етапі налагодження програми, що, чим ближче коріння системи до цілих числах, тим менше помилка, тим вище точність.

Висновок

У цій роботі був досліджений метод квадратних коренів для симетричної матриці - один з методів вирішення систем лінійних алгебраїчних рівнянь. Цим методом можна вирішувати системи виду A x = f, в яких матриця A - симетрична.

Також в даній роботі були проаналізовані різного роду параметри матриці А: мірність, обумовленість, разряженность, і їх вплив на точність отриманого рішення. В цілому метод дає досить точні рішення і може бути використаний при пошуку станів рівноваги в економічних моделях.

Список використаної літератури

1. Волков Е.А., Чисельні методи.- М .: «Наука», 1982.

2. Калиткин М.М. Чисельні методи.- М .: Наука, 1978.

3. Саричева О.М. Чисельні методи в економіці / О.М.Саричева.-Новосибірськ, 1995.- 67 стор.

Авіація і космонавтика
Автоматизація та управління
Архітектура
Астрологія
Астрономія
Банківська справа
Безпека життєдіяльності
Біографії
Біологія
Біологія і хімія
Біржова справа
Ботаніка та сільське господарство
Валютні відносини
Ветеринарія
Військова кафедра
Географія
Геодезія
Геологія
Діловодство
Гроші та кредит
Природознавство
Журналістика
Зарубіжна література
Зоологія
Видавнича справа та поліграфія
Інвестиції
Інформатика
Історія
Історія техніки
Комунікації і зв'язок
Косметологія
Короткий зміст творів
Криміналістика
Кримінологія
Криптологія
Кулінарія
Культура і мистецтво
Культурологія
Логіка
Логістика
Маркетинг
Математика
Медицина, здоров'я
Медичні науки
Менеджмент
Металургія
Музика
Наука і техніка
Нарисна геометрія
Фільми онлайн
Педагогіка
Підприємництво
Промисловість, виробництво
Психологія
Психологія, педагогіка
Радіоелектроніка
Реклама
Релігія і міфологія
Риторика
Різне
Сексологія
Соціологія
Статистика
Страхування
Будівельні науки
Будівництво
Схемотехніка
Теорія організації
Теплотехніка
Технологія
Товарознавство
Транспорт
Туризм
Управління
Керуючі науки
Фізика
Фізкультура і спорт
Філософія
Фінансові науки
Фінанси
Фотографія
Хімія
Цифрові пристрої
Екологія
Економіка
Економіко-математичне моделювання
Економічна географія
Економічна теорія
Етика

8ref.com

© 8ref.com - українські реферати


енциклопедія  бефстроганов  рагу  оселедець  солянка