Смекни!
smekni.com

Решение системы линейных уравнений методом Крамера и с помощью расширенной матрицы 2 (стр. 3 из 4)

Ключевые слова нельзя использовать в качестве идентификаторов и они не должны совпадать с именами функций из стандартных библиотек [2].

4.2.6 Операторы

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

4.2.7 Оператор присваивания

Оператор присваивания можно использовать в любом корректном выражении. Общий вид оператора присваивания выглядит следующим образом:

имя_переменной = выражение

Здесь выражение может состоять как из отдельной константы, так и комбинации сложных операторов [4].

4.2.8 Арифметические операторы

Операторы +, -, * и / выполняются точно так же, как и в большинстве других языков программирования. Их можно применять практически к любым встроенным типам данных. Если оператор / применяется к целому числу или символу дробная часть отбрасывается.

Оператор %, как и в других языках, возвращает остаток целочисленного деления. Однако он не применим к числам с плавающей точкой.

Унарный минус умножает число на -1.

Оператор ++ добавляет 1 к своему операнду, а оператор – – вычитает ее.

Операторы сравнения и логические операторы имеют более низкий приоритет, чем арифметические операции.

4.2.9 Условные операторы

Оператор условного перехода имеет следующий формат записи:

іf (А) оператор 1 ;

еlse оператор 2 ;

где А - выражение. Если значение этого выражения "истина" (не нуль), то выполняется оператор1, если же оно "ложь", то выполняется оператор2; в случае, когда выражение ошибочное и отсутствует область else - выполняется следующий оператор [4]. Например:

if (a=1) b=a*2;

elseb=0;

4.2.10 Операторы цикла

В языке С/С++ операторы цикла предназначены для выполнения повторяющихся инструкций, пока действует определенное правило. Это условие может быть как задано заранее(в цикле for), так и меняться во время выполнения цикла(в операторах while и_do-while)

В программе широко используется цикл for.

Оператор цикла for имеет следующую форму записи:

for ( [выражение1;] [выражение2;] [выражение3] ) оператор;

где выражение1 - выражение инициализации, которое обычно используется для установки начального значения; это выражение присваивания (необязательный параметр); выражение2 - выражение условия, которое определяет, при каком условии цикл будет повторяться (необязательный параметр); выражение3 - выражение итерации, которая определяет шаг изменения сменных, которые руководят циклом после каждого выполнения (необязательный параметр) [2].

Этот оператор реализуется таким образом:

- сначала выполняется выражение инициализации;

- вычисляется условное выражение;

- если результат условного выражения "истина" (не равняется нулю), то выполняется оператор цикла;

- вычисляется выражение итерации;

- снова проверяется условие;

- как только условное выражение становится равным нулю ("неправда"), управления передается оператору, который располагается за оператором цикла for.

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

Пример использования цикла for:

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

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

cin>>A[i][j];

4.2.11 Операторы ввода-вывода

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

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

#include <iostream.h>

Формат записи операторов ввода-вывода:

cin [ >> values ];

cout<< data[ << data<< "&bsol;n"] [5];

Например:

cin>>А[i][j];

cout<<"x1="<<x1<<endl;

4.2.12 Массивы и указатели

Массив – это последовательная группа ячеек памяти, которые имеют одинаковый тип и имеют общее имя. Доступ к отдельному элементу массива осуществляется с помощью индекса.

В языке С/С++ предусмотрены многомерные массивы. Простейшим из них является двумерный. Объявление двумерного массива А, состоящего из 3 строк и 3 столбцов выглядит следующим образом:

double А[3][3];

Обращение к элементу двумерного массива выглядит так:

А[0][0], А[0][1] и т.д.

В языке С/С++ указатели и массивы тесно связаны между собой. Как известно, имя массива без индекса – это указатель на его первый элемент [4]. Рассмотрим, например, следующий массив:

double А[3][3];

Следующие два выражения абсолютно идентичны:

А

&А[0][0]

Доступ к элементам массива может осуществляться следующим образом:

А[i][j];

*(*(А+i)+j);

Записи являются идентичными.

4.2.13 Функции

Функция – это процедура(подпрограмма), которая несёт законченную смысловую нагрузку.

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

Общий вид функции выглядит следующим образом:

тип_функции имя_функции(список_аргументов)

{ тело_функции };

Тип_функции – это тип значения, которое возвращает функция. Если функция не возвращает никакого значения, то ей тип всегда void. Возврат значения из функции происходит с использованием оператора return, который имеет следующий вид

return выражение

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

По умолчанию если тип функции не определён явно, то функция имеет тип int.

Список_аргументов может быть либо пустим, либо, например

floatfun(int, float);

Тело_функции – это всегда блок или составной оператор, т.е. последовательность описаний и операторов, заключённых в { } [6].

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

имя_функции(список_фактических_параметров);

Например:

Kramer(A,B);

4.3 Описание разработанных функций

Разработанная в ходе выполнения работы программа содержит функцию Kramer.

Функция Kramer решает систему уравнений, заданную матрицей коэффициентов при неизвестных и столбцом свободных членов по методу Крамера, и выводит полученные значения неизвестных на экран.

Блок-схема выполнения функции изображена на рисунке 4.3.1 [3].



Рисунок 4.3.1 – Алгоритм функции Kramer.

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


5 ИНСТРУКЦИЯ ПОЛЬЗОВАТЕЛЯ

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

Минимальные системные требования для работы программы:

- OSMS-DOSили Windows

- 5 МБ на жестком диске

- 8 МБ оперативной памяти

Прилагаемая к курсовой работе дискета содержит следующие файлы:

- Kramer.exe (разработанная программа)

- Kramer.cpp (текст программы)

- Курсовой.doc(пояснительная записка)

- Данные.txt (исходные данные)

- Результаты. txt (полученные результаты)

- Readme. txt (инструкция пользователя)

Для запуска программы Kramer необходимо запустить находящуюся на дискете программу Kramer.exe.

В ответ на запрос программы: «"Vveditekoefisientiprineizvestnihx1,x2,x3 v 1-om,2-om,3-emyravneniax"» необходимо ввести матрицу коэффициентов при неизвестных. Числа вводятся через пробел или Enter. Для ввода десятичных чисел целая часть отделяется от дробной точкой. После ввода всех девяти чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. В ответ на запрос программы: "Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax"» необходимо ввести матрицу-столбец свободных членов. После ввода всех 3 чисел (в случае ввода их через пробел) для дальнейшей работы программы необходимо нажать клавишу Enter. Полученное решение системы уравнений методом Крамера включает в себя систему линейных уравнений, расширенную матрицу, результаты нахождения определителя матриц и конечные решения.


ВЫВОДЫ

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

Ниже приведен результат работы программы

Vveditekoefisientiprineizvestnihx1,x2,x3 v 1-om,2-om,3-emyravneniax

3 6 1 2 1 0 1 5 -1

Vvedite cvobodnii chleni v 1-om,2-om,3-em yravneniax

20 0 9

Dannaya sistema vigladit tak

3x1+6x2+1x3=20

2x1+1x2+0x3=0

1x1+5x2-1x1=9

C pomochy rashirenoi matrici mi mogem predstaviy dannyy sistemy tak:

3 6 1 |20

2 1 0 |0

1 5 -1|9

Reshenie sistemi yravnenii metodom Kramera

Nahogdenie opredelitelei

opredelitel=18

opredelitel1=-29

opredelitel2=58

opredelitel3=99

x1=-1.61111

x2=3.22222

x3=5.5


СПИСОК ЛИТЕРАТУРЫ

1. Апатёнок Р.Ф. Элементы линейной алгебры и аналитической геометрии. – Минск: Вышэйшая школа, 1977 г. – 257 с.

2. Глушаков С.В. и др. Язык программирования С++. —Харьков: Фолио, 2002. — 500 с.

3. ГОСТ 19.701—90. ЕСПД. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.— М.: 1991.

4. Дейтел Х.М. Дейтел П.Дж. Как программировать на С++: Пер. с англ. – М.: ЗАО “Издательство БИНОМ”, 2000 г. – 1024 с.: ил.

5. Страуструп Б. Язык программирования С++. Часть 1. — Киев: "ДиаСофт", 1993. — 264 с.

6. Страуструп Б. Язык программирования С++. Часть 2. — Киев: "ДиаСофт", 1993. — 296 с.

7. Холзнер С. VISUAL C++6: учебный курс — СПб: Издательство “ Питер”, 2000. —576 с.


Приложение А