Для розв'язання систем лінійних алгебраїчних рівнянь можна використати ітераційні методи, які дозволяють визначити вектор невідомих як границю нескінченної послідовності векторів невідомих, що обчислюються за деяким однотипним процесом, який називається процесом ітерації.
Одним із найрозповсюдженіших ітераційних методів, що відрізняється простотою та легкістю програмування, є метод Гауса.
Для збіжності ітераційного процесу достатньо, щоб модулі діагональних коефіцієнтів для кожного рівняння системи були не менше суми модулів решти його коефіцієнтів:
, j=1,2,…n (2.4)
При цьому хоча б для одного рівняння нерівність повинна виконуватись суворо. Ці умови є достатні для збіжності методу, але вони не є необхідними, тобто для деяких систем ітерації збігаються і при порушенні даної умови.
Задача зводиться до створення масиву методом вводу його з клавіатури та обчислення матриці для знаходження коренів рівнянь.
В процесі розв'язку поставленої задачі оброблюються дані типу, що наводиться у таблиці 1.1.
Таблиця 2.1 - Типи даних, що будуть використовуватись при розробці програми
Тип
Область значень
Фізичний формат
real
від 2,9?10-39 до 1,7?1038
Точність 11-12 розрядів, розмір в байтах - 6
З метою збереження і обробки в пам'яті ЕОМ прийняті системи ідентифікаторів, які подані у таблицях 2.1, 2.2 відповідно до методу розв'язання задачі.
Таблиця 2.2 - Прийнята система ідентифікаторів для програмування за методом Гауса
Назва параметра
Позначення
у формулі
у програмі
Кількість рядків у системі рівнянь
n
N
Матриця коеф. при невідомих
А
A(N, N + 1)
Вектор вільних членів
В
B(N)
Вектор коренів системи
Х
C(i)
Інші
-
i, j, k, Q, s, A1(i)
2.4 Розробка алгоритмів розв'язання задачі
Рис. 2.1 Варіант блок-схеми №1
Рис. 2.2 Варіант блок-схеми №2
Вибираємо 1-й варіант алгоритму, так як використовуючи цей алгоритм, можна виводити результати роботи у файл, що зручніше для подальшої їх обробки.
2.5 Програмування задачі на мові Pascal
Ведення матриці з файлу
Рис 2.3 Введення з блокноту
2.6 Текст програми розв'язку системи лiнiйних рiвнянь методом Гауса
Program Gaus;
{Програма розв'язку системи лiнiйних рiвнянь методом Гауса}
Const N=5;
Var A:Array[1..N,1..N+1] Of Real;
B:Array[1..N] Of Real;
i,j,k:Integer;
Q:Real;
e,g:Text;
Begin
Assign(e,'gaus.txt');
Reset(e);
For i:=1 To N Do
For j:=1 To N+1 Do Read(e,A[i,j]);
ReadLn(e);
End;
Close(e);
{Знаходження коренiв}
For i:=1 To N-1 Do
For j:=N DownTo i+1 Do
Q:=A[j,i]/A[i,i];
For k:=i To N+1 Do
A[j,k]:=A[j,k]-A[i,k]*Q
For i:=N DownTo 1 Do
B[i]:=A[i,N+1];
B[i]:=B[i]-A[i,j]*B[j];
B[i]:=B[i]/A[i,i]
assign(g,'rezgauss.txt');
rewrite(g);
{Виведення результатiв}
WriteLn(g,' Програма розв''язку системи лiнiйних рiвнянь методом Гауса');
WriteLn;
WriteLn(g,'Коренi системи:');
WriteLn(g,'X',i,'=',B[i]:5:3);
WriteLn('Для виходу з програми натиснiть ENTER');
ReadLn;
close(g);
End.
- максимальна потужність двигуна , кВт;
- максимальний крутний момент двигуна , Н·м;
- питома витрата палива , г/кВт·год;
- кількість обертів двигуна при максимальній потужності ;
- кількість обертів двигуна при максимальному моменті ;
- табличні дані з графіків зовнішньої швидкісної характеристики.
3.3 Формалізація задачі
Для вирішення даної задачі необхідно за даними графіків зовнішньої швидкісної характеристики двигуна J6R створити математичні моделі його механічних характеристик.
Апроксимування функцій будемо виконувати за допомогою методу найменших квадратів.
Функція на відрізку [а, в] задана системою N точок , , … , .
Потрібно так підібрати коефіцієнти полінома
щоб сума квадратів відхилення полінома від заданих значень функції
була мінімальною.
Використовуючи умову екстремуму функції кількох змінних:
можна скласти систему лінійних алгебраїчних рівнянь, відносно коефіцієнтів .
Якщо в якості апроксимуючого полінома вибрати степеневий поліном виду
та
то система рівнянь буде мати вигляд (3.15).
Ця система рівнянь лінійна відносно коефіцієнта полінома і розв'язується будь-яким відомим методом (методом Гаусса з послідовним включенням, методом Гаусса за схемою Халецького і т.п.).
Страницы: 1, 2, 3, 4