Определение ортогональной матрицы - Программирование, компьютеры и кибернетика курсовая работа

Определение ортогональной матрицы - Программирование, компьютеры и кибернетика курсовая работа



































Разработка эскизного и технического проектов программы преобразования заданной матрицы в ортогональную матрицу. Сравнивание транспонированной матрицы с обратной с целью проверки ортогональности. Выбор состава технических и программных средств реализации.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Тема курсовой работы «Определение ортогональной матрицы»
1. Разработка эскизного и технического проектов программы
1.2 Назначение и область применения
1.3.3 Организация входных и выходных данных
1.3.4 Выбор состава технических и программных средств
Приложение «Листинг программы «Определение ортогональной матрицы»
Курсовая работа «Определение ортогональной матрицы» посвящена созданию рабочей программы, позволяющей работать с массивами данных.
Рабочая программа представляет оператору преобразование по методу Гаусса -- Жордана заданной матрицы в обратную матрицу. Транспонирование расчетной матрицы. Умножение транспонированной матрицы на обратную матрицу и сравнивание результата с единичной матрицей с целью проверки верности нахождения обратной матрицы. Сравнивание транспонированной матрицы с обратной, с целью проверки ортогональности.
Рабочая программа реализуется в консольной технологии, занимает не более 15 кбайт памяти. Может работать под операционной системой Windows ХР и более ранних версиях Windows, на процессорах начиная 486 серии.
Данная курсовая работа имеет практическое применение: при небольшой модификации данного проекта можно создать тестовую программу в помощь студентам, изучающим матрицы и свойства матриц.
1. Разработка эскизного и технического проектов программы
В курсовой работе необходимо создать консольное приложение «Определение ортогональной матрицы», позволяющее рассчитывать из заданной матрицы обратную матрицу, транспонированную матрицу, и с её помощью определять ортогональность представленной матрицы.
- автоматически преобразовывать исходную матрицу в обратную матрицу;
- автоматически транспонировать исходную матрицу;
- автоматически умножать транспонированную матрицу на обратную матрицу;
- автоматически сравнивать произведение матриц с единичной матрицей;
- автоматически сравнивать транспонированную матрицу с обратной;
- автоматически просчитывать вывод об ортогональности матрицы;
- выводить на экран результаты вычисления.
Интерфейс программы «Определение ортогональной матрицы» должен представлять собой собственное консольное окно с заголовком и выводом расчетных данных.
1.2 Назначение и область применения
Назначение программы - «Определение ортогональной матрицы» позволяет производить проверку заданной матрицы на ортогональность.
Область применения программы - вычисления для дисциплины по курсу линейной алгебры при изучении темы «Матрицы» для учащихся старших классов и студентов первого курса.
Необходимо разработать программу для проведения математических вычислений с матрицами с целью выявления ортогональности матрицы.
В математике квадратная матрица А называется ортогональной, если АТ=А-1
Транспонированная матрица АТ - это матрица, полученная путем замены у исходной матрицы А строк на столбцы. Обратная матрица А-1 - это такая матрица, при умножении на которую исходной матрицы А, даёт в результате единичную матрицу. Единичная матрица - это такая матрица, в которой элементы главной диагонали принимают значение 1, остальные элементы 0. Главная диагональ матрицы - это диагональ, которая проходит через верхний левый и нижний правый углы матрицы.
Разрабатываемая программа «Определение ортогональной матрицы» должна по методу Гаусса -- Жордана преобразовывать исходную матрицу в обратную и сравнивать её с транспонированной.
При выполнении арифметических действий с матрицами следует применить стандартные математические алгоритмы.
В программе решаются одновременно несколько задач:
Нахождение обратной матрицы из исходной.
Вычисление верности вычислений, путем сравнивания произведения транспонированной и обратной матрицы с единичной.
Сравнивание транспонированной и обратной матрицы на предмет ортогональности.
Транспонирование исходной матрицы решается путем перезаписи элементов aij исходной матрицы в элементы aji транспонированной матрицы в двух циклах поэлементно.
Для нахождения обратной матрицы воспользуемся алгоритмом Гаусса -- Жордана, а именно:
1. Выбираем первый слева столбец матрицы, в котором есть хоть одно отличное от нуля значение.
2. Все элементы первой строки делим на верхний элемент выбранного столбца.
3. Из оставшихся строк вычитаем первую строку, умноженную на первый элемент соответствующей строки, с целью получить первым элементом каждой строки (кроме первой) ноль.
4. Далее проводим такую же процедуру с матрицей, получающейся из исходной матрицы после вычёркивания первой строки и первого столбца.
5. После повторения этой процедуры n-1 раз получаем верхнюю треугольную матрицу
6. Вычитаем из предпоследней строки последнюю строку, умноженную на соответствующий коэффициент, с тем, чтобы в предпоследней строке осталась только 1 на главной диагонали.
7. Повторяем предыдущий шаг для последующих строк. В итоге получаем единичную матрицу и решение на месте свободного вектора (с ним необходимо проводить все те же преобразования).
8. Чтобы получить обратную матрицу, нужно применить все операции в том же порядке к единичной матрице.
Для проверки вычислений требуется вычислить произведение обратной матрицы на транспонированную матрицу и сравнить результат с единичной матрицей. Умножение матриц происходит поэлементно. Для этого используется три цикла, первый и второй используется для перебора элементов результирующей матрицы, второй и третий для перебора элементов транспонированной матрицы, первый и третий для перебора элементов обратной матрицы. После каждого прохождения третьего цикла, накапливаем сумму, которая после завершения цикла приравнивается к соответствующему элементу результирующей матрицы. Для того, чтобы значения были верными, после прохождения первого и второго цикла, объявляем текущий элемент результирующей матрицы равным нулю. После завершения работы всех циклов на выходе должна быть заполненная, не нулевая матрица. Далее поэлементно будем сравнивать полученную матрицу с единичной матрицей. Зная, что единичная матрица - это матрица, у которой главные элементы единицы, а остальные нули, будем использовать два цикла для прогона всей матрицы поэлементно. В конце каждого цикла зададим условие: если элемент находиться на главной диагонали (т.е. aij такое, что i=j) и он не равен единице, то будем накапливать счетчик «истины»; если элемент находиться не на главной диагонали (т.е. aij такое, что i!=j) и он не равен нулю, то так же будем накапливать счетчик «истины». В итоге, после прохождения всех циклов, сравним счетчик «истины» с исходным значением и программа сделает вывод, единичная ли матрица. Если полученная матрица единичная - то результат нахождения обратной и транспонированной матрицы верный. Примечание: т.к. мы не можем сравнить точно два действительных числа, то для этого будем использовать некую e, равную e=0,00001. Т.е. можно сказать, что результат вычислений мы получаем с точностью e.
Далее, зная, что полученные транспонированная матрица и обратная матрица, найдены верно, будем сравнивать их между собой поэлементно. Применяя ранее описанный способ с накоплением счетчика «истины», запустим два цикла для перебора элементов обоих матриц. Если элементы будут расходиться между собой, то будем накапливать счетчик «истины».
В итоге, если счетчик «истины» будет больше исходного значения, то программа делает вывод об ортогональности матрицы.
1.3.3 Организация входных и выходных данных
Входные данные - это заданная в задании матрица.
Выходные данные - это вывод об ортогональности матрицы.
Кроме того, при запуске программы выдаются текстовые сообщения о последовательности действий программы и вывод промежуточных матриц: заданной заданием, обратной, транспонированной, результат произведения обратной матрицы на транспонированную матрицу с последующим выводом о правильности решения.
1.3.4 Выбор состава технических и программных средств
Средства, используемые в данной работе, содержатся в интегрированной среде разработки (IDE) Microsoft Visual C++ 2008 (далее VS). Эта среда предоставляет набор инструментов, которые помогают в создании и изменении кода, а также в обнаружении и исправлении ошибок. В VS для организации работы служат проекты и решения. При написании программы на языке C++ с помощью VS первым этапом является выбор типа проекта. Для каждого типа проекта VS устанавливает параметры компилятора и генерирует стартовый код. Так как задача ставились написать консольное приложение, то запускался мастер приложений Win32 и создавался пустой проект - без файлов исходного кода. В пустой проект через обозреватель решений добавлялись файлы исходного кода «main.cpp», «prototype.ccp» и файл включений «prototype.h». Далее все файлы компилировались, исправлялись ошибки, полученные при компиляции, создавался загрузочный (исполнительный) модуль, он запускался на выполнение. При запуске на выполнение возникали ошибки в логике программы, которые в дальнейшем были исправлены. В конечном итоге получился исполнительный модуль - рабочая программы «Определение ортогональной матрицы.exe».
Программа «Определение ортогональной матрицы» предназначена для функционирования в среде Windows. Это приложение, хотя и разрабатывалось в среде визуального программирования, но использует консольное окно. Таким образом, программирование строится на процессе написания кода, придающего консольному окну и программе в целом необходимую функциональность. Окно программы изображено на рисунке 1.
Рисунок 1. Консольное окно программы «Определение ортогональной матрицы»
Окно программы выводится только один раз. Позиции для вывода данных определены программой. По окончании расчета программа предлагает нажать любую клавишу.
В спецификации программы определены основные файлы программы «Определение ортогональной матрицы».
Определение ортогональной матрицы.exe
Занимается вызовом основных вычислительных функций
Занимается описанием всех функций для ввода и вывода расчетных данных
Определены прототипы файловых функций для выполнения расчетов
При создании программы использовался модульный принцип построения программ. Все исходные модули логически разделены на файлы. Программа состоит из 3-х файлов: «main.срр», «prototype.ccp», «prototype.h».
Файл «main.срр» - главный, является по своей сути управляющим. Здесь осуществляется вход в программу. Этот модуль вызывает функции из другого модуля - файла функций «prototype.ccp». Прототипы функций хранятся в файле включений «prototype.h».
Функции, используемые в «main.ccp» и описанные в модуле «prototype.срр» вызываются в ходе программы:
void print_mas(double **mas); - функция вывода на экран предложенной матрицы. Функция применяется для упрощения алгоритма, так как операция вывода на экран матрицы идентична для всех расчетных матриц. Входными данными является указатель, в котором записана требуемая для вывода на экран матрица. Выходных данных нет.
void sravnenie(double **mas); - функция сравнения матрицы с единичной матрицей. Функция применяется для упрощения алгоритма и наглядности кода программы. Входные данные - указатель, в котором записана требуемая функция для сравнения. Выходных данных нет.
void rezultat(double **mas, double **mast); - функция сравнения обратной матрицы и транспонированной матрицы, а также финальный вывод результатов программы. Функция применяется для упрощения алгоритма и наглядности кода программы. Входные данные - два указателя, в которых записаны обратная и транспонированная матрицы. Выходных данных нет.
double ** obrat(double **mas); - функция для создания обратной матрицы. Функция применяется для упрощения алгоритма и наглядности кода программы. Входные данные - указатель, в котором записана расчетная матрица. Выходные данные - указатель, в котором записана обратная матрица.
double ** trans(double **mas); - функция для создания транспонированной матрицы. Функция применяется для упрощения алгоритма и наглядности кода программы. Входные данные - указатель, в котором записана расчетная матрица. Выходные данные - указатель, в котором записана транспонированная матрица.
double ** proizv(double **mas, double **mast); - функция для расчета произведения двух матриц. Функция применяется для упрощения алгоритма и наглядности кода программы. Входные данные - указатели требуемых для произведения матриц. Выходные данные - указатель с матрицей в которую записан результат произведения.
double ** sozdanie(double mas[4][4]); - функция для перезаписи матрицы из массива в указатель. Функция применяется для упрощения алгоритма, так как данная операция идентична для всех расчетных матриц. Входные данные - двумерный массив. Выходные данные - указатель, в которые переписан массив.
Так как при выполнении программы не требуется вводить дополнительных данных, а входе выполнения программы, существует алгоритм автопроверки расчетов, то следует заметить, что данная программа не нуждается в многократном тестировании. Отмечу только что при компилировании программы в среде разработки (IDE) Microsoft Visual C++ 2008 никаких ошибок и замечаний не возникло.
Программа «Определение ортогональной матрицы.ехе» - консольное приложение, занимает объем не более 15 Кбайт. Для ее выполнения необходим минимальный состав аппаратурных средств: операционная система Windows 95, процессор 486 серии, оперативная память 4 Мбайт, память видеокарты 512 Кбайт, жесткий диск 544 Мбайт, экран, клавиатура, мышь.
Рабочая программа из каталога «Release» проекта «Определение ортогональной матрицы», можно скопировать на жесткий или съемный диск.
При запуске рабочей программы на экран выводиться результат вычислений.
1. Герберт Шилдт. Полный справочник по С++. Четвертое издание. Москва. Издательский дом «Вильямс». 2009 г.
2. В.И. Шупляк, С++, Практический курс, Учебное пособие., Минск, «Новое знание», 2011 г.
3. MSDN -справочник по системе, операторам, функциям для среды разработки Microsoft Visual Studoi 2008 (2010) по языку С++.
4. Голуб Дж. (Gene H. Golub), Ван Лоун Ч. (Charles F. Van Loan) Матричные вычисления. -- М.: Мир, 2009, 548с., ил. (ISBN 5-03-002406-9)
5. Хорн Р. (Roger A. Horn), Джонсон Ч. (Charles C. Johnson) Матричный анализ. -- М.: Мир, 2011, 655с., ил. (ISBN 5-03-001042-4)
Листинг программы «Определение ортогональной матрицы»
Главный модуль программы - main.cpp
double mas_general[4][4]= {1.00, 0.42, 0.54, 0.66,
double null[4][4]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
double **mas=sozdanie(mas_general);
//Запуск вывода на экран расчетной матрицы
//Запуск функции создания обратной функции
//Запуск вывода на экран обратной матрицы
//Запуск функции создания транспонированной функции
//Запуск вывода на экран транспонированной матрицы
printf_s ("Транспонированная матрица\n");
//Запуск функции умножения обратной на транспонированную
//Вывод на экран результата умножения расчетной матрицы на обратную
printf_s ("Проверка подлинности получения обратной и транспонированной матрицы\nРезультат умножения транспонированной матрицы на обратную\n");
//Запуск функции сравнения полученной матрицы с единичной
//Запуск функции сравнения транспонированной матрицы с обратной
//Функция перезаписи из массива в указатели
double ** sozdanie(double mas[4][4])
//Переписываем из входящего указателя в новый, заменяя строки на столбцы
//Переписываем входной указатель на временный
//Создаем указатель для единичной матрицы
//Все элементы первой строки делим на верхний элемент выбранного столбца.
//Из оставшихся строк вычитаем первую строку, умноженную на первый элемент соответствующей строки,
//с целью получить первым элементом каждой строки (кроме первой) ноль.
temp1[i][j] = temp1[i][j] - temp1[k][j] * temp;
E[i][j] = E[i][j] - E[k][j] * temp;
//Вычитаем из предпоследней строки последнюю строку, умноженную на соответствующий коэффициент,
//с тем, чтобы в предпоследней строке осталась только 1 на главной диагонали.
temp1[i][j] = temp1[i][j] - temp1[k][j] * temp;
E[i][j] = E[i][j] - E[k][j] * temp;
//Переписываем значения из обработаной единичной матрицы в расчетную матрицу
//Возвращаем указатель с результатом
double ** proizv (double **mas, double **mast)
//Создаем указатель, в который будем записывать результат вычислений
//Результат умножения записываем в результирующий указатель
//Функция сравнения матрицы с единичной матрицой
if (mas[i][j]!=1 && (fabs(mas[i][j]-1.0)>0.00001))
s=s+1; //Если условие не выполняется, то счетчик истины увеличивается
if (mas[i][j]!=0 && (fabs(mas[i][j])>0.00001))
s=s+1; //Если условие не выполняется, то счетчик истины увеличивается
//Сравнение счетчика истины с начальным значением
printf_s ("Матрица не единичная => Вычисления выполнены не правильно\n\n");
printf_s ("Матрица единичная => Вычисления выполнены правильно\n\n");
void rezultat(double **mas, double **mast)
s++; //При выполнении условия, счетчик накручиваем
if (s>1) printf_s ("Транспонированная матрица не идентична обратной => \nПредставленная матрица не ортогональна\n\n");
else printf_s ("Транспонированная матрица идентична обратной => \nПредставленная матрица ортогональна\n\n");
void print_mas(double **mas); //Функция вывода на экран матрицы
void sravnenie(double **mas); //Функция сравнения матрицы с единичной
void rezultat(double **mas, double **mast);//Функция сравнения обратной и транспонированной матрицы и финальный вывод расчтов
double ** obrat(double **mas); //Функция создания обратной матрицы
double ** trans(double **mas); //Транспонирование матрицы
double ** proizv(double **mas, double **mast); //Функция произведения матриц
double ** sozdanie(double mas[4][4]); //Функция перезаписи из массива в указатели
Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы. курсовая работа [159,8 K], добавлен 26.01.2010
Разработка эскизного и технического проектов компьютерной игры "Скачки". Назначение и область применения программы. Выбор состава технических и программных средств. Составление текста программы, ее спецификация, тестирование и условия выполнения. курсовая работа [681,4 K], добавлен 18.10.2014
Разработка эскизного и технического проектов программы, ее назначение и область применения, технические характеристики. Организация входных и выходных данных, выбор состава технических и программных средств. Текст программы, ее описание и тестирование. курсовая работа [1,3 M], добавлен 15.11.2009
Составление процедуры для матрицы, разложения матрицы на множители, решения системы линейных уравнений, нахождения определителя матрицы и матрицы с транспонированием. Суть метода квадратного корня. Разложение матрицы на множители. Листинг программы. лабораторная работа [39,4 K], добавлен 18.09.2012
GetMatrDop как процедура определяет значение элемента транспонированной матрицы дополнений. Знакомство с этапами разработки в среде Turbo Pascal программы сортировки элементов, находящихся на главной диагонали матрицы. Особенности тестирования программы. курсовая работа [780,4 K], добавлен 20.11.2014
Разработка эскизного и технического проектов программы "Шифр Цезаря": назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка, тест и внедрение программы. курсовая работа [563,7 K], добавлен 15.07.2012
Разработка эскизного и технического проектов программы, ее назначение и область применения, описание алгоритма, организация входных и выходных данных. Выбор состава технических и программных средств, разработка рабочего проекта, спецификация программы. курсовая работа [700,6 K], добавлен 26.01.2010
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Определение ортогональной матрицы курсовая работа. Программирование, компьютеры и кибернетика.
Оценка Эссе По Английскому Егэ
Реферат: Место предмета преступления в составе преступления
Л Каминский Сочинение Анализ Рассказа
Реферат: Особенности молодежного сленга в современном русском, английском и французском языках
Реферат: Дифференциация народонаселения. Скачать бесплатно и без регистрации
Сочинение Про Дельфинарий 6 Класс
Мини Сочинение Листопад 4 Класс
Дождевой Червь Внешнее Строение Лабораторная Работа
Олимпийские Виды Легкой Атлетики Реферат
Доклад по теме Владимир Лефевр
Дипломная Работа На Тему Стратегії Надання Психологічної Допомоги У Ситуаціях Стихійного Лиха, Катастроф, Терористичних Нападів
Реферат: Сущность и значение Конституции РФ
Реферат: Россия на мировом рынке услуг. Скачать бесплатно и без регистрации
Курсовая работа по теме Особенности материальной культуры эпохи Возрождения: аспекты истории науки и техники
Правоохранительные Органы Рк Эссе
Примеры Сочинений Егэ По Обществознанию Социология
Дипломная Работа На Тему Маркетинг В Сфере Туризма
Реферат: Реставрация Стюартов
Реферат На Тему Герои Великой Отечественной Войны
Дипломная работа по теме Компенсация реактивной мощности в системах электроснабжения с преобразовательными установками
Влияние условий хранения на показатели качества апельсинов - Маркетинг, реклама и торговля курсовая работа
Шпицберген в российско-норвежских отношениях на современном этапе - Международные отношения и мировая экономика курсовая работа
Коммуникации в инновационном менеджменте - Менеджмент и трудовые отношения контрольная работа


Report Page