Программная реализация матричных операций

Общая характеристика матрицы как математического объекта, примеры ее использования в программировании. Основные арифметические операции, выполняемые над матрицами. Разработка программы для вычислений над матрицами с применением языка программирования C++.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.03.2016
Размер файла 485,4 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru

ВВЕДЕНИЕ

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

Я не первая, да и далеко не последняя, кто пытался реализовать данные операции на каком-либо языке программирования. Может быть кто-то добился больших успехов в написании данных программ, но у меня получилась приличная реализация каждого метода.

Мне показалась интересной данная тема. Ведь, изучая курс программирования на С++, мы использовали только простейшие задачи, по нахождению суммы и разности, а так же различными видами сортировки по строкам/столбцам. матрица программирование арифметический операция

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

Впервые в математике такое понятие как матрица появилось в середине 19 века в работах Гамильтона, Сильвестра. Современное обозначение - две вертикальные черточки - ввел А. Кэли (1841).

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

Матрица -- математический объект, записываемый в виде прямоугольной таблицы чисел (или элементов кольца) содержащая некоторое количество m строк и некоторое количество n столбцов, и допускающий алгебраические операции (сложение, вычитание, умножение) между ним и другими подобными объектами. Числа m и n называются порядками матрицы. В случае, если m = n , матрица называется квадратной, а число m = n - ее порядком.

Обычно матрицы представляются двумерными (прямоугольными) таблицами. Иногда рассматривают многомерные матрицы или матрицы непрямоугольной формы.

Матрицы также нашли своё применение в программировании. Они широко используются старшеклассниками с углубленным изучением математики на практических занятиях, студентами для закрепления темы “Двумерные массивы” и т.д. Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ.

Основными арифметическими операциями над матрицами являются умножение матрицы на число, сложение и умножение матриц, вычисление определителя, транспонирование матрицы.

Прежде всего, договоримся считать матрицы равными, если эти матрицы имеют одинаковые порядки и все их соответствующие элементы совпадают.

Перейдем к определению основных операций над матрицами.

1.1 Сложение матриц

Суммой двух матриц, например: A и B, имеющих одинаковое количество строк и столбцов, иными словами, одних и тех же порядков m и n называется матрица С=( Сij ) ( i = 1, 2, …m; j = 1, 2, …n ) тех же порядков m и n, элементы Cij которой равны.

Cij = Aij + Bij ( i = 1, 2, …, m; j = 1, 2, …, n )

Для обозначения суммы двух матриц используется запись C = A + B. Операция составления суммы матриц называется их сложением

Итак по определению имеем :

=

=

Пример:

Из определения суммы матриц, а точнее из формулы непосредственно вытекает, что операция сложения матриц обладает теми же свойствами, что и операция сложения вещественных чисел, а именно :

переместительным свойством : A + B = B + A

сочетательным свойством : (A + B) + C = A + (B + C)

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

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

cij = aij - bij

1.2 Умножение матриц

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

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

1.3 Умножение матрицы на число

Произведением матрицы A = (Aij) ( i = 1, 2, …, m; j = 1, 2, …, n ) на вещественное число называется матрица C = (Cij) ( i = 1, 2, … , m; j = 1, 2, …, n ), элементы которой равны

Cij =Aij ( i = 1, 2, …, m; j = 1, 2, …, n ). (2)

Для обозначения произведения матрицы на число используется запись C = A или C = A. Операция составления произведения матрицы на число называется умножением матрицы на это число.

Непосредственно из формулы (2) ясно, что умножение матрицы на число обладает следующими свойствами :

распределительным свойством относительно суммы матриц:

(A + B) =A +B

сочетательным свойством относительно числового множителя:

() A =( A)

распределительным свойством относительно суммы чисел :

( +) A = A + A.

*k =

Пример: * 6 =

1.4 Транспонирование матриц

Если в матрице А поменять местами столбцы со строками, то получим транспонированную матрицу АТ. Каждый элемент транспонированной матрицы определяется по формуле:

aijT = aji, i=1,2,...,n; j=1,2,...,m.

Пример транспонирования: =

1.5 Вычисление определителя

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

Определителем квадратной матрицы порядка

, называется число

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

Для наглядности запишем, как можно вычислить определитель матрицы четвертого порядка

2. ИССЛЕДОВАТЕЛЬСКАЯ ЧАСТЬ

Как и во всех программах на языке программирования С++, в самом начале программы подключаются директивы препроцессора. В моей программе, помимо основных директив, я подключала специальные, например, #include <math.h> и другие. Затем я описала несколько глобальных переменных:

int n,m; //размер матрицы

int c[10][10];//результативная матрица

int i,j,f;

int a[10][10];//принимают передаваемые значение

int b[10][10];//принимают передаваемые значения

int x[10][10];//исходная матрица

int y[10][10];//исходная матрица

int DET;//определитель

FILE *f1, *f2;//описание файлов

После директив, я описала ещё семь функций, для каждого пункта меню, к которому я ещё вернусь. А именно функции: void print (), для вывода на экран исходных матриц, void summa (), для сложения исходных матриц, void razn (), для нахождения разности двух матриц, void mult (), для перемножения этих матриц, float Det(),для нахождения определителя матрицы, void trans(),транспонирование матрицы, void Umn (),умножение матрицы на число

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

Do {

printf("\n 1 - Просмотр матриц А и В.");

printf("\n 2 - Сумма матриц А и В.");

printf("\n 3 - Разность матриц А и В.");

printf("\n 4 - Умножение матриц А и В.");

printf("\n 5 - Нахождение определителя матрицы.");

printf("\n 6 - Транспонирование матрицы.");

printf("\n 7 - Умножение матрицы на число. ");

printf("\n 8 - Матрица в квадрате. ");

printf("\n 9 - Выход!");

printf("\n ");

switch(c=getch())

{case '1': {system("cls");print(); break;}

case '2': {system("cls");summa(); break; }

case '3': {system("cls");razn(); break;}

case '4': {system("cls");mult(a,b); break;}

case '5': {system("cls");print1(); break;}

case '6': { printf("\n 1 - Транспонирование матрицы А.");

printf("\n 2 - Транспонирование матрицы В.");

printf("\n ");

switch(C=getch())

{case '1':system("cls");trans(a); break;

case '2':system("cls");trans2(b); break;

} break;

}

case '7': {system("cls");Umn(); break;}

}

case '8':{ printf("\n 1 - Матрица в квадрате А.");

printf("\n 2 - Матрица в квадрате В.");

printf("\n ");

switch(C = getch())

{ case '1': system("cls"); square(a); break;

case '2': system("cls"); square(b); break; }

while (c!='9')

Собственно, так и будет выглядеть меню в редакторе. Переменная c типа char. Каждый пункт соответсвтует определённой функции. Вывод меню на экран будет повторяться до тех пор, пока пользователем не будет введено число 9, чтобы выйти из программы.

Начнём описание самих функций. Но для начала определимся, что размер матрицы задается в глобальных переменных const int n=10; Первая из функций - это функция заполнения матриц,вывод их на экран. Так как я использовала чтение матриц из файла, то я использовала проверку на наличие ошибки при открытии файла.

void openf(int A[10][10],int B[10][10])//функция заполнения матриц

{ if(f == 1)//считывание из файла

{ if((f1 = fopen("C:\\input1.txt","r")) == NULL)

{ printf ("ОШИБКА ОТКРЫТИЯ ФАЙЛА!!");

exit (1);

} else

printf ("ФАЙЛ input1 ОТКРЫТ!!");

printf ("\n");

if((f2=fopen("C:\\input2.txt","r"))==NULL)

{ printf ("ОШИБКА ОТКРЫТИЯ ФАЙЛА!!");

exit (1);

} else

printf ("ФАЙЛ input2 ОТКРЫТ!!");

printf ("\n МАТРИЦА А!!\n");

fscanf (f1,"%d",&n);// считывание из файла размер матрицы

fscanf (f1,"%d",&m);

for(i = 0; i < n; i++)// счит эл из файла

for(j = 0; j < m; j++)

fscanf (f1,"%d",&A[i][j]);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

x[i][j] = A[i][j];

printf ("\n");

fscanf (f2,"%d",&n);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

fscanf (f2,"%d",&B[i][j]);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

y[i][j]=B[i][j];

} else//заполнение случайным образом

{ printf("\n");

printf("введите количество строк матрицы\n");

scanf("%d",&n);

printf("введите количество столбцов матрицы\n");

scanf("%d",&m);

for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{ A[i][j] = rand()%10;

x[i][j] = A[i][j]; }

} for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{B[i][j] = rand()%10;

y[i][j] = B[i][j];

}}}}

void print()//вывод матрицы на экран {

printf ("\n");

printf ("\n МАТРИЦА A!!");

printf ("\n");

for(i = 0; i < n; i++) {

for(j = 0; j < m; j++) {

printf("%4d ", x[i][j]);//матрица A }

printf("\n");

}printf ("\n");

printf ("\n МАТРИЦА В!!");

printf ("\n");

for(i = 0; i < n; i++) {

for(j = 0; j < m; j++) {

printf("%4d ", y[i][j]);//матрица B }

printf ("\n");

}}

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

void summa ()//функция сложения

{ int C[10][10];

for(i=0;i<n;i++)

for(j=0;j<m;j++)

C[i][j] = x[i][j] + y[i][j];//A+B

printf ("\n МАТРИЦА C!! (сумма)\n");

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

{ for(int j=0;j<m;j++)

{ printf ("%4d ",C[i][j]);//результат

Аналогично функции summa вводятся функции для разности

void razn()//функция разности

{ int Z[10][10];

for(i=0;i<n;i++){

for(j=0;j<m;j++){

Z[i][j] = x[i][j] - y[i][j];//A-B }}

printf ("\n МАТРИЦА C!!(разность)\n");

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

{for(int j=0;j<m;j++) {

printf ("%4d ",Z[i][j]);//результат

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

void mult (int A[10][10],int B[10][10])//умножение матриц

{int k,sum;//переменные

int C[10][10];//результат

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

{ sum = 0;// временная переменная

for (k = 0; k < n; k++)

sum += A[i][k] * B[k][j];//умножение строчки на столбец и сложение элементов

C[i][j]=sum;

printf ("МАТРИЦЫ C!!\n");

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

{for(int j=0;j<m;j++)

После выбора в меню данных пунктов, на экране появляется матрица С, которая является результатом вычисления суммы, разности или умножения двух исходных матриц.

Функция умножения матрицы на число:

Первое,что нужно сделать это ввести умножаемое число,затем произведем выбор матрицы:

void Umn ()//умножение матрицы на число

{ int w=0,q=0;

printf("\nВведите умножаемое число\n");

scanf("%d",&w);

printf("\nКакую матрицу следует умножить\n");

printf("\n 1. Матрица А. \n");

printf("\n 2. Матрица В. \n");

printf("\n Результат \n");

switch(q=getch())

{//выбор матрицы

case '1':

{ for(i=0;i<n;i++)

{ for(j=0;j<m;j++)

printf("%4d ",x[i][j]*w);//умножение матрицы A на число w

printf("\n");

}break; }

case '2': {

for(i=0;i<n;i++)

{for(j=0;j<m;j++)

printf("%4d ",y[i][j]*w);//умножение матрицы B на число w

printf("\n"); }

break; }}}

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

//вычисление определителя

int Det(int G, int M[10][10])// G размер матрицы

{ if (G == 1) //проверка единичной матрицы

return M[0][0];

else {

int M1[10][10];// массив для записи значений

int x, X, Y, n;

int Res = 0;

n = 1;// знакопеременная

for (i = 0; i < G; i++)// по строке

{ for (Y = 1; Y < G; Y++)

{ x = 0;

for (X = 0; X < G; X++)// копирование массива из одного в другой

if (X != i)

M1[Y-1][x++] = M[Y][X]; }

Res += n * M[0][i] * Det(G - 1, M1);// запись результата рекурсивно

n *= -1;// меняем знак переменной }

return Res; }

_getch(); }

где Y и X это счетчики. Тип функции я описала float, поэтому для вывода на экран мне понадобилась дополнительная функция

void print1 ()//вывод результата

{int det=Det(n, a);

int det1=Det(m, b);

printf ("\nОПРЕДЕЛИТЕЛЬ МАТРИЦЫ А det=%d\n",det);

printf ("\nОПРЕДЕЛИТЕЛЬ МАТРИЦЫ B det=%d\n",det1);

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

void trans (int A[10][10])//транспонирование матрицы А

{ printf ("\n");

printf ("\n МАТРИЦА A!!\n");

for(i = 0; i < n; i++)

{for(j = 0; j < m; j++)

{ printf("%4d ", A[i][j]);//матрица A

} printf("\n"); }

printf("\nТРАНСПОНИРОВАННАЯ МАТРИЦА!! \n");

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{ x[j][i]=A[i][j]; }

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

printf("%4d ",x[i][j]);

printf("\n"); } }

void trans2 (int A[10][10])//транспонирование матрицы В

{ printf ("\n МАТРИЦА B!!\n");

printf ("\n");

for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{ printf("%4d ", A[i][j]);//матрица B

} printf("\n");}

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

При возведении матрицы в квадрат нам нужно просто одну и туже перемножить на себя.

void square(int A[10][10])

{printf("КВАДРАТ ");

mult(A, A); }

Код программы:

#include "stdafx.h"

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <math.h>

#include <time.h>

#include <ctype.h>

#include <conio.h>

#include <iostream>

using namespace std;

int n,m; //размер матрицы

int c[10][10];//результативная матрица

int i, j, f;

int a[10][10];//принимают передаваемые значение

int b[10][10];//принимают передаваемые значения

int x[10][10];//исходная матрица

int y[10][10];//исходная матрица

int DET;//определитель

FILE *f1, *f2;//описание файлов

void openf(int A[10][10],int B[10][10])//функция заполнения матриц

{ if(f == 1)//считывание из файла

{ if((f1 = fopen("C:\\input1.txt","r")) == NULL)

{ printf ("ОШИБКА ОТКРЫТИЯ ФАЙЛА!!");

exit (1);

} else

printf ("ФАЙЛ input1 ОТКРЫТ!!");

printf ("\n");

if((f2=fopen("C:\\input2.txt","r"))==NULL)

{ printf ("ОШИБКА ОТКРЫТИЯ ФАЙЛА!!");

exit (1);

} else

printf ("ФАЙЛ input2 ОТКРЫТ!!");

printf ("\n МАТРИЦА А!!\n");

fscanf (f1,"%d",&n);// считывание из файла размер матрицы

fscanf (f1,"%d",&m);

for(i = 0; i < n; i++)// счит эл из файла

for(j = 0; j < m; j++)

fscanf (f1,"%d",&A[i][j]);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

x[i][j] = A[i][j];

printf ("\n");

fscanf (f2,"%d",&n);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

fscanf (f2,"%d",&B[i][j]);

for(i = 0; i < n; i++)

for(j = 0; j < m; j++)

y[i][j]=B[i][j]; }

else//заполнение случайным образом

{ printf("\n");

printf("введите количество строк матрицы\n");

scanf("%d",&n);

printf("введите количество столбцов матрицы\n");

scanf("%d",&m);

for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{ A[i][j] = rand()%10;

x[i][j] = A[i][j]; }

} for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{ B[i][j] = rand()%10;

y[i][j] = B[i][j];

}}}} void print()//вывод матрицы на экран

{ printf ("\n");

printf ("\n МАТРИЦА A!!");

printf ("\n");

for(i = 0; i < n; i++)

{ for(j = 0; j < m; j++)

{ printf("%4d ", x[i][j]);//матрица A

} printf("\n");

} printf ("\n");

printf ("\n МАТРИЦА В!!");

printf ("\n");

for(i = 0; i < n; i++) {

for(j = 0; j < m; j++) {

printf("%4d ", y[i][j]);//матрица B }

printf ("\n"); }}

void summa ()//функция сложения

{ int C[10][10];

for(i=0;i<n;i++)

for(j=0;j<m;j++)

C[i][j] = x[i][j] + y[i][j];//A+B

printf ("\n МАТРИЦА C!! (сумма)\n");

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

{ for(int j=0;j<m;j++) {

printf ("%4d ",C[i][j]);//результат }

printf ("\n"); }}

void razn()//функция разности

{ int Z[10][10];

for(i=0;i<n;i++) {

for(j=0;j<m;j++){

Z[i][j] = x[i][j] - y[i][j];//A-B

}} printf ("\n МАТРИЦА C!!(разность)\n");

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

{for(int j=0;j<m;j++) {

printf ("%4d ",Z[i][j]);//результат }

printf ("\n");}}

void mult (int A[10][10],int B[10][10])//умножение матриц

{int k,sum;//переменные

int C[10][10];//результат

for(i = 0; i < n; i++)

for(j = 0; j < m; j++){

sum = 0;// временная переменная

for (k = 0; k < n; k++)

sum += A[i][k] * B[k][j];//умножение строчки на столбец и сложение элементов

C[i][j]=sum;

} printf ("МАТРИЦЫ C!!\n");

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

{for(int j=0;j<m;j++)

printf ("%4d ",C[i][j]);

printf ("\n"); }}

//вычисление определителя

int Det(int G, int M[10][10])// G размер матрицы

{ if (G == 1) //проверка единичной матрицы

return M[0][0];

else

{ int M1[10][10];// массив для записи значений

int x, X, Y, n;

int Res = 0;

n = 1;// знакопеременная

for (i = 0; i < G; i++)// по строке

{ for (Y = 1; Y < G; Y++)

{ x = 0;

for (X = 0; X < G; X++)// копирование массива из одного в другой

if (X != i)

M1[Y-1][x++] = M[Y][X];

} Res += n * M[0][i] * Det(G - 1, M1);// запись результата рекурсивно

n *= -1;// меняем знак переменной }

return Res; }

_getch();

}

//так как использовали тип функции float,используем дополнительную функцию

void print1 ()//вывод результата

{int det=Det(n, a);

int det1=Det(m, b);

printf ("\nОПРЕДЕЛИТЕЛЬ МАТРИЦЫ А det=%d\n",det);

printf ("\nОПРЕДЕЛИТЕЛЬ МАТРИЦЫ B det=%d\n",det1); }

void trans (int A[10][10])//транспонирование матрицы А

{ printf ("\n");

printf ("\n МАТРИЦА A!!\n");

for(i = 0; i < n; i++)

{for(j = 0; j < m; j++)

{ printf("%4d ", A[i][j]);//матрица A }

printf("\n"); }

printf("\nТРАНСПОНИРОВАННАЯ МАТРИЦА!! \n");

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{ x[j][i]=A[i][j]; }

for(i=0;i<m;i++)

{for(j=0;j<n;j++)

printf("%4d ",x[i][j]);

printf("\n"); } }

void trans2 (int A[10][10])//транспонирование матрицы В

{ printf ("\n МАТРИЦА B!!\n");

printf ("\n");

for(i = 0; i < n; i++) {

for(j = 0; j < m; j++) {

printf("%4d ", A[i][j]);//матрица B }

printf("\n");

}printf("\nТРАНСПОНИРОВАННАЯ МАТРИЦА!! \n");

for (i=0; i<n; i++)

for (j=0; j<m; j++)

{ y[j][i]=A[i][j];

}for(i=0;i<m;i++)

{for(j=0;j<n;j++)

printf("%4d ",y[i][j]);

printf("\n");

} }void Umn ()//умножение матрицы на число

{ int w=0,q=0;

printf("\nВведите умножаемое число\n");

scanf("%d",&w);

printf("\nКакую матрицу следует умножить\n");

printf("\n 1. Матрица А. \n");

printf("\n 2. Матрица В. \n");

printf("\n Результат \n");

switch(q=getch())

{//выбор матрицы

case '1':

{ for(i=0;i<n;i++)

{for(j=0;j<m;j++)

printf("%4d ",x[i][j]*w);//умножение матрицы A на число w

printf("\n");

}break;

} case '2':

{ for(i=0;i<n;i++)

{for(j=0;j<m;j++)

printf("%4d ",y[i][j]*w);//умножение матрицы B на число w

printf("\n");

} break; }}}void square(int A[10][10])

{ printf("КВАДРАТ ");

mult(A, A);

} int _tmain(int argc, _TCHAR* argv[])

{ setlocale (LC_ALL,"Russian");

char c, C, d;

printf (" КУРСОВАЯ РАБОТА\n");

printf

("_______________________________________________________________________________\n");

printf (" студента группы ПМбд-21\n");

printf (" Сазонова Дениса \n\n\n\n\n");

printf (" «Программная реализация матричных операций»\n\n");

printf (" (для продолжения нажмите Enter..)");

_getch();

system("cls");//пробел между названием и вводом

printf("Введите способ заполнения матрицы\n");

printf("1. Загрузка из файла\n");

printf("2. Заполнение случайными числами\n");

switch (d = getch())

{case'1':

{f = 1;

openf(a, b);

break; }

case'2':

{ f = 2;

openf(a, b);

break;

}} print();

do

{ printf("\n 1 - Просмотр матриц А и В.");

printf("\n 2 - Сумма матриц А и В.");

printf("\n 3 - Разность матриц А и В.");

printf("\n 4 - Умножение матриц А и В.");

printf("\n 5 - Нахождение определителя матрицы.");

printf("\n 6 - Транспонирование матрицы.");

printf("\n 7 - Умножение матрицы на число. ");

printf("\n 8 - Матрица в квадрате. ");

printf("\n 9 - Выход!");

printf("\n ");

switch(c=getch())

{ case '1':

{ system("cls");

print();

break;

} case '2':

{ system("cls");

summa();

break;

}case '3':

{ system("cls");

razn();

break;

} case '4':

{ system("cls");

printf("УМНОЖЕНИЕ ");

mult(a,b);

break; }

case '5':

{ printf("\n 1 - Определитель матрицы А.");

printf("\n 2 - Определитель матрицы В.");

printf("\n ");

switch(C = getch())

{ case '1':

system("cls");

printf("\n 1 - Определитель матрицы А = %d", Det(n, a));

break;

case '2':

system("cls");

printf("\n 1 - Определитель матрицы B = %d", Det(m, b));

break; }

break; }

case '6':

{ printf("\n 1 - Транспонирование матрицы А.");

printf("\n 2 - Транспонирование матрицы В.");

printf("\n ");

switch(C = getch())

{ case '1':

system("cls");

trans(a);

break;

case '2':

system("cls");

trans2(b);

break;

} break;

} case '7':

{ system("cls");

Umn();

break; }

case '8': {

printf("\n 1 - Матрица в квадрате А.");

printf("\n 2 - Матрица в квадрате В.");

printf("\n ");

switch(C = getch()) {

case '1':

system("cls");

square(a);

break;

case '2':

system("cls");

square(b);

break;}

break;

}}} while (c != '9');

_getch();

return 0;}

ЗАКЛЮЧЕНИЕ

В данной курсовой работе я создала набор простейших операций над матрицами, используя свой собственный алгоритм. Возможно, я не реализовала некоторые другие операции над матрицами, но при запуске существующих, я не обнаружила каких-либо грубых ошибок. У моей программы удобный интерфейс, который представлен в виде меню. После каждого действия экран автоматически очищается.

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1) Родионова, Т.Е. Курс программирования на языке Си: учебное пособие для студентов / Т. Е. Родионова. - Ульяновск: УлГТУ, 2006. - 118 с.

2) Лаптев В. В., Морозов А. В. С++. Объектно-ориентированное программирование. Задачи и упражнения. / Лаптев В. В., Морозов А. В., Бокова А. В. - СПб.: Питер, 2007. - 288 с.

3) [http://eknigi.org/programmirovanie/49264-yazyk-siuchebnoe-posobie.html]

4) [http://mirknig.com/2008/08/27/jazyk-si.uchebnoe-posobie.html]

ПРИЛОЖЕНИЕ

Начальное окно

Загрузка из файла

Заполнение случайными числами

Операция сложения матриц

Умножение матриц

Транспонирование матрицы А

Размещено на Allbest.ru

...

Подобные документы

  • Понятие матриц и операции, выполняемые с ними. Разработка программы для вычислений над матрицами в среде MS Visual Studio Express с применением языка программирования C++. Работа с библиотекой математического типа vector. Реализация перегрузки операций.

    курсовая работа [107,3 K], добавлен 22.12.2010

  • Обзор некоторых сведений о матрицах. Описание этапов работы с функциями. Проектирование программы для выполнения вычислений над матрицами в среде программирования MSVisualStudio 2008, при помощи языка программирования C++. Проверка результатов в Mathcad.

    курсовая работа [182,0 K], добавлен 06.04.2013

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

    курсовая работа [956,7 K], добавлен 25.01.2010

  • Основные операции с матрицами. Проектирование объектно-ориентированного модуля для работы с матрицами в среде Delphi 7. Разработка программы, которая позволяет выполнять различные действия над матрицами. Описание интерфейса программы, исходный код модуля.

    курсовая работа [1014,2 K], добавлен 15.01.2013

  • Процедура сложения и вычитания матриц (с учетом коэффициента перед матрицами). Основные концепции языка Turbo Pascal. Фортран как один из пионеров программирования Дейкстрой. Первый компилятор Паскаля на платформах DEC. Основные стандарты языка.

    контрольная работа [21,6 K], добавлен 08.03.2011

  • Основные действия над матрицами. Последовательность умножения вектора на матрицу. Спецификаторы доступа, которые используют для ограничения доступа к элементам класса. Перегрузка операций. Создание программы, реализующей работу с классом Matrix.

    курсовая работа [321,7 K], добавлен 26.01.2013

  • Основные операции над матрицами. Формирование матрицы из файла. Ввод матрицы с клавиатуры. Заполнение матрицы случайными числами. Способы формирования двухмерных массивов в среде программирования С++. Произведение определенных элементов матрицы.

    курсовая работа [537,0 K], добавлен 02.06.2015

  • Использование программной системы Mathcad для выполнения, документирования и использования вычислений и инженерных расчетов. Вычисление пределов, суммы ряда. Работа с матрицами, построение трехмерного графика. Решение систем нелинейных уравнений.

    отчет по практике [1,5 M], добавлен 11.09.2014

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

    курсовая работа [2,0 M], добавлен 22.03.2015

  • Основные типы модулей, использующиеся в среде программирования Delphi 6. Концепция объектно-ориентированного программирования. Разработка эскизного и технического проектов программы. Алгоритм выполнения операций сложения, вычитания и умножения матриц.

    курсовая работа [559,1 K], добавлен 03.01.2011

  • Понятие матрицы, определение ее составных частей и границ, обосновывающие теории. Арифметические операции над матрицами, способы их представления в Mathcad. Формирование уравнений цепи на основе теории графов. Характеристика топологических матриц графа.

    учебное пособие [982,4 K], добавлен 03.05.2010

  • Основные понятия и назначение языка программирования СИ. Скалярные типы данных. Арифметические, логические и битовые операции над переменными целочисленного, вещественного, символьного, перечислимого типов. Примеры программ, выполняющие операции над ними.

    презентация [269,9 K], добавлен 26.07.2013

  • Программирование нестандартных функций, задач оптимизации, дифференциального уравнения и аппроксимации с помощью языка Паскаль. Алгоритм и программа операций над матрицами. Нахождение значения корней нелинейного уравнения по методу половинного деления.

    курсовая работа [1,1 M], добавлен 12.08.2011

  • Автоматизация процесса операций над матрицами. Конфигурация компьютера, на котором будет разрабатываться программное приложение в системе Windows XP Professional. Построение концептуального прототипа системы меню, диалоговых окон и элементов управления.

    курсовая работа [1,2 M], добавлен 17.03.2013

  • Mathcad и его основные понятия. Возможности и функции системы в матричных исчислениях. Простейшие операции с матрицами. Решение систем линейных алгебраических уравнений. Собственные векторы. Разложение Холецкого. Элементарная теория линейных операторов.

    курсовая работа [2,2 M], добавлен 25.11.2014

  • Разработка компоненты для математических вычислений (операций над матрицами) с использованием технологии OpenGL (сложение, вычитание, умножение, транспонирование, определитель, обратная матрица). Базовые навыки по работе с технологией в среде .Net.

    курсовая работа [365,6 K], добавлен 17.02.2015

  • Алгебра матриц: задание численных и символьных элементов вектора и матрицы с и без применения шаблонов, использование векторных и матричных операторов и функций. Операции умножения и деления вектора и матрицы друг на друга и на скалярные числа.

    практическая работа [107,0 K], добавлен 05.12.2009

  • Использование нестандартных функций и подпрограмм (процедур) для составления алгоритмов вычислений. Программы для вычисления значение корней нелинейного уравнения по методу половинного деления. Составление алгоритма операций над матрицами и интегралами.

    курсовая работа [580,0 K], добавлен 23.08.2015

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

    контрольная работа [716,7 K], добавлен 11.06.2011

  • Создание программы, автоматизирующей расчет коэффициента ритмичности продукции с использованием электронных таблиц средствами языка программирования Си. Консолидация данных в MSExcel. Программная реализация алгоритма. Тестирование разработанного ПО.

    курсовая работа [3,0 M], добавлен 07.06.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.