Міністерство освіти та науки України
Національний університет «Львівська політехніка»
Інститут телекомунікацій, радіоелектроніки та електронної техніки
Кафедра теоретичної радіотехніки та радіовимірювань
Звіт з лабораторної роботи №11
Тема «Матричний опис резистивних схем»
з дисципліни «Інформатика та обчислювальна техніка»
Мета роботи — засвоїти методи створення, доступу та використання базового структурованого типу даних — масивів, записів, вивчити метод Гауса обчислення визначника матриці.
Варіант 10
ЗАВДАННЯ.
Сформувати невизначену матрицю вузлових провідностей (в розділі “Постановка задачі” звіту з лабораторної роботи) заданої резистивної схеми. Ввести в ЕОМ параметри заданої схеми (вузли підімкнення та номінали опорів) як розріджений масив. Спосіб введення: файл вхідних даних, клавіатура і т.д. – на вибір студента. З масиву триплетів сформувати (програмно) і вивести на екран матрицю вузлових провідностей. Обчислити визначник цієї матриці. Обчислити визначник матриці з вилученими нульовим рядком і стовпцем.
№п(п
Cхема №
Опір резистора номер, Ом
1
2
3
4
5
6
10
4
910
57
810
3600
5100
-
Схема №4
ПРИКЛАД АЛГОРИТМУ ОБЧИСЛЕННЯ ДЕТЕРМІНАНТУ.
При обчисленні визначника матриці методом Гауса достатньо обчислювати нові значення елементів головної діагоналі та елементів, що будуть використовуватись в наступному циклі перетворень. Тобто для деякого k достатньо обчислити нові значення елементів з індексами i>k та j>k. Це зручно реалізувати за допомогою вкладених циклів з параметром: за k, i та j. Одночасно з обчисленням елементів головної діагоналі трикутної матриці доцільно (для зменшення кількості операцій) виконувати їх перемножування та накопичення. Оскільки перетворення виконується n–1 разів, то після завершення циклу необхідно домножити змінну-накопичувач на останній елемент головної діагоналі.
В розділі “Розробка алгоритму” звіту з лабораторної роботи студент повинен навести розробку повної блок-схеми алгоритму програми. Оскільки визначник необхідно обчислити два рази, є доцільним виділення відповідного алгоритму у підпрограму.
ТЕКСТ ПРОГРАМИ.
Program L11;
uses Crt;
const
N=4; M=(N+1)*(N+1);
R1=910;R2=57;R3=810;R4=570;R5=4800;R6=810;
Y:array [0..N,0..N] of real=(( 1/R2, -1/R2, 0, 0, 0),
(-1/R2,1/R1+1/R2, -1/R1, 0, 0),
( 0, -1/R1,1/R1+1/R3+1/R4, -1/R3-1/R4, 0),
( 0, 0, -1/R3-1/R4, 1/R3+1/R4+1/R5, -1/R5),
( 0, 0, 0, -1/R5, 1/R5));
type
triplet=record
r,s:integer;
yz:real;
end;
var
OA:array[1..M] of triplet;
A:array [0..n,0..n] of real;
v:array [0..n,0..n] of real;
I,J,K:byte;
procedure vyzn_matrix(p:byte);
var d:real;
begin
for i:=p to n do
for j:=p to n do
v[i,j]:=a[i,j];
d:=1;
for k:=p to n-1 do
begin
d:=d*v[k,k];
for i:=k+1 to n do
for j:=k to n do
v[i,j]:=v[i,j]-v[i,k]*v[k,j]/v[k,k];
end;
d:=d*v[n,n];
writeln('vyzn_matrix=',d);
Writeln(' MATRIX "GAUSA" ');
for i:=p to n do
begin
for j:=p to n do
Write(v[i,j]:8:5);
Writeln
end;
end;
Begin
clrscr;
k:=1;
for i:=0 to n do
for j:=0 to n do
begin
with OA[k] do
begin
r:=i;
s:=j;
yz:=Y[i,j];
end;
k:=k+1
end;
writeln('MASIV TRIPLETIV ');
for i:=1 to m do
begin
writeln(OA[i].r,' ',OA[i].s,' ',OA[i].yz:8:5)
end;
Writeln ;
for i:=1 to m do
begin
A[OA[i].r,OA[i].s]:=OA[i].yz
end;
Writeln(' MATRIX "vuzlovych providnostej" ');
for i:=0 to n do
begin
for j:=0 to n do
Write(a[i,j]:8:5);
Writeln
end;
Writeln ;
vyzn_matrix(0);
vyzn_matrix(1);
Readln;
End.
НАЛАГОДЖЕННЯ ТА РЕЗУЛЬТАТИ ТЕСТУВАННЯ.
Висновок: - на лабораторній роботі я засвов методи створення, доступу та використання базового структурованого типу даних — масивів, записів, вивчити метод Гауса обчислення визначника матриці.