14760

Определение ортогональной матрицы

Курсовая

Информатика, кибернетика и программирование

Рабочая программа представляет оператору преобразование по методу Гаусса — Жордана заданной матрицы в обратную матрицу. Транспонирование расчетной матрицы. Умножение транспонированной матрицы на обратную матрицу и сравнивание результата с единичной матрицей с целью проверки верности нахождения обратной матрицы.

Русский

2014-12-11

137.5 KB

8 чел.

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

по дисциплине

«Программирование »

Тема курсовой работы  «Определение ортогональной матрицы»


Содержание

Введение …………………………………………………………...

3

1

Разработка эскизного и технического проектов программы ……

3

1.1

Задание …………………………………………..…………...

3

1.2

Назначение и область применения…………………………

4

1.3

Технические характеристики………..………………………

4

1.3.1

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

4

1.3.2

Описание алгоритма ……………………………….

4

1.3.3

Организация входных и выходных данных ………

6

1.3.4

Выбор состава технических и программных средств ………………………………………………

6

2

Разработка рабочего проекта ……………………………………..

7

2.1

Разработка программы ……….……………………………

7

2.2

Спецификация программы ……….………………………..

8

2.3

Описание программы ………………………………………..

8

2.4

Тестирование программы ………..…………………………

9

3

Заключение…………….…………………………………………….

9

4

Список использованной  литературы ……………………………..

10

5

Приложение «Листинг программы

«Определение ортогональной матрицы».

11


Введение

Курсовая работа «Определение ортогональной матрицы» посвящена созданию рабочей программы, позволяющей работать с массивами данных.

Рабочая программа представляет оператору преобразование по методу Гаусса — Жордана заданной матрицы в обратную матрицу. Транспонирование расчетной матрицы. Умножение транспонированной  матрицы на обратную матрицу и сравнивание результата с единичной матрицей с целью проверки верности нахождения обратной матрицы. Сравнивание транспонированной матрицы с обратной, с целью проверки ортогональности.

Рабочая программа реализуется в консольной технологии, занимает не более 15 кбайт памяти. Может работать под операционной системой  Windows ХР и более ранних версиях Windows, на процессорах начиная 486 серии.

Данная курсовая работа имеет практическое применение: при небольшой модификации данного проекта можно создать тестовую программу в помощь студентам, изучающим матрицы и свойства матриц.

1 Разработка эскизного и технического проектов программы

1.1 Задание

В курсовой работе необходимо создать консольное приложение «Определение ортогональной матрицы», позволяющее рассчитывать из заданной матрицы обратную матрицу, транспонированную матрицу, и с её помощью определять ортогональность представленной матрицы.

Консольное приложение должно:

- автоматически преобразовывать исходную матрицу в обратную матрицу;

- автоматически транспонировать исходную матрицу;

- автоматически умножать транспонированную матрицу на обратную матрицу;

- автоматически сравнивать произведение матриц с единичной матрицей;

- автоматически сравнивать транспонированную матрицу с обратной;

- автоматически просчитывать вывод об ортогональности матрицы;

- выводить на экран результаты вычисления.

Интерфейс программы «Определение ортогональной матрицы» должен представлять собой собственное консольное окно с заголовком и выводом расчетных данных.


1.2 Назначение и область применения

Назначение программы – «Определение ортогональной матрицы» позволяет производить проверку заданной матрицы на ортогональность.

Область применения программы - вычисления для дисциплины по курсу линейной алгебры при изучении темы «Матрицы» для учащихся старших классов и студентов первого курса.

1.3 Технические характеристики

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

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

В математике квадратная матрица А называется ортогональной, если АТ-1

Транспонированная матрица АТ – это матрица, полученная путем замены у исходной матрицы А строк на столбцы. Обратная матрица А-1 – это такая матрица, при умножении на которую исходной матрицы А, даёт в результате единичную матрицу. Единичная матрица – это такая матрица, в которой элементы главной диагонали принимают значение 1, остальные элементы 0. Главная диагональ матрицы – это диагональ, которая проходит через верхний левый и нижний правый углы матрицы.

Разрабатываемая программа «Определение ортогональной матрицы» должна по методу Гаусса — Жордана преобразовывать исходную матрицу в обратную и сравнивать её с транспонированной.

При выполнении арифметических действий с матрицами следует применить стандартные математические алгоритмы.

1.3.2 Описание алгоритма

В программе решаются одновременно несколько задач:

  1.  Транспонирование исходной матрицы.
  2.  Нахождение обратной матрицы из исходной.
  3.  Вычисление верности вычислений, путем сравнивания произведения транспонированной и обратной матрицы с единичной.
  4.  Сравнивание транспонированной и обратной матрицы на предмет ортогональности.
  5.  Вывод результатов вычислений.

Транспонирование исходной матрицы решается путем перезаписи элементов 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».

2 Разработка рабочего проекта

2.1 Разработка программы

Программа «Определение ортогональной матрицы» предназначена для функционирования в среде Windows. Это приложение, хотя и   разрабатывалось в среде визуального программирования, но использует консольное окно. Таким образом, программирование строится на  процессе написания кода, придающего консольному окну и программе в целом необходимую функциональность. Окно программы изображено на рисунке 1.

Рисунок 1. Консольное окно программы «Определение ортогональной матрицы».

Окно программы выводится только один раз. Позиции для вывода данных определены программой. По окончании расчета программа предлагает нажать любую клавишу.

2.2 Спецификация программы

В спецификации программы определены основные файлы программы «Определение ортогональной матрицы».

Обозначения

Наименование

Примечание

Определение ортогональной матрицы.exe

Исполняемая программа

Входная точка в программу

main.срр

Главная функция

Занимается вызовом основных вычислительных функций

prototype.ccp

Файл для функций

Занимается описанием всех функций для ввода и вывода расчетных данных

prototype.h

Файл включений

Определены прототипы файловых функций для выполнения расчетов

2.3 Описание программы

При создании программы использовался модульный принцип построения программ. Все исходные модули логически разделены на файлы.  Программа состоит из 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]); - функция для перезаписи матрицы из массива в указатель. Функция применяется для упрощения алгоритма, так как данная операция идентична для всех расчетных матриц. Входные данные – двумерный массив. Выходные данные – указатель, в которые переписан массив.

2.4 Тестирование программы

Так как при выполнении программы не требуется вводить дополнительных данных, а входе выполнения программы, существует алгоритм автопроверки расчетов, то следует заметить, что данная программа не нуждается в многократном тестировании. Отмечу только что при компилировании программы в среде разработки (IDE) Microsoft Visual C++ 2008 никаких ошибок и замечаний не возникло.

3 Заключение

Программа «Определение ортогональной матрицы.ехе»  - консольное приложение, занимает объем не более 15 Кбайт. Для ее выполнения необходим минимальный состав аппаратурных средств: операционная система Windows 95, процессор 486 серии, оперативная память 4 Мбайт, память видеокарты 512 Кбайт, жесткий диск 544 Мбайт, экран, клавиатура, мышь.

Рабочая программа из каталога «Release» проекта «Определение ортогональной матрицы», можно скопировать на жесткий или съемный диск.

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

4 Список  использованной литературы

  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

#include <stdio.h> 

#include <locale.h>

#include <math.h>

#include <windows.h>

#include <stdlib.h>

#include <time.h>

#include "prototype.h"

#define NS printf_s(" \n \n")

int main()

{

setlocale(LC_ALL,"");

 //Задание рассчетной матрицы

 double mas_general[4][4]= {1.00, 0.42, 0.54, 0.66,

    0.42, 1.00, 0.32, 0.44,

    0.54, 0.32, 1.00, 0.22,

    0.66, 0.44, 0.22, 1.00};

 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);

 double **obrat1=sozdanie(null);

 double **trans1=sozdanie(null);

 double **ras1=sozdanie(null);

 

 //Запуск вывода на экран расчетной матрицы

printf_s ("Расчетная матрица\n");

print_mas(mas);

NS;

 //Запуск функции создания обратной функции

obrat1=obrat(mas);

 //Запуск вывода на экран обратной матрицы

printf_s ("Обратная матрица\n");

print_mas(obrat1);

NS;

 //Запуск функции создания транспонированной функции

trans1=trans(mas);

 //Запуск вывода на экран транспонированной матрицы

printf_s ("Транспонированная матрица\n");

print_mas(trans1);

NS;

 //Запуск функции умножения обратной на транспонированную

ras1=proizv(obrat1,trans1);

 //Вывод на экран результата умножения расчетной матрицы на обратную

printf_s ("Проверка подлинности получения обратной и транспонированной матрицы\nРезультат умножения транспонированной матрицы на обратную\n");

print_mas(ras1);

NS;

 //Запуск функции сравнения полученной матрицы с единичной

sravnenie(ras1);

 //Запуск функции сравнения транспонированной матрицы с обратной

rezultat(obrat1,trans1);

 return 0;

}

 Модуль программы prototype.ccp

#include "prototype.h"

//Функция перезаписи из массива в указатели

double ** sozdanie(double mas[4][4])

{

 //Создаем указатель

 double **ras;

ras=new double *[4];

 for (int i=0; i<4; i++)

 ras[i]= new double [4];

 //Переписываем в него массив

 for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

  ras[i][j]=mas[i][j];

 //Выводим указатель

 return ras;

 //Подчищаем за собой

 for (int i = 0; i < 4; i++)

  delete [] ras[i];

   delete [] ras;

}

//Функция вывода на экран матрицы

void print_mas (double **mas)

{

 for (int i=0; i<4; i++)

{

 printf_s ("\n");

 for (int j=0; j<4; j++)

  printf_s ("%4.2f ",mas[i][j]);

}

}

//Функция транспонирования матрицы

double ** trans(double **mas)

{

 //Создаем указатель

 double **ras;

ras=new double *[4];

 for (int i=0; i<4; i++)

 ras[i]= new double [4];

 //Переписываем из входящего указателя в новый, заменяя строки на столбцы

 for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

  ras[j][i]=mas[i][j];

 //Выводим соданый указатель

 return ras;

 //Подчищаем за собой

 for (int i = 0; i < 4; i++)

 delete [] ras[i];

  delete [] ras;

}

//Функция расчета обратной матрицы

double ** obrat(double **mas)

{

 //Создаем временный указатель

 double **temp1 = new double *[4];

 for (int i=0; i<4; i++)

  temp1[i]= new double [4];

 //Переписываем входной указатель на временный

 for (int i = 0; i < 4; i++)

  for (int j = 0; j < 4; j++)

   temp1[i][j]=mas[i][j];

 //Создание обратной матрицы

{

 //Создаем временную матрицу

   double temp;

 //Создаем указатель для единичной матрицы

   double **E = new double *[4];

 for (int i = 0; i < 4; i++)

  E[i] = new double [4];

 //Заполняем единичную матрицу

   for (int i = 0; i < 4; i++)

       for (int j = 0; j < 4; j++)

       {

           E[i][j] = 0.00;

           if (i == j)

               E[i][j] = 1.00;

       }

 //Заполняем временную матрицу

 //Все элементы первой строки делим на верхний элемент выбранного столбца.

    for (int k = 0; k < 4; k++)

 {

       temp = temp1[k][k];

       for (int j = 0; j < 4; j++)

  {

           temp1[k][j] = temp1[k][j]/temp;

           E[k][j] = E[k][j]/temp;

  }

 //Из оставшихся строк вычитаем первую строку, умноженную на первый элемент соответствующей строки,

 //с целью получить первым элементом каждой строки (кроме первой) ноль.

       for (int i = k + 1; i < 4; i++)

  {

           temp = temp1[i][k];

           for (int j = 0; j < 4; j++)

           {

               temp1[i][j] = temp1[i][j] - temp1[k][j] * temp;

               E[i][j] = E[i][j] - E[k][j] * temp;

  }

 }

}

 //Вычитаем из предпоследней строки последнюю строку, умноженную на соответствующий коэффициент,

 //с тем, чтобы в предпоследней строке осталась только 1 на главной диагонали.

   for (int k = 4 - 1; k > 0; k--)

   {

       for (int i = k - 1; i >= 0; i--)

       {

           temp = temp1[i][k];

           for (int j = 0; j < 4; j++)

           {

               temp1[i][j] = temp1[i][j] - temp1[k][j] * temp;

               E[i][j] = E[i][j] - E[k][j] * temp;

           }

       }

   }

 //Переписываем значения из обработаной единичной матрицы в расчетную матрицу

   for (int i = 0; i < 4; i++)

       for (int j = 0; j < 4; j++)

           temp1[i][j] = E[i][j];

 //Подчищаем за собой

   for (int i = 0; i < 4; i++)

       delete [] E[i];

  delete [] E;

 

 //Возвращаем указатель с результатом

 return temp1;

 //Подчищаем за собой

 for (int i = 0; i < 4; i++)

 delete [] temp1[i];

  delete [] temp1;

}

}

 //Функция произведения двух матриц

 double ** proizv (double **mas, double **mast)

{

 //Создаем указатель, в который будем записывать результат вычислений

 double **ras;

ras=new double *[4];

 for (int i=0; i<4; i++)

 ras[i]= new double [4];

 //Вычисляем значения по элементно

 for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

  ras[i][j]=0;

 for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

 {

  for (int k=0; k<4; k++)

  {

   double s = mas[k][j]*mast[i][k];

   //Результат умножения записываем в результирующий указатель

   ras[i][j]=ras[i][j]+s;

  }

 }

 //Выводим результирующий указатель

 return ras;

 //Подчищаем за собой

 for (int i = 0; i < 4; i++)

 delete [] ras[i];

  delete [] ras;

}

//Функция сравнения матрицы с единичной матрицой

void sravnenie(double **mas)

{

int s=1; //Счетчик истины

for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

{

 //Сравнение по единичным наборам

 if (i==j)

 {

  if (mas[i][j]!=1 && (fabs(mas[i][j]-1.0)>0.00001))

  {

   s=s+1; //Если условие не выполняется, то счетчик истины увеличивается

  }

 }

 //Сравнение по нулевым наборам

 else if (i!=j)

 {

  if (mas[i][j]!=0 && (fabs(mas[i][j])>0.00001))

  {

   s=s+1; //Если условие не выполняется, то счетчик истины увеличивается

  }

 }

}

 //Сравнение счетчика истины с начальным значением

 if (s>1)

 printf_s ("Матрица не единичная => Вычисления выполнены не правильно\n\n");

 else

 printf_s ("Матрица единичная => Вычисления выполнены правильно\n\n");

}

//Функция сравнения матриц

void rezultat(double **mas, double **mast)

{

int s=1; //Счетчик истины

for (int i=0; i<4; i++)

 for (int j=0; j<4; j++)

 if (mas[i][j]!=mast[i][j])

  s++; //При выполнении условия, счетчик накручиваем

if (s>1) printf_s ("Транспонированная матрица не идентична обратной => \nПредставленная матрица не ортогональна\n\n");

else printf_s ("Транспонированная матрица идентична обратной => \nПредставленная матрица ортогональна\n\n");

}

Модуль программы prototype.h

#ifndef PROTOTYPE_H

#define PROTOTYPE_H

#include <time.h>

#include <stdio.h> 

#include <stdlib.h>

#include <math.h> 

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]); //Функция перезаписи из массива в указатели

#endif


 

А также другие работы, которые могут Вас заинтересовать

41153. Применение Первого начала термодинамики для процессов идеального газа 218 KB
  Т =const Если Т =const то после подстановки в уравнение состояния 4.4 получим pV = const или pv = const 4. В соотвествии с 1 внутрення энергия пропорциональна температуре U  T или dU  dT другими словами dU = CVdT где CV коэффициент пропорциональности CV теплоемкость газа при постоянном объеме Дж кг К Если Т =const то dT =0 и U = 0.7: pv = const следовательно pv=...
41154. Формирование уставного капитала и имущества организации, их состав и назначение. Определение потребности в основных и оборотных средствах, показатели использования 135.5 KB
  Определение потребности в основных и оборотных средствах показатели использования.Основные средства предприятия. Состав основных средств структура и воспроизводственная характеристика. Классификация основных средств основных фондов и ее экономическое значение.
41155. ТОВАР В СИСТЕМЕ МАРКЕТИНГА 1.06 MB
  Основные журналы по изучению товара в системе маркетинга Содержание товара как инструмента комплекса маркетинга. Услуги как особый вид товара в системе маркетинга. Концепция товарного ассортимента решения относительно товара продуктовой линии и упаковки.
41156. УЧЕТ ДЕНЕЖНЫХ СРЕДСТВ И ИХ ЭКВИВАЛЕНТОВ 138 KB
  Управление денежными средствами становится все более важным изза огромной сложности финансовых рынков. Правильное раскрытие и классификация денежных средств и их эквивалентов необходимы для точной оценки ликвидности компании. В МСБУ 7 Отчеты о движении денежных средств даны следующие определения денежным средствам их эквивалентам и потокам денежных средств: Денежные средства включают наличные деньги и вклады до востребования. Эквивалент денежных средств – краткосрочные высоколиквидные вложения...
41157. Пошук інформації в системі 121.5 KB
  Перегляд тексту документа.Друк тексту документа. Підведення підсумків уроку Яку роботу можна проводити з документами Що таке закладка Що таке інформаційна панель Що таке експорт документів Що таке структура документа Відповіді студентів 2 хв. Перегляд тексту документа.
41158. Влияние отдельных факторов на интенсивность теплоотдачи при пленочной конденсации пара 431.5 KB
  Влияние отдельных факторов на интенсивность теплоотдачи при пленочной конденсации пара. Влияние перегрева пара Конденсация перегретого пара будет иметь место если температура поверхности стенки меньше температуры насыщения. При этом в случае конденсации перегретого пара его температура у стенки постоянно снижается и конденсируется по существу насыщенный пар. В случае конденсации одного килограмма перегретого пара к стенке отводится теплота равная 1337...
41159. Логические функции и логические элементы 754.5 KB
  Физическими аналогами логических переменных 0 и 1 служат сигналы способные принимать два хорошо различимых состояния например потенциал низкого и высокого уровней разомкнутое и замкнутое состояние контакта реле и т. Триггеры Триггер – это устройство имеющее два устойчивых состояния способное под воздействием управляющего сигнала скачком переходить из одного состояния в другое и хранить это состояние сколь угодно долго. Способность хранить состояние сколь угодно долго и определяет память триггера. состояние триггера не меняется.
41160. Морфологические и синтаксические нормы русского литературного языка 79 KB
  Морфологические ошибки связаны с нарушением грамматических форм слов незнанием склонений с неправильным употреблением окончаний с неправильным ударением если это влияет на форму слова. Морфологостилистические ошибки связаны с использованием сложных конструкций характерных для официально делового и научного стиля в разговорном стиле.Синтаксические ошибки синтаксическим ошибкам относятся следующие: Нарушения в управлении.
41161. Методы преобразования комплексного чертежа (эпюра Монжа) 286 KB
  Сущность этого метода заключается в следующем: положение точек линий плоских фигур поверхностей в пространстве не изменяется а система П1 П2 заменяется дополняется плоскостями образующими с П1 или П2 или между собой системы двух взаимно перпендикулярных плоскостей принимаемых за плоскости проекций. Если введение одной плоскости П4 или П5 не позволяет решить задачу то прибегают к последовательному дополнению основной системы плоскостей проекций новыми П6 П7 и т. показано преобразование проекций точки А из системы П2 П1 в систему П4...