Наиболее известным и популярным точным способом решения систем линейных алгебраических уравнений (СЛАУ) является метод Гаусса. Этот метод заключается в последовательном исключении неизвестных. Пусть в системе уравнений
первый элемент a11 (0) не равен 0. Назовем его ведущим элементом первой строки. Поделим все элементы этой строки на a11 (0) и исключим x1 из всех последующих строк, начиная со второй, путем вычитания первой (преобразованной), умноженной на коэффициент при x1 в соответствующей строке. Получим
Если a22 (1) , то, продолжая аналогичное исключение, приходим к системе уравнений с верхней треугольной матрицей
Из нее в обратном порядке находим все значения xi:
Процесс приведения к системе с треугольной матрицей называется прямым ходом, а нахождения неизвестных — обратным. Если один из ведущих элементов равен нулю, изложенный алгоритм метода Гаусса неприменим. Тем не менее, для нормальной матрицы с ненулевым определителем всегда возможна такая перестановка уравнений, что на главной диагонали не будет нулей. В приведенном коде для простоты перестановок не делается, зато делается проверка решения, а прямой и обратный ход для наглядности вынесены в отдельные подпрограммы.
Аналогичная программа на C++ выглядит следующим образом:
Здесь матрица и вектор правой части генерируются случайным образом из чисел в диапазоне от 1 до 5:
- Курсовая работа: Разработка программы решения системы линейных уравнений
- Введение
- 1 . Описание математических методов решения систем линейных уравнений
- 1.1 Метод Гаусса
- 1.2 Матричный метод
- 1.3 Вычисление определителей второго и третьего порядка
- 2. Язык программирования Паскаль
- 2.1 Структура программы
- 2.2 Описание переменных
- 2.3 Основные конструкции языка
- 2.4 Структуры данных
- 2.4 Процедуры и функции
- 3. Описание программы
- 3.1 Работа программы
- 3.2 Блок-схема программы
- Заключение
- Список используемых источников и литературы
- Приложение
- Паскаль решение систем уравнений методом гаусса
- Метод решения системы линейных уравнений методом Гаусса. (Прикладное программирование.)
Видео:Язык Turbo Pascal и математика. Решение системы m линейных уравнений с n неизвестными методом ГауссаСкачать
Курсовая работа: Разработка программы решения системы линейных уравнений
Название: Разработка программы решения системы линейных уравнений Раздел: Рефераты по информатике, программированию Тип: курсовая работа Добавлен 22:38:32 18 июля 2010 Похожие работы Просмотров: 1002 Комментариев: 21 Оценило: 3 человек Средний балл: 5 Оценка: неизвестно Скачать | |
Видео:решение системы уравнений методом ГауссаСкачать
Заключение
В данной курсовой работе рассмотрены математические методы решения систем линейных уравнений: матричный метод и метод Гаусса, приводятся основные конструкции языка Паскаль. Рассмотренные теоретические вопросы дают возможность создания программы на Паскале для решения систем линейных уравнений. В курсовой работе приводится текст данной программы, рассматривается структура программы, анализируются все подпрограммы. Данная программа может быть использована в различных областях, где требуется решение систем линейных уравнений.
Видео:Линейная алгебра, Матрицы: Метод Гаусса. Высшая математикаСкачать
Список используемых источников и литературы
1. А.В. Могилев, Н.И. Пак, Е.К. Хеннер «Информатика», Москва, ACADEMA, 2000 г.
2. « Турбо Паскаль 7.0″, Киев, Торгово-издательское бюро BHV, 1997г.
3. С.А. Немнюгин, «Турбо ПАСКАЛЬ», Практикум, Питер, 2002г.
Видео:Система линейных уравнений. Общее решение. Метод ГауссаСкачать
Приложение
«Решение систем линейных уравнений матричным способом и методом Гаусса»
type matr=array [1. n,1. n] of real;
mas=array [1. n] of real;
procedure PrintMatr2 (m,m1: matr; n,nz,nd: integer);
for i: =1 to n do
if (i=1) then write (np: 2,’: ‘)
for j: =1 to n do
write (m [i,j]: nz: nd); write (‘ ‘);
for j: =1 to n do
write (m1 [i,j]: nz: nd);
procedure MultString (var a,b: matr; i1: integer; r: real);
for j: =1 to n do
procedure AddStrings (var а,b: matr; i1, i2: integer; r: real);
for j: =1 to n do
a [i1,j]: =a [i1,j] +r*a [i2,j] ;
b [i1,j]: =b [i1,j] +r*b [i2,j] ;
procedure MultMatr (a,b: matr; var c: matr);
for i: =1 to n do
for j: =1 to n do
for k: =1 to n do
function sign (r: real): shortint;
if (r>=0) then sign: =1 else sign: =-1;
procedure GetMatr (a: matr; var b: matr; m, i,j: integer);
var ki,kj,di,dj: integer;
for ki: =1 to m-1 do
if (ki=i) then di: =1;
for kj: =1 to m-1 do
if (kj=j) then dj: =1;
b [ki,kj]: =a [ki+di,kj+dj] ;
procedure gauss (a: matr; b: mas; var x: mas; n: integer);
For k: =1 to N-1 do
For i: =k+1 to n do
For j: =k+1 to N do
writeln (‘Вывод результатов решения системы уравнений методом Гаусса’);
writeln (‘x [‘,n,’] =’,x [n]: 6: 2);
for i: = (n-1) downto 1 do
For j: =i+1 to n do
x [i]: = (b [i] +s) /a [i, i] ;
writeln (‘x [‘, i,’] =’,x [i]: 6: 2);
procedure matrica (a: matr; y: mas; n: integer);
for i: =1 to n do
for j: =1 to n do z [i,j]: =0;
for i: =1 to n do
for j: =1 to n do
for i: =1 to n do
взятую со знаком i-того элемента j-ой строки. Таким образом,
на месте элементова a [i, i] возникает сумма модулей элементов i-того
столбца (ниже i-ой строки) взятая со знаком бывшего элемента a [i, i],
равенство нулю которой говорит о несуществовании обратной матрицы >
for j: =i+1 to n do
AddStrings (a,z, i,j,sign (a [i, i]) *sign (a [j, i]));
if (abs (a [i, i]) >eps) then
MultString (a,z, i,1/a [i, i]);
for j: =i+1 to n do
AddStrings (a,z,j, i,-a [j, i]);
writeln (‘Обратной матрицы не существует. ‘);
if (a [n,n] >eps) then
for i: =n downto 1 do
for j: =1 to i-1 do
AddStrings (a,z,j, i,-a [j, i]);
else writeln (‘Обратной матрицы не существует. ‘);
writeln (‘Начальная матрица, обратная к ней матрица: ‘);
for i: =1 to n do s [i]: =0;
for i: =1 to n do
for j: =1 to n do
s [i]: =s [i] +z [i,j] *y [j] ;
writeln (‘Вывод результатов решения системы уравненй матричным способом’);
for i: =1 to n do write (‘ ‘, s [i]: 5: 2);
writeln (‘ввод матрицы коэффициентов при неизвестных х’);
for i: =1 to N do
for j: =1 to N do
write (‘ введите a [‘, i,’,’,j,’] => ‘);
writeln (‘ввод столбца свободных членов’);
for i: =1 to N do
write (‘ введите b [‘, i,’] => ‘);
writeln (‘введите вариант ‘);
writeln (‘ 1 — решение системы линейных уравнений методом Гаусса ‘);
write (‘ 2 — решение системы линейных уравнений матричным методом => ‘);
Видео:Метод простых итераций - PascalСкачать
Паскаль решение систем уравнений методом гаусса
Видео:МЕТОД ГАУССА 😉 #егэ #математика #профильныйегэ #shorts #огэСкачать
Метод решения системы линейных уравнений методом Гаусса. (Прикладное программирование.)
Автор работы награжден дипломом победителя II степени
Паспорт проектной работы
Название проекта: Решение системы линейных уравнений методом Гаусса.
Учебный предмет, в рамках которого проводится проект: информатика.
Возраст учащихся, на которых рассчитан проект:15-16 лет.
Состав проектной группы: ученик 10 «А» класса
Тип проекта:
По характеру результатов: практико-направленный;
По форме: практикозначимый;
По профилю: межпредметный;
По числу участников: индивидуальный;
По продолжительности: долгосрочный;
На основе материалов: исследовательский, информационный, практико-направленный.
Цель проекта: Создать программу, решающую систему линейных уравнений, использующая метод Гаусса.
Задачи проекта:
Изучение литературы по языку программирования паскаль и линейным уравнениям.
Составление алгоритма решения линейных уравнений методом Гаусса
Написание программы, находящей неизвестные члены в системе уравнений.
Вопрос проекта: Можно ли написать данную программу в программном обеспечении Pascal ABC.
Предполагаемый продукт проекта: программа, реализующая метод Гаусса.
Этапы работы над проектом:
Первый этап (сентябрь) : изучение литературы по теме линейные уравнения, методы решения линейных уравнений, метод Гаусса, программирование на языке Паскаль.
Второй этап (октябрь): составление математической модели решения линейных уравнений методом Гаусса.
Третий этап (ноябрь): составление алгоритма решения линейных уравнений методом Гаусса в виде блок-схем.
Четвертый этап (декабрь): написание программы по составленным блок-схемам на языке программирования Паскаль.
Пятый этап (январь): разбитие проекта на несколько частей, для того, чтобы было удобнее работать с ним.
Шестой этап (февраль): проверка работоспособности программы, составление тестов, тестирование программы, первоначальная отладка полученной программы.
Седьмой этап (март): окончательная доработка и отладка программы.
Актуальность: Применение теоретических знаний при решении задач различной направленности.
Материально-техническое обеспечение: ПК с ОС Windows 10, ABC Паскаль, MS Word.
При изучении предмета информатика в школе, разделу алгоритмизация и программирование отводится достаточно много времени. В заданиях ЕГЭ задачи по программированию встречаются на всех уровня сложности. Проблема, тем не менее, в том, что эта тема очень сложна для понимания учениками.
Актуальность данной работы заключается в том, что на своем примере, я захотел показать, как можно не просто изучить язык программирования , но и применить свои знания при решении математических задач.
Цель проекта: Создать программу, решающую систему линейных уравнений, использующая метод Гаусса.
Изучение литературы по языку программирования паскаль и линейным уравнениям.
Составление алгоритма решения линейных уравнений методом Гаусса
Написание программы, находящей неизвестные члены в системе уравнений.
Линейные уравнения. Что это такое? Линейное уравнение – это алгебраическое уравнение, один или несколько членов которого неизвестны.
Такие уравнения являются обычным явлением в школе.
В школах также часто встречаются системы уравнений. Одной из них является система линейных уравнений. Также решение такой системы (линейных уравнений) используется для дешифрования сообщений. Как же решить эти системы уравнений?
Ответ на этот вопрос я нашел в книгах: Бахвалова Н.С., Жидкова Н.П., Кобелькова Г.Г. Численные методы., Волкова Е.А. Численные методы. Особенности метода Гаусса я изучил в пособии Н. Ш. Кремера, «Метод Гаусса». А тонкости программирования очень доступно объяснены в книге Рода Стивенса «Алгоритмы. Теория и практическое применение».
Практическая значимость работы заключается в том, что данную программу можно использовать для обучения детей, при углубленном изучении математики и программирования. Также отдельные части проекта можно использовать как подведение итога обучения информатики у учеников старших классов. При желании код программы можно применять студентам математикам для проверки своих математических вычислений при решении системы линейных уравнений. Стоит отметить тот факт, что данная работа может быть реализована на разных языках программирования.
1.Методы решений системы уравнений
Наиболее часто применимым является метод подстановки (в нём обычно мы выражаем одну переменную через другую и уже подставим переменную решаем обычное уравнение с одной неизвестной)
Часто встречается и метод сложения(данный метод обычно применяется в тех способах, если у двух уравнений есть неизвестные с одинаковым показателем, и путём сложения их можно убрать)
Метод введения новых переменных (используется редко и обычно применяется в тех случаях, если нам нужно заменить отношение двух неизвестных на некоторую новую переменную, например, t)
Графический метод решения (используется редко, но употребляется. Обычно такие системы сразу видно, например, уравнение круга на координатной плоскости x^2+y^2=9; или обычное уравнение прямой x+y=-3)
Есть метод подбора (это самый первый способ, который дети изучают в школах, но при этом он почти не используется в дальнейшем)
Также существует метод с определителем(редко используем, но эффективен)
Метод Гаусса (данный метод очень лёгок и понятен, он часто используется в программировании)
Метод Гаусса мы и рассмотрим в данной работе.
2.Возможные случаи решений системы линейных уравнений
У уравнений может быть несколько вариантов решений. Всё это зависит от значений переменных.
Возьмём некоторую систему уравнений:
Истекая из значений коэффициентов(a1,b1,a2,b2) перед неизвестными членами(x,y)
Одним из таких вариантов является случай, когда у выражений вообще нет решений(a1=a2=b1=b2=0 c1≠0 c2≠0)
Также встречаются ситуации, когда у системы целая плоскость является решением(a1=a2=b1=b2=c1=c2=0)
Случай, когда решением системы является прямая – частое явление(a1/a2=b1/b2=c1/c2)
Есть вариант, где нет решения поскольку прямые параллельны (a1/a2=b1/b2≠c1/c2)
И наконец, одно решение(a1*b2-a2*b1≠0)
В пятом случае как раз и применяется метод Гаусса.
Ме́тод Га́усса — классический метод решения системы линейных алгебраических уравнений. Это метод последовательного исключения переменных, когда с помощью элементарных преобразований система уравнений приводится к равносильной системе ступенчатого (или треугольного) вида, из которого последовательно, начиная с последних (по номеру) переменных, находятся все остальные переменные.[2]
История
Хотя, в настоящее время, данный метод повсеместно называется методом Гаусса, он был известен и до К. Ф. Гаусса. Первое известное описание данного метода — в китайском трактате «Математика в девяти книгах», составленном между I в. до н.э. и II в. н. э.[1]
Описание метода
Первым делом система приводится к ступенчатому виду(каждый последующий член должен быть равен 0. Например, в системе два уравнения, тогда в первом уравнении будет оба неизвестных члена, а во втором – только второй). Затем находится каждый последующий член, начиная с конца.
Покажем, как методом Гаусса можно решить следующую систему:
Обнулим коэффициенты при во второй и третьей строчках. Для этого вычтем из них первую строчку, умноженную на и , соответственно:
Теперь обнулим коэффициент при в третьей строке, вычтя из неё вторую строку, умноженную на :
В результате мы привели исходную систему к треугольному виду, тем самым закончив первый этап алгоритма.
На втором этапе разрешим полученные уравнения в обратном порядке. Имеем:
Y=3 из второго, подставив полученное
y=3, x=2 из первого, подставив полученные и .
Таким образом исходная система решена.
В случае, если число уравнений в совместной системе получилось меньше числа неизвестных, то тогда ответ будет записываться в виде фундаментальной системы решений.
Достоинства метода
Менее трудоёмкий по сравнению с другими методами.
Позволяет однозначно установить, совместна система или нет, если совместна, найти её решение.
Программирование
Данный метод будет запрограммирован в Паскале. В основном буду использоваться условные оператору и циклы с определённым количеством действий.
В начале программы отсеиваются варианты, в которых нет решений.
А в случаях, где вариантами решений являются плоскости или прямые, выводятся не результаты, а ответы «решением является плоскость//прямая».
В случае несоответствия с этими требованиями, начинается анализ компонентов цикла(а именно коэффициентов перед неизвестными). После каждого условия наша блок схема всё увеличивается и увеличивается, приходя к логическому концу – выводу результатов(двух неизвестных).
Текст (код) программы на языке программирования Паскаль приведён в приложении 1 к проекту.
В ходе работы над проектом я увидел, что построение алгоритмов очень увлекательно. Кроме этого, я увидел реальное применение такой науки как программирование. Меня очень увлек процесс приобретения новых знаний, которые я добывал самостоятельно. Поэтому я решил не останавливаться на этом. Решение систем линейных уравнений с булевыми переменными будет темой моего следующего проекта.
В данной работе был рассмотрен метод Гаусса. Была построена блок-схема и составлена программа на языке программирования Паскаль, работающая по данному методу.
В заключение, я хочу сказать, что реализовав данный проект, я добился следующих результатов : во-первых, я написал программу, которая решает математическую задачу, а значит достиг своей цели, во-вторых, мне удалось изучить тонкости языка программирования за то время пока я занимался данным проектом, данная работа не прекращается и по сей день, в третьих, в ходе реализации некоторых моментов решения я сталкивался с проблемами, для решения которых приходилось самому придумывать и реализовывать алгоритмы, а значит углубляться и улучшать свои знания в математике и информатике.
Гаусс, Карл Фридрих (1777—1855) — немецкий математик, физик и астроном.
Н. Ш. Кремер, «Метод Гаусса», М.: Физматлит ,2009.
Бахвалов Н.С., Жидков Н.П., Кобельков Г.Г. Численные методы. — 8-е изд.. — М.: Лаборатория Базовых Знаний, 2000.
Волков Е.А. Численные методы. — М.: Физматлит, 2003.
Род Стивенс. «Алгоритмы. Теория и практическое применение».
program progect_in_university;
const
var
a: array [1..n, 1..n] of real;
b: array [1..n] of real;
x: array [1..n] of real;
begin
for i := 1 to ndo
for j := 1 to ndo read(a[i, j]);
writeln(‘введите сколько свободных членов’);
for i := 1 to ndo read(b[i]);
for i := 1 to ndo
begin
for j := i + 1 to ndo
begin
a[j, i] := -a[j, i] / a[i, i];
for k := i + 1 to ndo a[j, k] := a[j, k] + a[j, i] * a[i, k];
b[j] := b[j] + a[j, i] * b[i];
end;
end;
for i := n — 1 downto 1 do
begin
for j := I + 1 to ndo
end;
for i := 1 to ndo