АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция
|
ТЕКСТ ПРОГРАММЫ
1.
| REM Отыскание характеристического полинома матрицы методом Данилевского
CONST Q = 4
DECLARE SUB PrintMatr (m!(), N!)
DECLARE SUB ReadFromFile (a!(), N!)
DECLARE SUB Frob (a!(), N!)
DIM a(Q, Q)
| 2.
| REM основная программа
CLEAR
PRINT "Отыскание характеристического полинома матрицы методом Данилевского"
| 3.
|
REM чтение матрицы из файла
CALL ReadFromFile(a(), N)
PRINT
PRINT "ИСХОДНАЯ МАТРИЦА"
CALL PrintMatr(a(), N)
PRINT INPUT$(1)
| 4.
|
PRINT
CALL Frob(a(), N)
| 5.
| END
|
Процедуры программы
1.
| SUB Frob (a!(), N!)
REM процедура приведения матрицы к norm виду Frobeniusa
DIM e(Q, Q), b(Q, Q), m(Q, Q), c(Q, Q)
| 2.
| REM создание единичной матрицы e (Q,Q)
FOR i = 1 TO N
FOR j = 1 TO N
IF i = j THEN
e(i, j) = 1
ELSE e(i, j) = 0
END IF
NEXT j
NEXT i
| 3.
| R = N
PRINT "ПРЕОБРАЗОВАНИЕ МАТРИЦЫ"
WHILE (R > 1)
| 4.
| REM преобразование r-1 столбца матрицы а(Q,Q)
IF ABS(a(R, R - 1)) <.000001 THEN
PRINT " ОСОБЫЙ СЛУЧАЙ; ПЕРЕОБРАЗОВАНИЕ НЕ ВОЗМОЖНО "
PRINT INPUT$(1)
END
END IF
| 5.
| FOR i = 1 TO N
b(i, R - 1) = a(i, R - 1) / a(R, R - 1)
NEXT i
| 6.
| REM формирование матрицы m(Q,Q)
FOR i = 1 TO N
FOR j = 1 TO N
m(i, j) = e(i, j)
NEXT j
NEXT i
FOR i = 1 TO N
IF (i <> (R - 1)) THEN
m(R - 1, i) = -a(R, i) / a(R, R - 1)
ELSE
m(R - 1, i) = 1 / a(R, R - 1)
END IF
NEXT i
| 7.
| REM вычисление матрицы b(Q,Q)
FOR i = 1 TO N
FOR j = 1 TO N
IF (j <> R - 1) THEN
b(i, j) = a(i, j) + a(i, R - 1) * m(R - 1, j)
ELSE b(i, j) = a(i, R - 1) * m(R - 1, R - 1)
END IF
NEXT j
NEXT i
| 8.
| REM получение матрицы c(Q,Q)
FOR i = 1 TO R - 2
FOR j = 1 TO N
c(i, j) = b(i, j)
NEXT j
NEXT i
FOR j = 1 TO N
sum = 0
FOR K = 1 TO N
sum = sum + a(R, K) * b(K, j)
NEXT K
c(R - 1, j) = sum
NEXT j
FOR j = 1 TO N
c(R, j) = b(R, j)
NEXT j
| 9.
| REM перезапись матрицы c--> a
FOR i = 1 TO N
FOR j = 1 TO N
a(i, j) = c(i, j)
NEXT j
NEXT i
CALL PrintMatr(c(), N)
| 10.
| R = R - 1
WEND ' {while}
| 11.
| PRINT: PRINT
PRINT "ХАРАКТЕРИСТИЧЕСКОЕ УРАВНЕНИЕ:"
COLOR (2)
PRINT "L^"; N;
j = N - 1
FOR i = 1 TO N
PRINT USING " - ### *L^#"; c(1, i); j;
j = j - 1
NEXT i
COLOR (8)
PRINT: PRINT
| 12.
| END SUB
| 13.
| SUB PrintMatr (m!(), N!)
SCREEN 0
FOR i = 1 TO N
FOR j = 1 TO N
IF ABS(m(i, j)) <=.000001 THEN
COLOR 2
ELSE
COLOR 15
END IF
PRINT USING "###.### "; m(i, j);
NEXT j
PRINT
NEXT i
PRINT
COLOR (15)
END SUB
| 14.
| SUB ReadFromFile (a!(), N!)
OPEN "data.txt" FOR INPUT AS #1 'open file for read
INPUT #1, N 'прочитали размер матрицы
FOR i = 1 TO N
FOR j = 1 TO N
INPUT #1, a(i, j) 'прочитали элемент
NEXT j
NEXT i
CLOSE #1
PRINT
END SUB
|
ПОЯСНЕНИЯ К ТЕКСТУ ПРОГРАММЫ
1. Объявление констант, переменных и процедур программы.
2. Очистка экрана и печать заголовка программы.
3. Вызов процедуры чтения матрицы из файла – ReadFromFile; Вызов процедуры печати матрицы– PrintMatr.
4. Вызов основной процедуры – Form.
5. завершение программы.
Процедуры программы
1. Заголовок процедуры Forb, описание вспомогательных матриц.
2. Создание единичной матрицы e.
3. Подготовка к основному циклу процедуры; заголовок цикла WHILE.
4. Проверка допустимости вычислений.
5. Формирование матрицы b (её предпоследней строки).
6. Формирование матрицы m.
7. Вычисление матрицы b.
8. Получение матрицы c.
9. Перезапись матрицы с в матрицу а; печать матрицы а.
10. Уменьшение счётчика R на 1; завершение цикла.
11. Печать найденных значений коэффициентов характеристического уравнения.
12. Завершение процедуры Frob.
13. Процедура PrintMatr печати матрицы.
14. Процедура ReadFromFile чтения матрицы из файла. 1 | 2 | 3 | 4 | Поиск по сайту:
|