Работа с массивами и подпрограммами, ознакомление с вводом данных из файла, страница 3

В данном расчётно-графическом задании мы будем применять технологию постепенного наращивания программы. Программа должна вводить размеры и элементы матрицы из заранее созданного файла и содержать процедуры вывода матрицы на экран, транспонирования матрицы, умножение и сложение двух матриц, а также умножение матрицы на скаляр. Сначала мы объявим все процедуры (vivod, mult, slog, transpor, matrnac), только после этого начнётся раздел операторов основной программы: введение данных из файла Muhamed.inp, потом преобразования над исходными матрицами и их дальнейший вывод на экран. Конечная матрица должна совпадать с матрицей посчитанной в тесте. Промежуточные матрицы тоже выводятся на экран, это делается для того, чтобы при возникновении ошибок в вычислении конечной матрицы, можно было их исправить, причём место ошибки будет сразу же видно.

3. Анализ матричного выражения

Заданное матричное выражение:

CT*B+3*AT

состоит из матриц:

C=   B=    A=

Матрица C имеет 3 строки и 3 столбцов. Эту размерность можно записать в виде 3*3,  что значит число строк*число столбцов. Такую же размерность   имееют матрицы   В и С .

       Рассмотрим последовательность и возможость вычислений.

Первой операцией будет транспонирование матрицы С, для этого воспользуемся процедурой transpor, куда введем формальные параметры с, m, n, ct, где с-данная матрица, m и n- число строк и столбцов соответственно, сt- конечная матрица. Вторая операция - умножение матрицы СТ на матрицу В. Умножение возможно поскольку данные матрицы являются согласованными.  Воспользуемся подпрограммой процедурой mult, куда введём формальные параметры: ct, b, m, n, ctb – где ct – исходная матрица, m – число строк новой матрцы, n – число столбцов новой матрицы и ctb – конечная  матрица. Третья операция- транспонирование матрицы А, для этого вопользуемся процедурой transpor, куда введем формальные параметры a, m, n, at, где а-исходная матрица, m и n-число строк и столбцов соответственно, аt-конечная матрица. Четвертая операция – умножение   матрицы А на число 3, для этого воспользуемся процедурой matrnac, куда введем формальные параметры at,m,n,atc, где at-исходная матрица, atc-конечная матрица. Последняя операция – сложение произведения матриц СТ*В и матрицы 3*АТ. Для этого воспользуемся подпрограммой процедурой slog, вводя её формальные параметры: сtb, atc, m, n, ctbatc где ctb и atc – исходные матрицы, m и n – число строк и столбцов складываемых матриц, матрицы можно складывать, т.к. они имеют одинаковую размерность 3*3, ctbatc-конечная матрица.

4. Тест.

Выполним тест, чтобы проверить правильность вычислений, проведённых в Pascal. Можно также воспользоваться вычислениями сделанными в Excel, которые можно взять из предыдущей работы.

1. Сначала считаем произведение матриц А и С, в программе эта матрица называется ac и подсчитывается при помощи процедуры mult.

                СТ*В  =*=                                                             

2.Умножение транспонированной матрицы А на скаляр. В программе эта процедура называется matrnac.

             3*AT=

3. Сложение произведения  матриц  CT*B и 3*AT,  в программе эта матрица является конечной и вычисляется при помощи процедуры slog.

            CT*B+3*AT=