рефераты рефераты
Главная страница > Курсовая работа: Программирование действий над матрицами на языке С++  
Курсовая работа: Программирование действий над матрицами на языке С++
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Программирование действий над матрицами на языке С++

Курсовая работа: Программирование действий над матрицами на языке С++

Государственное образовательное учреждение

высшего профессионального образования

Ульяновский Государственный Университет

Факультет Математики и Информационных технологий

Кафедра информационных технологий

КУРСОВАЯ РАБОТА

Программирование действий над матрицами на языке С++.

Прикладная информатика 08.08.01

Проект выполнил студент

Русин Виктор Александрович

Ульяновск

2010 г.


Содержание

Введение

1. Теоретическая часть

1.1 Описание программы, матрицы

1.2 C++

1.3 Microsoft Visual Studio Express

1.4 Стандартная библиотека шаблонов (STL)

1.5 Vector

1.6 Перегрузка операторов

2. Проектирование и этапы разработки

2.1 Постановка задачи

2.2 Средства разработки

2.3 Описание процесса компиляции и запуска программы

3. Реализация

3.1 Структура программы

3.2 Структура класса

Заключение

Литература

Приложение. Исходный код программы. Заголовочные файлы

 


Введение

На сегодняшний день математическое программирование – важная составляющая всего программирования. Большие и сложные вычисления благодаря простым программам становятся простыми.

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

В качестве среды программирования выбрана MS Visual Studio 2008 и язык программирования C++.


1. Теоретическая часть

 

1.1 Описание программы, матрицы

Ма́трица — математический объект, записываемый в виде прямоугольной таблицы чисел (или элементов кольца) и допускающий алгебраические операции (сложение, вычитание, умножение) между ним и другими подобными объектами. Обычно матрицы представляются двумерными (прямоугольными) таблицами. Иногда рассматривают многомерные матрицы или матрицы непрямоугольной формы.

Операции над матрицами

Пусть aij — элементы матрицы A, а bij — элементы матрицы B.

Линейные операции:

Умножение матрицы A на число λ (обозначение: λA) заключается в построении матрицы B, элементы которой получены путём умножения каждого элемента матрицы A на это число, то есть каждый элемент матрицы B равен

bij = λaij

Сложение матриц A + B есть операция нахождения матрицы C, все элементы которой равны попарной сумме всех соответствующих элементов матриц A и B, то есть каждый элемент матрицы C равен

cij = aij + bij

A+B=\begin{pmatrix} 2 & 0 & -1\\ 1 & 3 & 0\end{pmatrix}+\begin{pmatrix} 3 & 1 & 0\\ 8 & 2 & 3\end{pmatrix}=\begin{pmatrix}2+3 & 0+1 & -1+0\\1+8 & 3+2 & 0+3\end{pmatrix}=\begin{pmatrix}5 & 1 & -1\\9 & 5 & 3\end{pmatrix}

Вычитание матриц A − B определяется аналогично сложению, это операция нахождения матрицы C, элементы которой


cij = aij - bij

A-B=\begin{pmatrix} 2 & 0 & -1\\ 1 & 3 & 0\end{pmatrix}-\begin{pmatrix} 3 & 1 & 0\\ 8 & 2 & 3\end{pmatrix}=\begin{pmatrix}2-3 & 0-1 & -1-0\\1-8 & 3-2 & 0-3\end{pmatrix}=\begin{pmatrix}-1 & -1 & -1\\-7 & 1 & -3\end{pmatrix}

Сложение и вычитание допускается только для матриц одинакового размера.

Существует нулевая матрица Θ такая, что её прибавление к другой матрице A не изменяет A, то есть

A + Θ = A

Все элементы нулевой матрицы равны нулю.

Умножение матриц (обозначение: AB, реже со знаком умножения A\times B) — есть операция вычисления матрицы C, элементы которой равны сумме произведений элементов в соответствующей строке первого множителя и столбце второго.

\! c_{ij} = \sum^n_{k=1} a_{ik} b_{kj}

В первом множителе должно быть столько же столбцов, сколько строк во втором. Если матрица A имеет размерность m \times n, B — n \times k, то размерность их произведения AB = C есть m \times k.

F L=  \begin{pmatrix}    a & d \\    b & e \\    c & f \\  \end{pmatrix}\times  \begin{pmatrix}    g & i & k \\    h & j & l \\  \end{pmatrix}=   \begin{pmatrix}    (a \cdot g  +  d \cdot h) & (a \cdot i  +  d \cdot j) & (a \cdot k  +   d \cdot l)\\    (b \cdot g  +  e \cdot h) & (b \cdot i  +  e \cdot j) & (b \cdot k  +   e \cdot l)\\    (c \cdot g  +  f \cdot h) & (c \cdot i  +  f \cdot j) & (c \cdot k  +   f \cdot l)\\  \end{pmatrix}

A B=\begin{pmatrix} 2 & 3\\ 5 & 7\end{pmatrix}\times\begin{pmatrix} -1 & 2\\ -2 & 3\end{pmatrix}=\begin{pmatrix}2 \cdot (-1) + 3 \cdot (-2) & 2 \cdot 2 + 3 \cdot 3\\5 \cdot (-1) + 7 \cdot (-2) & 5 \cdot 2 + 7 \cdot 3\end{pmatrix}=\begin{pmatrix}-8 & 13\\-19 & 31\end{pmatrix}

B A=\begin{pmatrix} -1 & 2\\ -2 & 3\end{pmatrix}\times\begin{pmatrix} 2 & 3\\ 5 & 7\end{pmatrix}=\begin{pmatrix}-1 \cdot 2 + 2 \cdot 5 & -1 \cdot 3 + 2 \cdot 7\\-2 \cdot 2 + 3 \cdot 5 & -2 \cdot 3 + 3 \cdot 7\end{pmatrix}=\begin{pmatrix}8 & 11\\11 & 15\end{pmatrix}


Возводить в степень можно только квадратные матрицы.

Транспонирование матрицы (обозначение: AT) — операция, при которой матрица отражается относительно главной диагонали, то есть

a^T_{ij} = a_{ji}

Если A — матрица размера m \times n, то AT — матрица размера n \times m.

1.2 C++

C++ (Си++) — компилируемый статически типизированный язык программирования общего назначения. Поддерживает разные парадигмы программирования, но, в сравнении с его предшественником — языком Си, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования.

Название «C++» происходит от Си (C), в котором унарный оператор ++ обозначает инкремент переменной.

В 1990-х годах язык стал одним из наиболее широко применяемых языков программирования общего назначения.

При создании C++ стремились сохранить совместимость с языком Си. Большинство программ на Си будут исправно работать и с компилятором C++. C++ имеет синтаксис, основанный на синтаксисе Си.

 

1.3 Microsoft Visual Studio Express

Microsoft Visual Studio Express — линейка бесплатных интегрированных сред разработки, облегчённая версия Microsoft Visual Studio, разработанной компанией Microsoft. Согласно утверждению Microsoft, «Express»-редакции предлагают отлаженную, простую в обучении и использовании среду разработки пользователям, не являющимся профессиональными разработчиками ПО, — любителям и студентам. Последняя версия была выпущена 19 ноября 2007, пакет обновления SP1 — 11 августа 2008. С апреля 2009 года Microsoft прекратила поддержку всех предыдущих версий Visual Studio Express. В апреле 2010 выпущена Visual Studio 2010 Express

 

1.4 Стандартная библиотека шаблонов (STL)

STL (англ. Standard Template Library) — набор согласованных обобщённых алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций.

Стандартная библиотека шаблонов до включения в стандарт C++ была сторонней разработкой, в начале — фирмы HP, а затем SGI. Стандарт языка не называет её «STL», так как эта библиотека стала неотъемлемой частью языка, однако многие люди до сих пор используют это название, чтобы отличать её от остальной части стандартной библиотеки (потоки ввода/вывода (iostream), подраздел Си и др.).

Проект под названием STLPort, основанный на SGI STL, осуществляет постоянное обновление STL, iostream и строковых классов. Некоторые другие проекты также занимаются разработкой частных применений стандартной библиотеки для различных конструкторских задач. Каждый производитель компиляторов C++ обязательно поставляет какую-либо реализацию этой библиотеки, так как она является очень важной частью стандарта и широко используется.

Архитектура STL была разработана Александром Степановым и Менг Ли.


1.5 Vector

Вектор (vector) напоминает нам массив, только он способен расти до произвольного размера, поддерживает информацию о размере. Как и массив к вектору можно обратить воспользовавшись операцией индексирования []. Вот характеристики:

·  Доступ к данных с одинаковой скоростью

·  Вставка приводит к перемещению элементов

·  При расширении данные копируются в другой блок

Как видите вектор оптимален для получения информации, но при большом количестве вставок лучше воспользоваться другими контейнерами, например, списками. Проблема в том, что физически вектор располагается в непрерывной памяти. На C это реализовывали функциями malloc.

Страницы: 1, 2, 3

рефераты
Новости