Курсовая работа (т): Решение систем линейных уравнений методом Крамера

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Решение систем линейных уравнений методом Крамера














Решение систем линейных уравнений методом Крамера

Введение

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

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

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

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

§  Процедурно-ориентированное;

§  Объектно-ориентированное;

§  Логическое;

§  Функциональное;

§  Машинно-ориентированное программирование.

Процедурно-ориентированная парадигма предполагает, что программа строится из отдельных выполняемых и описательных операторов, некоторых алгоритм. Существуют следующие языки: алгол, фортран, кобол, пл/1, паскаль, си.

К объектно-ориентированным относят smalltalk, с++, object-pascal и java. В основе этих языков лежит понятие объектового типа, позволяющее описывать пользовательские типы и операции над ними.

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

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

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

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

Второй задачей являлось изучение объектно-ориентировочного языка программирования с++, а также работы со средой разработки программного обеспечения visual studio, в частности visual c++, ввиду того, что в описании задания к курсовой работе четко указана необходимость использования языка программирования с++ при разработке алгоритма программы для решения поставленного задания.

Далее, после изучения среды разработки, в которой будет написано программное обеспечение, а также, собственно, самого языка программирования, следовала, соответственно, разработка алгоритма для решения задачи, определенной в техническом задании курсовой работы. В данной курсовой работе описывается класс решаемых задач систем линейных уравнений методом Крамера, назначение, условия применения и характеристики программного обеспечения, объясняется структура входных и выходных данных и алгоритмы работы программы. Затем следовало написание самой программы в visual c++ производства фирмы microsoft. Завершающим шагом являлось тестирование программы на работоспособность и на корректность расчетов.

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

программа уравнение крамер

1.1 Технология разработки программных средств

Основные этапы технологического процесса разработки программ:

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

·        Построение математической модели;

·        Разработка (выбор и адаптация) алгоритма;

·        Составление программы;

·        Тестирование и отладка;

·        Сдача в эксплуатацию.

          Постановка задачи. На этом этапе раскрывается организационно-экономическая сущность задачи:

·        Формулируется цель ее решения;

·        Определяется взаимосвязь с другими задачами;

·        Указывается периодичность ее решения;

·        Раскрывается состав и форма представления входной, промежуточной и выходной информации;

·        Характеризуются формы и методы контроля достоверности информации;

·        Описываются формы взаимодействия пользователя с эвм.

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

·        Форма представления отдельных данных;

·        Количество знаков, выделяемых для записи данных, исходя из их максимальной значимости;

·        Источник возникновения данных;

Кроме того, для цифровой информации указывается - целочисленный или дробный характер данных (для дробных указывается количество 10-х знаков) и допустимый диапазон изменения величин.

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

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

Построение математической модели объекта. На этом этапе производится анализ и исследование задачи. Структура этапа:

1.      Анализ существующих аналогов задачи;

2.      Анализ технических и программных средств;

.        Разработка математической модели;

.        Разработка структур данных;

Естественный язык, на котором осуществляется постановка задачи, имеет свойство неоднозначности. Создание математической модели позволяет формализовать описание задачи. При этом устанавливается и формируется средствами языка математики логико-математической зависимости между исходными и результатными данными. Математическая модель - это система математических соотношений (формул, уравнений, неравенств и т.д.), отражающих существенные свойства объекта или явления. Математическая запись постановки задачи отличается высокой точностью отображения ее сущности, лаконичностью записи, однозначностью понимания, но она может быть выполнена не для всех задач.

При выборе метода решения предпочтение отдается методу, который:

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

2.      Позволяет использовать уже готовые стандартные программы.

.        Ориентирован на минимальный объем информации.

.        Наиболее быстрое получение результатов.

План написания постановки задачи (пз):

·        Наименование задачи;

·        Назначение;

·        Достигаемая цель;

·        Для кого предназначена;

·        Технические средства;

·        Периодичность использования;

·        Входная информация;

·        Выходная информация (формируется по запросам);

·        Метод проверки правильности (сравнивается с контрольным примером);

·        Организация внедрения задачи;

·        Разработка контрольного примера (входная информация с конкретными данными, выходная информация);

·        Методы защиты.

Критерии качества программного изделия. Программа является правильной, если она работает в соответствии с техническим заданием.

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

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


.2.1 История развития алгоритмических языков

Первые вычислительные устройства появились ещё в XVII веке благодаря работам Блюса Паскаля.

Первая электронно-вычислительная машина была разработана в XIX веке Чарльзом Баббидином. Бурное развитие вычислительной техники началось в середине 50-х годов, программы для таких машин писали в машинных кодах. Такие программы были трудны для понимания, разработкой таких программ занимались люди, которые очень хорошо знали устройство данной машины. Для облегчения труда программистов были придуманы алгоритмические языки высокого уровня. Программа на таком языке пишется с помощью команд. Первый алгоритмический язык был разработан в 1949 году short code. Алгоритмические языки: fortаn (середина 50-х), algol 60 (1962),

. Рli 1(1964)

. Cobol (1963)

. Algol 68 (1968)

. Раsсаl(1970)

. С++(1972)

. Ваs1с(1964).

Семь основных элементов программирования.

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

как ввести информацию в программу (ввод);

как хранить информацию в программе (данные);

как указать правильные команды для обработки данных (операции);

как передать обратно данные из программы пользователю (вывод).

Программист может упорядочить команды таким образом, чтобы:

некоторые из них выполнялись только, если выполняется некоторое условие или ряд условий (условное выполнение);

другие выполнялись повторно некоторое число раз (циклы);

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

1.2.2 Основные функции технологии программирования

Обеспечение качества программного средства (далее пс): спецификация качества определяет основные ориентиры (цели), которые на всех этапах разработки ПС так или иначе влияют при принятии различных решений на выбор подходящего варианта. Однако, каждый примитив качества имеет свои особенности такого влияния, тем самым, обеспечения его наличия в пс может потребовать своих подходов и методов разработки пс или отдельных его частей. Кроме того, отмечалась также противоречивость критериев качества пс и выражающих их примитивов качества: хорошее обеспечение одного какого-либо примитива качества пс может существенно затруднить или сделать невозможным обеспечение некоторых других из этих примитивов. Поэтому существенная часть процесса обеспечения качества пс состоит из поиска приемлемых компромиссов. Эти компромиссы частично должны быть определены уже в спецификации качества пс: модель качества пс должна конкретизировать требуемую степень присутствия в пс каждого его примитива качества и определять приоритеты достижения этих степеней.

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

·        Сначала необходимо обеспечить требуемую функциональность и надежность пс, а затем уже доводить остальные критерии качества до приемлемого уровня их присутствия в пс;

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

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

·        Защита от сбоев аппаратуры;

·        Защита от влияния "чужой" программы;

·        Защита от отказов "своей" программы;

·        Защита от ошибок оператора (пользователя);

·        Защита от несанкционированного доступа;

·        Защита от защиты.

Защита от сбоев аппаратуры в настоящее время является не очень злободневной задачей (с учетом уровня достигнутой надежности компьютеров). Но все же полезно знать ее решение. Его обеспечивается организацией так называемых "двойных-тройных просчетов". Для этого весь процесс обработки данных, определяемый пс, разбивается по времени на интервалы так называемыми "опорными точками". Длина этого интервала не должна превосходить половины среднего времени безотказной работы компьютера. Копия состояния изменяемой в этом процессе памяти каждой опорной точке записывается во вторичную память с некоторой контрольной суммой (числом, вычисляемым как некоторая функция от этого состояния) в том случае, когда будет считаться, что обработка данных от предыдущей опорной точки до данной (т.е. Один "просчет") произведена правильно (без сбоев компьютера). Для того, чтобы это выяснить, производится два таких "просчета". После первого "просчета" вычисляется и запоминается указанная контрольная сумма, а затем восстанавливается состояние памяти для предыдущей опорной точки и делается второй "просчет". После второго "просчета" вычисляется снова указанная контрольная сумма, которая затем сравнивается с контрольной суммой первого "просчета". Если эти две контрольные суммы совпадают, второй просчет считается правильным, в противном случае контрольная сумма второго "просчета" также запоминается и производится третий "просчет" (с предварительным восстановлением состояния памяти для предыдущей опорной точки). Если контрольная сумма третьего "просчета" совпадет с контрольной суммой одного из первых двух "просчетов", то третий просчет считается правильным, в противном случае требуется инженерная проверка компьютера.

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

·        Защита от отказов,

·        Защита от злонамеренного влияния "чужой" программы.

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

Источник: https://www.bibliofond.ru/detail.aspx?id=785120