Метод Крамера
Российский Университет Дружбы Народов
Инженерный факультет
Курсовая работа по предмету
Вычислительные методы и компьютерное моделирование в научных исследованиях
по теме:
«Метод Крамера»
Приготовила:
Студентка группы ИСМ-103
Кононенко В.В.
Проверил:
Севастьянов А.Л.
Москва 2013 г.
Содержание
Введение
1. Теоретическая часть
1.1 Постановка задачи
1.2 Методы раз обувка задачи
2. Практическая часть
2.1 Архитектура программы
2.2 Описание программы
2.3 Контрольный пример
и результат машинного
Вывод
Список литературы
Приложения
Введение
Вычислительная техника в последние годы широко применяются во всех сферах деятельности человека. Она стала катализатором научно-технического прогресса. Бурное развитие ЭВМ способствовал широкому процесса математизации науки, техники и хозяйства в целом. Именно разработка и применение математических методов решения прикладных задач на базе ЭВМ является предметом современной математики.
Математика - одна из древнейших наук - возникла из практических потребностей человека. Развитие математики способствовал общему научно-техническому прогрессу цивилизации, а потребности естествознания, техники и практической деятельности людей составляли перед математикой новые задачи и стимулировали ее развитие.
Развитие вычислительной математики тесно связано с развитием программирования, которое идет по пути упрощения способов общения человека с компьютером. На современном этапе развития возникают языки программирования приближенные к природным, развиваются проблемно ориентированные языки программирования, средства визуального программирования, создаются пакеты прикладных программ. Возникают и активно развиваются структурное программирование и специализированные языки для разработки структурированных программ.
Задание на курсовой проект предусматривает разработку программного обеспечения для решения задачи математического характера. Для ее реализации я выбрала язык Turbo Pascal 7.0.
Паскаль - гибкий и развернутый, в отношении типов данных, язык. Привлекательные его рекурсивные возможности, а также поддержка технологии объектно-ориентированного программирования.
Разработчиком данного языка был швейцарский ученый Никлаус Вирт, который создал Паскаль еще в 70-х годах. Турбо Паскаль фирмы Borland является расширением стандарта. Язык имеет также интегрированную среду, которая намного ускоряет и облегчает процесс разработки программ. Этот программный продукт прошел через 6 версий, после чего и появился Турбо Паскаль 7.0.
Главные особенности языка Turbo Pascal:
- Широкий спектр данных.
- Возможность обработки ленточных и структурных данных.
- Достаточный набор операторов управления разветвлениями и циклами.
- Хорошо развитый аппарат подпрограмм.
- Удобные конструкции работы с файлами.
- Большие возможности управления всеми ресурсами компьютера.
- Разнообразные стыковки с языком Ассемблера.
- Поддержка идей объектно-ориентированного программирования.
Курсовой проект состоит из введения, двух глав, заключения, списка использованной литературы и приложений. Текст пояснительной записки набран и распечатан с использованием текстового редактора Word.
1. Теоретическая часть
1.1 Постановка задачи
Пусть дана система п линейных алгебраических уравнений с п переменными
(I = 1.2 ..... n) (1)
Систему (1) можно записать в виде одного матричного уравнения
AX = B, (2)
где
матрица коэффициентов (индекс и указывает уравнение, которому принадлежит коэффициент, а индекс j - переменную, при которой он стоит),
,
соответственно столбец свободных членов и столбец переменных.
Благоустроенная совокупность п чисел , которая, будучи подставленной в систему (1) вместо , превращает все уравнения в правильные числовые равенства, называется решением системы (1)
то она имеет единственное решение. Его можно вычислить по формулам Крамера.
(K = 1,2, ..., n),
где матрицу получают из матрицы А, заменив ее k-й столбец столбцом свободных членов.
Методы решения систем линейных уравнений можно разделить на две группы: точные и итерационные.
Точными называют такие методы, которые позволяют найти точное решение системы (1) с помощью выполнения конечного числа арифметических операций в предположении, что все вычисления выполняются точно (без округлений), а коэффициенты системы и свободные члены - точные числа. Но на практике все вычисления выполняются с ограниченным количеством десятичных разрядов, а иррациональные коэффициенты и свободные члены, если таковые имеются, заменяются рациональными числами. Поэтому в процессе вычисления прибегают к округлений, а это означает, что решения, которые вычисляются по точными методами, фактически являются приближенными числами с определенными погрешностями (погрешностями округления). К точным относятся метод Гаусса, метод квадратных корней, правило Крамера т.п..
Интерацийнимы называют такие
методы, которые позволяют найти
приближенное решение системы (1) с
заранее указанной точностью
путем выполнения конечного числа
арифметических операций, хотя сами вычисления
могут проводиться и без
В задании на курсовой проект
предусмотрена разработка программного
обеспечения для решения
Программа должна обеспечивать выполнение следующих операций:
- ввод коэффициентов системы уравнений и свободных членов;
- вычисления определителей системы и нахождения решений системы;
- вывод систем уравнений и ее решения на экран.
Для реализации поставленной задачи в среде Turbo Pascal 7.0 разработана программа KRAMER.PAS. Вышеперечисленные операции реализуются в программе с помощью процедур.
1.2 Методы решения задачи
Рассмотрим систему трех
линейных уравнений с тремя
(1)
Систему (1) можно записать так:
, I = 1, 2, 3.
Здесь - некоторые заданные числа, а x, y, z - неизвестные, которые нужно найти.
Как уже известно, тройка чисел называются решением системы (1), если при подстановке их в уравнение системы вместо x, y и z выйдут верные числовые равенства.
Рассмотрим сначала случай, когда все коэффициенты уравнений системы (1) равны нулю:
i = 1, 2, 3.
В этом случае, если все свободные члены уравнений системы равны нулю:
,
то очевидно, дорогая тройка чисел (x; y; z) является решением этой системы. Если свободные члены уравнений равны нулю, то система не имеет решений.
Рассмотрим теперь более интересный случай, когда все коэффициенты уравнений системы (1) равны нулю. Пусть, например, . Тогда система эквивалентна следующей:
Последнее уравнение этой системы умножим на и изымаем почленно из первого уравнения, в результате получа уравнения
. (2)
Аналогично, умножил последнее уравнение на и изымая почленно из второго уравнения будем иметь
. (3)
Очевидно, что система
(4)
в которой первое уравнение получается из (2), а второе из (3) умножением на , эквивалентна системе (1).
Таким образом, если 0, то исследование системы (1) сводится к исследованию системы двух линейных уравнений с двумя неизвестными:
(5)
Рассмотрим сначала случай, когда все коэффициенты уравнений системы (5) равны нулю. Тогда, если свободные члены уравнений системы (5) равны нулю, то любая пара чисел (x; y) является решением системы (5) и, следовательно, дорогая тройка чисел (x; y; z), где
,
является решением системы (1). Если же хотя бы у одного из уравнений системы (5) свободный член не равен нулю, то система (5), то и система (1) не имеют решений.
Рассмотрим случай, когда все коэффициенты уравнений системы (5) равны нулю. Пусть, например,
Первое уравнение системы (5) умножим на , второе - на - и добавим, после очевидных преобразований получим уравнение
где
Таким образом, если , то система (5) эквивалентна системе
Если , то очевидно, дорогая пара чисел (x; y), где
, (6)
является решением системы (5).
С (6) и последнего уравнения системы (4) находим
(7)
Аналогично, если и , то любая тройка чисел (x; y; z), где , а y и z находятся в формулах (6) и (7), является решением системы (1).
Если , а , то система (5), а также система (1) не имеют решений.
Пусть теперь . Тогда
.
Подставив это значение х во второе уравнение системы (5), найдем
,
где
Подставив полученные значения x и y в третье уравнение системы (4), получим
,
где
.
Следует, если , то система (1) имеет одно решение, которое находится по формулам:
.
Эти формулы и называются формулами Крамера.
2. Практическая часть
2.1 Архитектура программы
Представленная программа реализуется программой Kramer. Написанная на языке Паскаль. Она включает в себя ряд процедур, обеспечивающих выполнение ввода вычислений и вывода на экран решения задачи.
Для уменьшения объема тела программы используется модуль zast.tpu (листинг модуля добавляется к проекту), в котором находятся все главные компоненты, которые используют процедуры (интерфейсы, описания и т.д.).
Перед описанием процедур осуществляется описание меток (раздел меток) и переменных (раздел переменных). Затем (после описания процедур) идет раздел операторов (тело программы), которая заключается в операторные скобки, т.е. Begin ... End. В нем указывается последовательность действий, которые должны использоваться ЭВМ.
Запуск программы
- Способ. Из среды любой операционной оболочки путем запуска Kramer.exe (предварительно программа должна быть откомпилирована с опцией Destination Memory).
- Способ. Из главного меню интегрированной среды Turbo Pascal путем выбора опции Run (программа предварительно должна быть загружена в ОП - File, Open, Kramer.pas).
После запуска программы любым способом она выдаст на экран главное меню, которое предлагает одну из опций:
- О программе
- Ввод коэффициентов
- Результаты
- Выход
При выборе определенного пункта активизируется соответствующая процедура. Завершение работы программы и возврат в среду системы программирования Turbo Pascal осуществляется при выборе пункта меню "Выход". Программа осуществляет вычисления системы уравнений методом Крамера и выводит результаты на экран дисплея.
В программе используются следующие процедуры:
Vvid - предназначена для ввода
Vyvid - предназначена для вычислений и вывода результатов.
2.2 Описание программы
заголовок программы
подключения внешних модулей
описание меток
{004} - {007} описание переменных
{008} заголовок процедуры vvid
начало процедуры
отключения графического режима
очистка экрана
установки цвета шрифта
вывод таблицы ввода
{014} - {025} ввод левой и
правой части уравнения в
конец процедуры vvid
заголовок процедуры vivid
начало процедуры
отключения графического режима
очистка экрана
установки цвета
вывод таблицы вывода
вычисления дельта для уравнения
вычисления дельта икс
вычисления дельта Игрек
вычисления дельта зет
вычисления икс
вычисления Игрек
вычисления зет
вывод дельта
вывод дельта икс
вывод дельта Игрек
вывод дельта зет
вывод икса
вывод Игрек
вывод зет
пустой ввод
конец процедуры vivid
начало главного блока программы
установки метки pt
присвоение переменной rob 1
подключения графического режима оператором ini
вывод меню оператором zas
пока переменная q НЕ будет равен *
если нажата любая клавиша то выполняются следующие действия
чтения нажатой клавиши и присвоении ей переменной q
начало цикла по распознаны нажатой клавиши
стрелка "вниз" то если rob> 4 тогда rob = 1, если rob <4 тогда rob = rob +1
стрелка "вверх" то если rob> 1 тогда rob = rob-1, если rob <1 тогда rob = 4
клавиша "Энтер" тогда: распознавание переменной rob если rob = 1 то на экран модуля zas выводится процедура about, которая выводит информацию о программе, а также осуществляется переход на метку pt
если переменная rob = 2 тогда то на экран модуля zas выводится процедура vvid в которой описываются все переменные для процедуры vvid программы, а также вывод рамки для ввода переменных. Переход на метку pt
если переменная rob = 3 тогда то на экран модуля zas выводится процедура vyvid в которой описываются все переменные для процедуры vyviid программы, а также вывод рамки для ввода переменных. Переход на метку pt
если переменная rob = 3 то осуществляется выход в систему
конец распознанного переменной rob
конец цикла определения нажатой клавиши
цикл если rob равна
1 тогда очистка экрана и выполнена процедура punkt1
2 тогда очистка экрана и выполнена процедура punkt2
3 тогда очистка экрана и выполнена процедура punkt3
4 тогда очистка экрана и выполнена процедура punkt4
конец цикла "если rob равно"
конец цикла "если нажата клавиша"
конец цикла "пока q НЕ будет равна *"
конец главного блока программы
Описание модуля zas.tpu
Интерфейсная секция модуля
unit zast;
{$ N +}
interface
procedure ini;
procedure about;
procedure clear;
procedure punkt1;
procedure punkt2;
procedure punkt3;
procedure punkt4;
procedure vivyd;
procedure vid;
procedure zas;
Процедура ini используется для
подключения графических
Процедура about дает пользователю информацию о назначении программы и разработчика.
Процедура clear возвращает пункты меню в первоначальный вид.
Процедуры punkt1, punkt2, punct3, punct4 маркируют соответственно пункты меню во второй цвет для вида перехода курсора по пунктам меню.
Процедуры vvid и vyvid обеспечивают вывод рамок для ввода и вывода данных в программу / с прор.
Процедура zas выводит изображение главного меню.
2.3 Контрольный пример
и результат машинного
Испытания любой системы являются наиболее ответственный и связан с наибольшими трудностями и крупнейшими потерями времени.
Отладка и тестирование - важнейшие этапы жизненного цикла приложений. Нельзя сделать выводы о правильности выполнения программы только на основании того, что она откомпилирована и выдает какие-то числовые данные, ведь в ней все же еще могут содержаться логические ошибки. Поэтому необходимо осуществить "ручную" проверку машинных результатов.
Итак задача: Решить систему линейных уравнений с тремя неизвестными с помощью формул Крамера
Найдем
Так, как 0, то система имеет одно решение.
Теперь найдем
Подставив найденные определители в формулы Крамера будем иметь:
Вывод
В данном курсовом проекте разработан и описан метод получения результатов решения системы линейных уравнений методом Крамера. Программа отлажена с использованием набора текстовых данных. Контрольный пример разработан вручную для проверки работоспособности программы и результат машинного эксперимента полностью совпали. Поэтому можно использовать данную программу на практике.
Выбор алгоритмического языка Паскаль для реализации поставленной задачи полностью оправдал себя. В процессе разработки программного обеспечения сделан вывод о возможности оформления функции вычисления определителя второго порядка в виде программного модуля, поскольку задача вычисления определителей высших порядков очень часто встречается при решении задач матричной алгебры и может быть сведена к многократному вычисления определителя второго порядка.
Список литературы
Turbo pascal (учебник) / С.А. Немнюгин - СПБ: Издательство "Питер", 2000.
М.Я. Ляшенко, Н.С. Головань. Численные методы. М.: "Лыбидь", 1996 - 285 с.
Математика для техникумов - Алгебра и начала анализа.
Приложение 1
(*****************************
(**)
(* Программа: KRAMER *)
(**)
(* Автор: Филоненко Сеpгiй *)
(* Copyrigth (c) 2003 S.Filonenko *)
(* Дата создания: беpезень 2003 *)
(**)
(* Используемые процедуры i функцii:)
(* Vvid *)
(* Vyvid *)
(**)
(*****************************
program kramer;
uses graph, crt, dos, zast;
label pt;
var rob: integer;
x1, x2, x3, x4, x5, x6, x7, x8, x9, a, b, c: integer;
d, dx, dy, dz, x, y, z: real;
q: char;
procedure vvid;
begin
closegraph;
clrscr;
textcolor (lightblue)
vid;
gotoxy (9,2) readln (x1);
gotoxy (26,2) readln (x2)
gotoxy (42,2) readln (x3)
gotoxy (57,2) readln (a);
gotoxy (9,4) readln (x4)
gotoxy (26,4) readln (x5)
gotoxy (42,4) readln (x6)
gotoxy (57,4) readln (b);
gotoxy (9,6) readln (x7)
gotoxy (26,6) readln (x8);
gotoxy (42,6) readln (x9)
gotoxy (57,6) readln (c);
end;
procedure vyvid;
begin
closegraph;
clrscr;
textcolor (yellow)
vivyd;
d: = x1 * x5 * x9 + x2 * x6 * x7 + x4 * x8 * x3-x3 * x5 * x7-x2 * x4 * x9-x8 * x6 * x1;
dx: = a * x5 * x9 + x2 * x6 * c + b * x8 * x3-x3 * x5 * c-x2 * b * x9-x8 * x6 * a;
dy: = x1 * b * x9 + a * x6 * x7 + x4 * c * x3-x3 * b * x7-a * x4 * x9-c * x6 * x1;
dz: = x1 * x5 * c + x2 * b * x7 + x4 * x8 * aa * x5 * x7-x2 * x4 * c-x8 * b * x1;
x: = dx / d;
y: = dy / d;
z: = dz / d;
gotoxy (9,2); writeln (d);
gotoxy (9,4); writeln (dx);
gotoxy (9,6); writeln (dy)
gotoxy (9,8); writeln (dz)
gotoxy (9,10); writeln (x);
gotoxy (9,12); writeln (y);
gotoxy (9,14); writeln (z);
readln;
end;
begin
pt:
rob: = 1;
ini;
zas;
while q <> '*' do begin
if keypressed then begin
q: = readkey;
case q of
# 80: begin if rob> 4 then rob: = 1; if rob <4 then rob: = rob +1; end;
# 72: begin if rob> 1 then rob: = rob-1; if rob <1 then rob: = 4; end;
# 13: begin if rob = 1 then begin about; goto pt; end;
if rob = 2 then begin vvid; goto pt; end;
if rob = 3 then begin vyvid; goto pt; end;
if rob = 4 then halt;
end;
end;
case rob of
1: begin clear; punkt1; end;
2: begin clear; punkt2; end;
3: begin clear; punkt3; end;
4: begin clear; punkt4; end;
end;
end;
end;
end.
Приложение 2
D |
1.6000000000E +01 |
DX |
3.2000000000E +01 |
DY |
4.8000000000E +01 |
DZ |
1.6000000000E +01 |
X |
2.0000000000E +00 |
Y |
3.0000000000E +00 |
Z |
1.0000000000E +00 |

- Метод Крамера
- Метод Крылова
- Метод Лапласа для однократных интегралов
- Метод литературной герменевтики. Теория понимания Ф. Шлейермахера
- Метод магнетронного напыления покрытий с ионным ассистированием
- Метод математического моделирования
- Метод медиапланирование
- Метод картоидов в геграфии
- Метод касательных
- Метод касательных решения нелинейных уравнений
- Метод комбинирования телевизионных жанров
- Метод контент-анализа в исследовании политических процессов на примере российских партий
- Метод корреляционно-регрессионного анализа в статистическом изучении рекламной деятельности
- Метод Крамера