Перемножение матриц паскаль
Перемножение матриц паскаль
Мне нужно написать программу на Паскале: Найти произведение матрицы (5*4) на вектор (4*1) для любых заданных вещественных компонентов матрицы и вектора.
Мучилась над ней долго, пока не осознала, что просто не знаю, как рабатать с массивами.
А времени осталось совсем чуть-чуть.
Помогите, пожалуйста, несчастной студентке!
Я бы рада! Просто не успею уже! Да и программирование что-то очень сложное оказалось
А вы можете мне помочь?
-Pawel-Я, кстати, тоже из Пензы))
neshta
Хоть русский язык и не является моим самым сильным местом, но слово «двумерный» пишется без буквы «х». У нас в университете так пишут только студенты конкурирующей с нашей специальности
Natisha
Малое количество времени — плохая отговорка. Как вам уже было написано выше, найдите любую книжку — там должен быть пример перемножения матриц. Ваша задача: разобраться как это работает (в пошаговом режиме, с просмотром значений переменных), а потом подумать, что нужно исправить, чтобы размерность матриц можно было менять.
столько пустой болтовни — как в литературном кружке блин. лучше один раз показать!
объявляем 3 матрицы — 1,2 исходные, 3 — результат
Нда.
А рассказать девочке как данные забивать? а заодно и «выводим/сохраняем результат»?
а то ж она сразу скзала:
«Да и программирование что-то очень сложное оказалось»
так что все равно не успеет. потому как: «пока не осознала, что просто не знаю, как рабатать с массивами. «
перемножаем:
поэлементно умнождаем элементы столбца (матрица2) на элементы строки (матрица1) и суммируем результат (матрица3)
(обычный алгоритм перемножения матриц)
выводим — варианты:
на экран:
for y:=1 to 5 do
begin
for x:=1 to 1 do Write(‘Matrix3[‘,y,’,’,x,’] = ‘,Matrix3[y,x],’ ‘);
Writeln;
end;
Векторное произведение
Этот оператор применим только для двух вектор-столбцов, состоящих из трех элементов:
Векторное произведение имеет широкое применение в механике, гидродинамике, электромагнетизме и в других областях.
Обратная матрица
Обратная матрица определяется только для квадратных матриц: найти произведение матриц (https://algebra24.ru/umnozhenie-matric)
Произведение матрицы и ее обратной матрицы является единичной матрицей:
Произведение матрицы и единичной матрицы дает изначальную матрицу:
Определитель можно найти только для квадратной матрицы. Его значение может быть равно нулю, даже если все элементы матрицы не равны нулю. Обратная матрица содержит дроби, в знаменателе которых находится определитель:
Если определитель равен нулю, обратной матрицы не существует, а матрица является сингулярной. Вспомните деление на ноль в обычной алгебре. Mathcad сообщит, если матрица является сингулярной:
Для скаляра определитель равен его модулю:
Для вектора команда Определитель вычисляет длину вектора:
Двумерные массивы паскаль
Двумерный массив в Паскале представляет собой таблицу, состоящую из нескольких одномерных массивов. Двумерные массивы Pascal называют матрицей. Положение элементов в матрице обозначается двумя индексами.
Рассмотрим матрицу 3*3, то есть она будет состоять из 3 строк и 3 столбцов:
Каждый элемент обладает 2-мя индексами. Первый — номер строки, в котором располагается элемент, а второй – номер столбца. Следовательно, индекс элемента определяется местом пересечением столбца и строки . Например, a13 – это элемент, стоящий в первой строке и в третьем столбце массива.
Описание двумерного массива Паскаля.
Имеется ряд методов объявления двумерного массива.
Рассмотри способ, в котором указывается тип элемента и переменные.
В данном варианте матрица mas состоит из 4 строк, в каждой из которых 9 столбцов. При этом мы можем обратиться к любой i -й строке через mas [ i ], а к j -му элементу внутри i строки – m [ i , j ].
Во втором и третьем способе матрицу можно задать в одну строку.
Как и в предыдущем варианте, матрица имеет 4 строки и 9 столбцов, обращение к какому-либо элементу массива имеет вид: mas [ i , j ]. Значит, что элемент, расположен в i -й строке и j -м столбце. Важно не перепутать строки со столбцами, иначе произойдет ошибка в ответе.
Основные действия с двумерными массивами Паскаля
Все основные действия над матрицами выполняются поэлементно, причем типы данных элементов должны быть одинаковыми. То есть, если матрица состоит из чисел, то действия можно выполнять только с числами. Однако для реализации операции присваивания массивам достаточно быть одного размера. Например, дан массив
в ходе выполнения такой программы матрице а можно присвоить значения матрицы b ( a := b ).
Ввод двумерного массива Паскаля.
Для поочередного ввода элементов в матрицу необходимо перебрать элементы с 1-го столбца 1-ой строки до последнего столбца последней строки. Для этого используется два оператора цикла for, причем один вложен в другой.
Проанализируем образец ввода двумерного массива Паскаля с клавиатуры:
Способ заполнения двумерного массива Паскаля зависит от поставленной задачи. Например, функцию random (N) позволяет заполнять матрицу случайными величинами a[i,j]:=random(25)-10. Некоторые задачи требуют содержание выражений в матрице. Не забывайте, что в любом случае должен быть определен каждый элемент в каждых строках и столбцах.
Вывод двумерного массива Паскаля на экран.
При выводе элементы должны печатать по порядку индексов, то есть в строках элементы стоят друг за другом, а в столбах один под другим. Для этого необходимо написать следующие элементы кода:
Примечание! Использовать операторы readln ( a [ i , j ]), writeln именно в таком виде, в противном случае компилятор не сможет считать и напечатать элемент. Ввод в программу операторов в таком виде readln (a), writeln (a) не допустим, так как а – это переменная типа массив.
Представление двумерного массива Паскаля в памяти
В памяти ЭВМ элементы двумерного массива располагаются последовательно и занимают несколько байт. Например, элементы массива типа integer, будут занимать по 2 байта. А весь массив займет S^2 байта, где S – количество элементов в массиве.
В матрице для каждого элемента типа integer потребуется 2 байта памяти. Рассмотрим пример.
В данном случае необходимо 24 байт памяти.
Модель размещения массива M типа matrix в памяти.
Для любого элемента предоставляется две ячейки памяти, размещение осуществляется от первой строки до нижней, в порядке изменения индекса.
Между переменной и адресом ячейки устанавливается соответствие, однако, при объявлении матрицы программе известно только адрес начала массива, к остальным элементам адрес вычисляется по формуле:
где Addres – местоположение первого элемента, выделенного для массива; I , J – индексы элемента в двумерном массиве; SizeElemt – размер элемента массива (например, 2 байта для элементов типа integer ); sum – количество элементов в строке.
SizeElemt * sum *( I -1)+ SizeElemt *( J -1) — смещение относительно начала массива.
Какой размер памяти выделяется для массива?
Чтобы программа работала нормально, компьютер выделят память сегментами по 64 Кбайт. Один из сегментов отводится для данных, которые обрабатываются программой. Для каждой переменной отводится свой сегмент. Например, если переменная состоит из массива, то он не сможет занимать места больше, чем 65536 байт. Естественно, кроме массива в сегменте могут находится и другие переменные, поэтому объем памяти вычисляется по формуле 65536- S , где S – размер памяти, ранее отведенные под другие переменные.
Рассмотрим пример, в котором:
С точки зрения синтаксиса запись верная, но компилятор выдаст ошибку об объявлении слишком длинного массива.
Можно без труда подсчитать количество элементов, которые допустимы по формуле: 65536/2 –1=32767. Однако, других переменных не должно быть. Матрицы обладают еще меньшими пределами индексов.
Решим задачу с двумерным массивом Паскаля.
Задача: Вычислить произведение ненулевых элементов матрицы.
Решение:
- Для начала нужно установить переменные: матрицу, состоящую из целочисленных элементов; P – произведение элементов, не равное 0; I , J – индексы массива; N , M – количество строк и столбцов в матрице.
- Входные данные N , M пусть вводятся с клавиатуры, а матрица зададим с помощью функции random ().
- Выходными параметром получим P (произведение).
- Выведем матрицу на экран, для проверки работы программы.
А теперь поговорим о процедурах.
Примечание! Тип массива должен быть определен заранее. Например:
Для того чтобы вводимая матрица была передана в программу как результат следует воспользоваться процедурой vvod , В таком случае матрица будет передаваться по ссылке. В таком случае процедура выглядит следующее:
Print – процедуры вывода на экран матрицы, которая передается по значению.
Для реализации вложенных циклов внутри процедуры нужно ввести счетчики – k и h . Алгоритм вывода матрицы на экран был описан выше, используем это описанием.
Итак, опишем ход выполнения программы.
- Ввод значений N и M ;
- Обращаемся к процедурам vvod ( a ) и print ( a ) для ввода и вывода матрицы соответственно, где а – матрица;
- Переменной, которая отвечает за произведение P, присвоим значение 1;
- Поочередно перебираем элементы матрицы с индексом 11 до элемента с индексом Каждый элемент матрицы должен удовлетворять условию: если a ij ? 0, то произведение P умножаем на элемент a ij ( P = P * a ij );
- Выводим на экран результат произведения ненулевых элементов матрицы – P
Перемножение матриц паскаль
‘ width=’8′ height=’8’ /> Прочтите прежде чем задавать вопрос!
1. Заголовок темы должен быть информативным. В противном случае тема удаляется .
2. Все тексты программ должны помещаться в теги [code=pas] . [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. «FAQ«, если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение — только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы — на PM!
6. Одна тема — один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме.
8. Спрашивайте и отвечайте четко и по существу.
Новичок
Группа: Пользователи
Сообщений: 49
Пол: Мужской
Репутация:
запутался в функции (и процедуре). Идея в том что бы умножить 1 строку и 1 столбец матриц , а потом создать цикл обхода по двум матрицам и использовать вспомогательную функцию.
Бывалый
Группа: Пользователи
Сообщений: 168
Пол: Мужской
Репутация: 3
Гуру
Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Разработчик
Free Pascal: Разработчик
Репутация: 627
, тогда ты сам себя запутал:
Это все ни к чему. Квадратные матрицы могут быть перемножены только тогда, когда имеют одинаковый размер, поскольку для перемножения матриц нужно, чтоб количество столбцов первой равнялось количеству строк второй. Если будут квадратные матрицы разного размера — их произведения не существует.
Описывай нормально:
Ну, а сама процедура — вот так:
, хотя вот тут: Массивы. Матрицы. Типичные задачи. Олег выкладывал перемножение квадратных, а я — «сцепленных» матриц. Можно было бы и воспользоваться.
Добавлено через 1 мин.
Затем, чтобы потом одним движением перейти к работе с вещественной матрицей. Ага? Или с комплексной. Или с любой другой. Меняешь тип, и все, больше ничего менять не надо. В крайнем случае — перегрузить операторы сложения/умножения.
А я не понимаю, зачем
1) передавать в процедуру матрицы как Var-параметры, когда они не должны меняться. Специально, чтоб была возможность ошибиться и изменить значение? Не надо. Есть передача по значению, без Var. Если матрицы большие — то можно передать по константной ссылке : Procedure Mult(const A, B : TMatrix). В первом случае даже случайное изменение матрицы не передастся наружу. А во втором это вообще будет невозможно. Компилятор даст по рукам за каждую попытку присвоить какое-то значение константному параметру;
2) использовать глобальные переменные для возвращения результата. Что, очень нравится писать подпрограммы с побочными эффектами? Эта привычка может сослужить плохую службу. Чем меньше подпрограмма влияет на «внешнюю среду» — тем лучше. В идеале она должна общаться с «внешним миром» только через параметры;
3) переменные, описанные локально, описывать также и глобально. Все равно они не используются, преимущество среди всех одноименных переменных — у наиболее вложенной.
4) описывать переменные, которые тебе нужны потом, сразу в начале программы. Чем меньше времени живет переменная (и чем меньше других о ней знают) — тем лучше. Меньше соблазна где-нибудь случайно изменить значение и потом сидеть и искать ошибку. Описывай переменные КАК МОЖНО НИЖЕ по тексту.
Сообщение отредактировано: IUnknown — 7.06.2011 1:54
Обработка матриц в Паскале
Матрица — это двумерный массив , каждый элемент которого имеет два индекса: номер строки и номер столбца.
Объявить двумерный массив (матрицу) можно так:
имя : array [ индекс1_нач.. индекс1_кон, индекс2_нач.. индекс2_кон ]
- тип определяет тип элементов массива,
- имя — имя матрицы,
- индекс1_нач..индекс1_кон — диапазон изменения номеров строк,
- индекс2_нач..индекс2_кон — диапазон изменения номеров столбцов матрицы.
var h : array [ 0.. 1 1, 1.. 10 ] of integer;
Описана матрица целых чисел h , состоящая из двенадцати строк и десяти столбцов (строки нумеруются от 0 до 11, столбцы от 1 до 10).
Существует ещё один способ описать матрицы, для этого надо создать новый тип данных :
новый_тип=array [ индекс1_нач.. индекс1_кон ] of тип;
имя : array [ индекс2_нач.. индекс2_кон ] of новый_тип;
новый_тип=array [ список_диапазонов ] of тип;
В данном случае в матрицах a и b есть 10 строк и 30 столбцов, а с — матрица , в которой есть 16 строк и 14 столбцов.
Для обращения к элементу матрицы необходимо указать её имя и в квадратных скобках через запятую номер строки и номер столбца:
имя [ номер_строки, номер_столбца ]
имя [ номер_строки ] [ номер_столбца ]
Например, h[2,4] 1 Или h[2][4]. — элемент матрицы h , находящийся в строке под номером два и столбце под номером четыре.
Для обработки всех элементов матрицы необходимо использовать два цикла . Если матрица обрабатывается построчно, то во внешнем цикле последовательно перебираются строки от первой до последней, затем во внутреннем — все (первый, второй, третий и т. д.) элементы текущей строки. При обработке элементов матрицы по столбцам внешний цикл будет перебирать столбцы, внутренний — строки. На рис. 6.1 представлена блок-схема алгоритма обработки матрицы по строкам, на рис. 6.2 — по столбцам. Здесь i — номер строки, j — номер столбца, N — количество строк, M — количество столбцов матрицы A .
Рассмотрим основные операции , выполняемые над матрицами при решении задач.
6.1 Ввод-вывод матриц
Матрицы, как и массивы, нужно вводить (выводить) поэлементно. Вначале следует ввести размеры матрицы, а затем уже в двойном цикле вводить элементы. Блок-схема ввода элементов матрицы изображена на рис. 6.3.
Вывод можно осуществлять по строкам или по столбцам, но лучше, если элементы располагаются построчно, например,
Алгоритм построчного вывода элементов матрицы приведён на рис. 6.4.
Об описании матриц на языке Паскаль было рассказано в разделе 5.2 главы 5, обращение к элементу матрицы можно осуществить c помощью конструкции
или
.
Рассмотрим реализацию ввода-вывода матриц в консольных приложениях.
Для организации построчного ввода матрицы в двойном цикле по строкам и столбцам можно использовать оператор read .
В этом случае элементы каждой строки матрицы можно разделять символами пробела или табуляции, и только в конце строки нажимать Enter .
Ниже приведён пример консольного приложения ввода-вывода матрицы.
На рис. 6.5 представлены результаты работы программы.
Ввод матрицы также можно организовать с помощью следующего цикла .
Авторы предлагают читателю самостоятельно разобраться, в чём будет отличие ввода матрицы в этом случае.
Для ввода-вывода матриц можно использовать компонент типа TStringGrid, с которым мы познакомились в главе 5.
В качестве примера рассмотрим следующую задачу.
Блок-схема транспонирования матрицы приведена на рис. 6.6. При транспонировании матрицы получается матрица B
.
Рассмотрим частный случай транспонирования матрицы фиксированного размера A(4,3) .
На форме разместим метки Label1 и Label2 со свойствами Caption — Заданная матрица и Транспонированная матрица
, два компонента типа TStringGrid , изменив их свойства так, как показано в табл. 6.1, и кнопку Транспонирование матрицы.
Окно формы приложения представлено на рис. 6.7.
Ниже приведён текст подпрограммы с комментариями, которая будет выполняться, если пользователь щёлкнет по кнопке Транспонирование матрицы.
Программирование и комп-ры : Turbo Paskal Операции над матрицами
Государственный Комитет Российской Федерации
по Высшему Образованию
Государственный Электротехнический Университет «ЛЭТИ»
к Курсовой Работе по Дисциплине
«Информатика. Основы Программирования»
Вариант №9: «Операции над Матрицами»
Выполнил: студент Чапчаев В.В.
Проверил: ассистент Аникин А.П.
Программа работает в текстовом режиме. Пользователь выбирает операцию,
вводит с клавиатуры размер матрицы и значения элементов матрицы. Программа
выполняет заданную операцию и выводит на экран ее результат. Для реализации
в программе предлагаются следующие операции: перемножение двух матриц,
транспонирование, вычисление определителя, вычисление обратной матрицы,
сложение (вычитание) двух матриц.
Метод решения задачи
После запуска программы, пользователю предлагается выбрать требуемую
операцию: нахождение определителя, обратной матрицы, транспонированной
матрицы, сложение или вычитание двух матриц, умножение двух матриц. Это
производится по средствам ввода пользователем цифры, соответствующей данной
операции. Далее следует запрос о размерах данной матрицы (кол-ве строк и
столбцов), после ввода которых программа проверяет, чтобы введенные
значения не были отрицательными или не превышали допустимых размеров
матрицы (в программе – 10х10). В случае, если перечисленные условия не
выполняются, на экран выводится сообщение об ошибке, и программа завершает
работу. При выполнении условий, пользователю предлагается ввести с
клавиатуры исходную матрицу «А» (в программе – MAS1). Ввод производится
построчно, для перехода к следующей строке, пользователю необходимо нажать
клавишу «ENTER». После того, как число строк становится равным числу,
введенному пользователем, ввод матрицы прекращается. Введенная матрица
выводится на экран для проверки. Далее следует проверка «пригодности»
введенной матрицы к операции, выбранной пользователем, в случае
«непригодности» матрицы, на экран выводится сообщение об ошибке, и
программа завершает работу. В случае «пригодности» матрицы, над ней
производится выбранная операция, после чего на экран выводится сообщение о
результате. Если пользователем была выбрана операция, требующая вторую
матрицу «В» (в программе – MAS2), пользователю предлагается ввести ее
размеры, как и при вводе матрицы «А», далее программа проверяет, возможно
ли проведение выбранной операции над матрицами с введенными параметрами.
Если операция невозможна, то на экран выводится сообщение об ошибке, и
программа завершает работу. Иначе, операция выполняется, и ее
результирующая матрица «С» (в программе – MAS3) выводится на экран.
Ввод матриц возможен только с клавиатуры, непосредственно при
выполнении программы. Ввод данных «из файла» не предусмотрен, т.к. этот
вариант в условии задачи не оговаривается.
Исходные данные и форма их представления
|Переменные |Структура |Тип |Назначение |
|MAS1, MAS2, MAS3 |Двумерный массив|Вещественный |Матрицы «А», «В», «С»|
|i1, i2, i3 |Переменные |Целочисленный |Счетчик строк матриц |
|j1, j2, j3 |Переменные |Целочисленный |Счетчик столбцов |
|m1, m2, m3 |Переменные |Целочисленный |Кол-во строк матриц |
|n1, n2, n3 |Переменные |Целочисленный |Кол-во столбцов |
|operation |Переменные |Целочисленный |Вариант программы |
|det |Переменные |Вещественный |Определитель |
|k |Переменные |Целочисленный |Рабочая переменная |
Блок – схема программы
VAR i1, i2, i3 : integer;
j1, j2, j3 : integer;
MAS3 : array [1..10,1..10] of real;
WriteLn (‘Что Вы желаете делать с матрицами?’);
WriteLn (‘Если Вы желаете найти определитель матрицы, нажмите
WriteLn (‘Если Вы желаете найти обратную матрицу, нажмите 2’);
WriteLn (‘Если Вы желаете транспонировать матрицу, нажмите 3’);
WriteLn (‘Если Вы желаете сложить матрицы, нажмите 4’);
WriteLn (‘Если Вы желаете вычесть матрицы, нажмите 5’);
WriteLn (‘Если Вы желаете перемножить матрицы, нажмите 6’);
WriteLn (‘Введите кол-во строк исходной матрицы, не более 10’);
WriteLn (‘Введите кол-во столбцов исходной матрицы, не более
If ((1>n1) or (n1>10) or (1>m1) or (m1>10))
WriteLn (‘Введите исходную матрицу’); <Ввод исходной
for i1:=1 to m1 do
for j1:=1 to n1 do Read (MAS1[i1,j1]);
for i1:=1 to m1 do
for j1:=1 to n1 do
Case operation of
if (m1<>n1) then writeLn (‘ОШИБКА. ‘) <Условие
WriteLn (‘Opredelitel det=’,det); <Вывод
if (m1<>n1) then WriteLn (‘ОШИБКА. ‘) <Условие
if det = 0 then WriteLn (‘ОШИБКА. ‘)
for i1:=1 to m1 do
for j1:=1 to n1 do
for i1:=1 to m1 do
for j1:=1 to n1 do
WriteLn (‘Обратная матрица:’);
for i1:=1 to m1 do begin <Вывод
for i1:=1 to m1 do
for j1:=1 to n1 do MAS2[i1,j1]:=MAS1[j1,i1];
WriteLn (‘Транспонированная матрица: ‘);
for j1:=1 to n1 do
WriteLn (‘Введите кол-во строк второй
Writeln (‘Введите кол-во столбцов второй
If (n2<>n1) or (m2<>m1)
then WriteLn (‘OSHIBKA. ‘)
WriteLn (‘Введите вторую матрицу’);
for i1:=1 to m1 do
for j1:=1 to n1 do
for i1:=1 to m1 do
for j1:=1 to n1 do
if operation = 4 then k := 1;
if operation = 5 then k := -1;
for i1:=1 to m1 do
for j1:=1 to n1 do
for i1:=1 to m1 do
for j1:=1 to n1 do Write(MAS3[i1,j1]);
WriteLn (‘Введите кол-во строк второй матрицы’);
Writeln (‘Введите кол-во столбцов второй
If ((1>=m2) or (m2>=10) or (1>=n2) or (n2>=10)
or (n2<>m1)) then WriteLn
WriteLn (‘Введите вторую матрицу’);
for i2:=1 to m2 do
for j2:=1 to n2 do Read
for i2:=1 to m2 do begin
for j2:=1 to n2 do
for i3:=1 to m3 do
for j3:=1 to n3 do begin
for i2:= 1 to m2 do
for i3:=1 to m1 do begin
for j3:=1 to n2 do Write
Пример работы программы
1. Операция нахождения определителя:
1) При появлении на экране меню с выбором операций, выбираем 1.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) Программа выдает ответ: det = 54.
2. Операция нахождения обратной матрицы:
1) При появлении на экране меню с выбором операций, выбираем 2.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) Программа выдает ответ: ( 1,851*100 9,259*100 1,481*10
( 7,407*100 5,555*100 1,851*100 (
( 9,259*100 1,296*10 7,407*100
3. Операция транспонирования матрицы:
1) При появлении на экране меню с выбором операций, выбираем 3.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) Программа выдает ответ: ( 1 5 8 (
4. Операция сложения матриц:
1) При появлении на экране меню с выбором операций, выбираем 3.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) На предложение ввести кол-во строк матрицы, выбираем 3.
6) Кол-во столбцов – 3.
7) Вводим матрицу: ( 2 8 10 (
8) Программа выдает ответ: ( 3 12 15 (
5. Операция вычитания матриц:
1) При появлении на экране меню с выбором операций, выбираем 3.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) На предложение ввести кол-во строк матрицы, выбираем 3.
6) Кол-во столбцов – 3.
7) Вводим матрицу: ( 2 8 10 (
8) Программа выдает ответ: ( -1 -4 -5 (
6. Операция перемножения матриц:
1) При появлении на экране меню с выбором операций, выбираем 3.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) На предложение ввести кол-во строк матрицы, выбираем 3.
6) Кол-во столбцов – 3.
7) Вводим матрицу: ( 2 8 10 (
8) Программа выдает ответ: ( 122 42 106 (
7. Первый исключительный случай:
1) При появлении на экране меню с выбором операций, выбираем 1.
2) На предложение ввести кол-во строк матрицы, выбираем 0.
3) Кол-во столбцов – 3.
4) Программа выдает: «ОШИБКА. ».
8. Второй исключительный случай:
1) При появлении на экране меню с выбором операций, выбираем 1 (2,
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 2.
4) Вводим матрицу: ( 1 4 (
5) Программа выдает: «ОШИБКА. ».
9. Третий исключительный случай:
1) При появлении на экране меню с выбором операций, выбираем 4.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) На предложение ввести кол-во строк матрицы, выбираем 2.
6) Кол-во столбцов – 2.
6) Программа выдает: «ОШИБКА. ».
10. Четвертый исключительный случай:
1) При появлении на экране меню с выбором операций, выбираем 6.
2) На предложение ввести кол-во строк матрицы, выбираем 3.
3) Кол-во столбцов – 3.
4) Вводим матрицу: ( 1 4 5 (
5) На предложение ввести кол-во строк матрицы, выбираем 2.
6) Кол-во столбцов – 2.
7) Программа выдает: «ОШИБКА. ».
Выводы по работе
Для проверки результатов, выдаваемых программой, использовался
математический пакет MathCAD 2001 Professional.
Существенный недостаток программы в том, что при нахождении обратной
матрицы и определителя, программа может работать только с матрицами,
размером не превышающие 3х3. Это связано со значительным усложнением
программы, в случаи необходимости выполнения вышеперечисленных операций над
матрицами большего размера.
При написании программы использовалась следующая литература:
1) Фаронов В.В. «TurboPascal 7.0, начальный курс. Учебное пособие».
2) Мизрохи С.В. «TurboPascal и объектно-ориентированное
3) Голубев А.Б., Сидоров Ю.Н., Чередниченко А.И., Яценко И.В. «Основы
программирования на языке Pascal».
4) Боревич Э.И. «Определители и матрицы».
5) Гутер Р.С., Резниковский П.Т. «Программирование и вычислительная
6) Письменный Д.Т. «Конспект лекций по высшей математике», 1 часть.
7) Владимирский Б.М., Горстко А.Б., Ерусалимский Я.М. «Математика.