Далее следует заголовок главной функции программы main, операторы описания типов данных и исполняемые операторы.
Директивы #include должны всегда начинаться с новой строки, остальные же операторы программы могут иметь произвольное положение в файле вплоть до записи в одну строку. При записи не допускается разрывать слова, числа, двухсимвольные операции.
Пробелы используются для отделения слов друг от друга и для придания тексту большей выразительности и могут использоваться везде, за исключением случаев, описанных в предыдущем абзаце. Там, где допускается один пробел, можно поставить любое их количество.
В любом месте программы, там, где может стоять пробел, допускается записывать комментарии.
/*это комментарий */
// это тоже комментарии.
Комментарии должны помогать понять смысл выполняемых программой действий и являются обязательной ее частью. При написании комментариев следует придерживаться ряда простых истин:
· Программы читаются людьми, компьютеру комментарии не нужны;
· Всегда необходимы вводные комментарии, в которых указывается назначение программы, ее автор, дата написания и изменения, краткое описание алгоритма, входных и выходных данных, основных переменных и вызываемых функций;
· Комментарии должны содержать дополнительную информацию, а не перефразировать программу;
· Комментарии должны быть расположены так, чтобы программа не была менее наглядной;
· Неправильные комментарии хуже, чем их отсутствие.
Стиль программирования, расположение операторов
в строках, использование пробелов, выбор имен переменных и т.д. Должны быть
направлены на то, чтобы сделать программу более понятной людям, ее читающим.
1.3.3 Правила формального описания синтаксиса языка программирования
Под синтаксисом языка программирования понимают правила построения корректных конструкций данного языка. Синтаксис языка можно описать формально. Для этого удобно использовать расширенную форму бэкуса-наура (бнф), которая состоит из ряда следующих обозначений и правил:
символы в кавычках переносятся в конструкцию языка так, как они записаны. Кавычки при этом отбрасываются. Например, "while" означает, что в конструкции языка присутствует while;
имена, записанные слитно русскими и латинскими буквами, обозначают различные конструкции языка. Например, оператор_цикла;
квадратные скобки охватывают элементы языка, которые могут повторяться 0 или 1 раз. Например, "ab"["c"] означает, что в конструкции языка может присутствовать или ab или abc;
фигурные скобки охватывают элементы языка, которые могут повторяться 0 или много раз. Например, "ab" { "c" } означает, что в конструкции языка может присутствовать или ab, или abc, или abcc и т.д.;
символ | обозначает или, то есть используется для задания альтернативных значений, из списка элементов, разделенных знаком |. Например, "ab"|"c"|"ff" означает, что в конструкции языка может присутствовать или ab или c или ff;
круглые скобки используются для группировки. Например, "a"("b"|"c")"d" означает, что в конструкции языка может присутствовать или abd или acd;
многоточие используется для обозначения очевидных пропущенных значений в перечислении;
символ = обозначает - слово есть. Например, буква = "a"|"b"|"c".
В дальнейшем, синтаксис языка си будет
описываться либо с помощью примеров, либо с помощью расширенной формы
бэкуса-наура. В последнем случае это будет помечаться аббревиатурой бнф.
2. Практическая часть
.1 Решение систем линейных уравнений методом
Крамера
Пусть нам требуется решить систему линейных
уравнений вида:
Где x1, x2, …, xn - неизвестные переменные, ai j , i = 1, 2, …, n, j = 1, 2, …, n - числовые коэффициенты, b1, b2, …, bn - свободные члены. Решением слау называется такой набор значений x1, x2, …, xn при которых все уравнения системы обращаются в тождества. В матричном виде эта система может быть записана как a ⋅ x = b, где
основная матрица системы, ее
элементами являются коэффициенты при неизвестных
переменных,
- матрица - столбец свободных членов,
матрица - столбец неизвестных переменных. После нахождения неизвестных переменных x1, x2, …, xn, матрица
Становится решением системы уравнений и
равенство a ⋅ x = b обращается в тождество
.
Будем считать, что матрица а - невырожденная, то есть, ее определитель отличен от нуля. В этом случае система линейных алгебраических уравнений имеет единственное решение, которое может быть найдено методом Крамера.
Метод Крамера основывается на двух свойствах определителя матрицы:
1. Определитель квадратной матрицы
a
= ||aij||,
i
= 1,2, …,n,
j
= 1,2, …, n
равен сумме произведений элементов какой-либо
строки (столбца) на их алгебраические дополнения:
P = 1,2, …,n, q = 1,2, …, n
2. Сумма произведений элементов какой-либо
строки (столбца) квадратной матрицы на алгебраические дополнения
соответствующих элементов другой строки (столбца) равна нулю:
Итак, приступим к нахождению неизвестной
переменной x1. Для этого умножим обе части первого уравнения
системы на а1 1 , обе части второго уравнения - на а2
1 , и так далее, обе части n-ого уравнения - на аn 1
(то есть, уравнения системы умножаем на соответствующие алгебраические
дополнения первого столбца матрицы а):
Сложим все левые части уравнения системы,
сгруппировав слагаемые при неизвестных переменных x1, x2,
…, xn, и приравняем эту сумму к сумме всех правых частей уравнений:
Если обратиться к озвученным ранее свойствам
определителя, то имеем
И предыдущее равенство примет вид
Откуда
Аналогично находим x2. Для
этого умножаем обе части уравнений системы на алгебраические дополнения второго
столбца матрицы а:
Складываем все уравнения системы, группируем
слагаемые при неизвестных переменных x1, x2, …, xn
и применяем свойства определителя:
Откуда
Аналогично находятся оставшиеся неизвестные переменные.
Если обозначить
То получаем формулы для нахождения неизвестных
переменных по методу крамера
2.2 пример решения систем линейных уравнений
методом крамера
Составить программу для нахождения неизвестных
системы лу:
2.2.1 техническое задание на учебный программный продукт
Настоящее техническое задание распространяется на разработку программы решения систем линейных уравнений по методу Крамера, предназначенных для хранения данных указанных задач, их решения и хранения полученных результатов, и использования разработчиками программных и аппаратных средств вычислительной техники.
Основание для разработки
Программа разрабатывается на основании распоряжения зав. Кафедрой «эиатс» для ее использования в учебном процессе, а именно, для облегчения процесса расчета контурных токов в цепях с постоянным напряжением.
Назначение
Предназначена для решения систем линейных уравнений по методу крамера в различных технических дисциплинах, в частности, для преподаваемого курса «высшая математика» по теме «решение систем линейных уравнений».
Пользователями также могут являться и специалисты различных предметных областей, которым приходится решать подобные задачи.
Требование к программе или программному изделию
Требование к функциональным характеристикам
Программа должна представлять совокупность методических и программных средств решения следующей задачи:
· Расчет определителей матрицы;
· Нахождение неизвестных переменных в системах линейных уравнений по методу крамера.
Для этих задач должны быть реализованы:
алгоритмы, обеспечивающие получение точного решения;
программный продукт представлен на языке си++.
Требование к надежности
Предусмотреть контроль вводимой информации предусмотреть блокировку некорректных действий пользователя при работе с системой.
Обеспечить корректное завершение вычислений с соответствующей диагностикой при превышении имеющихся вычислительных ресурсов.
Обеспечить целостность информации, хранящейся в базе данных.
Требование к составу и параметрам технических средств.
Система должна работать на ibm совместимых персональных компьютерах.
Требование к информационной и программной совместимости
Система должна работать под управлением семейства windows xp и выше.
Требование к программной документации
Разрабатываемые система должна включать справочную информацию о работе системы и подсказки пользователю.
В состав сопровождающей документации должны входить:
Пояснительная записка.
Руководство пользователя.
.2.2 алгоритм решения задачи
) расчет главного определителя матрицы и 3 определителей матриц с замененными столбцами, расчет неизвестных коэффициентов x, y, z;
) вывод полученных данных;
) запрос на повтор операции;
) конец.
.2.3 список используемых идентификаторов
1. A1, a2, a3, b1, b2, b3, c1, c2, c3 - известные коэффициенты линейных уравнений;
. S1, s2, s3 - значения уравнений;
. Gopred, opred1, opred2, opred3 - определители искомых матриц;
. X,
y, z
- искомые величины, результат расчета.
.2.4 инструкция по использованию программы
1. Набор программы;
2. Компиляция программы;
4. Введем известные коэффициенты;
5. Печать
значений gopred, opred1,
opred2, opred3,
а также x, y,
z - результат
расчета.
2.2.5 минимальная конфигурация
1.тип процессора intel pentium i (либо аналогичный по производительности).
.объем оперативного запоминающего устройства не менее 128 кв.
Требование к информационной и программной
совместимости: система должна работать под управлением семейства windows 98 и
выше.
.2.6 назначение ПО
Разрабатываемое по предназначено для решения
задач по нахождению контурных токов в цепи, для нахождения определителей
матрицы 3х3, для нахождения значений неизвестных переменных в системе линейных
уравнений по методу крамера.
2.2.7 документация на учебный программный продукт
Архитектурная документация:
В данном случае программный продукт будет реализован в качестве консольного приложения (командный интерфейс), в таком случае созданный программный продукт сможет удовлетворять минимальным требованиям конфигурации, прописанным в теоретическом задании и работать на платформе ms dos и wndows, начиная с версии 3.11.
В тз была представлена рекомендация к языку программирования для написания кода - с++. Указаний по поводу выбора системы программирования в тз не представлено, поэтому средство для написания, трансляции и отладки программы также может быть выбрано программистом. В данном случае выбран программный продукт visualc++ производства фирмы microsoft.
Результат тестирования программы:
Тестирование программы осуществлялось на компьютере с установленной операционной системой microsoft 7 service pack 1.
Технические характеристики компьютера:
Процессор: pentium(r) dual-core cpu t4300 @ 2.10 ghz;
Объем оперативного запоминающего устройства: 3 gb;
Далее представлен пример решенного задания на
рис.2.2.1:
Рисунок 2.2.1 расчет контурных токов
Проверка ответа, вычисленного программой:
. Составим матрицу известных числовых коэффициентов, а также матрицу - столбец свободных членов:
????=(8, 3, −1; 3, 12, 5; −1, 5, 9), b=(23, 0, −25).
. Рассчитаем определитель заданной матрицы, используя формулу:
|a| = ( (8*12*9) + (3*5*(-1)) + (3*5*(-1)) ) - ( ((-1)*(-1)*12) + (5*5*8) + (3*3*9)) = = 541;
. Заменим коэффициенты первого столбца в матрице а на значения из матрицы b:
????1=(23, 3, −1; 0, 12, 5;−25, 5, 9).
. Вычислим определитель полученной матрицы: = ( (23*12*9) + (0*5*(-1)) + (3*5*(-25)) ) - ( ((-1)*(-25)*12) + (5*5*23) + +(0*3*9)) = 1234;
. Аналогично, заменяя 2 и 3 столбец в матрице а, вычислим определители a2=339 и a3=-1554.
. Используя рассчитанные определители, найдем значения неизвестных переменных x, y, z, используя конечные формулы для нахождения неизвестных по методу крамера: =????1/????=1234/541=2.28 =????2/????=339541=0.626=????3/????=−1554/541=−2.872
. Конец.
Заключение
В предоставленной курсовой работе было решено поставленное техническое задание: решение системы линейных уравнений методом Крамера.
Также, в процессе выполнения этих заданий были выполнены следующие задачи:
Первой из них являлось ознакомление с предметом «технология программирования», то есть изучение его во время лекционных, лабораторных и практических занятий. Из курса этих занятий мною были выведены следующие выводы: технология программирование является одним из основополагающих предметов, которые необходимо изучить во время получения степени бакалавра автоматизации и управления, так как во время дальнейшей рабочей деятельности, каждый бакалавр столкнется с автоматизированными системами производства, принцип работы которых подчиняется нормам и стандартам технологии программирования, кроме того большинство из них написаны на языке программирования с++, изучение которого являлось второй задачей, поставленной мной для выполнения данной курсовой работы.