Решение систем линейных уравнений методом Гаусса и методом Крамера на Delphi
Классическим методом решения систем линейных алгебраических уравнений (СЛАУ) является метод Гаусса. На первом этапе этого метода осуществляется так называемый прямой ход, когда путём элементарных преобразований над строками систему приводят к ступенчатой или треугольной форме, либо устанавливают, что система несовместна. А именно, среди элементов первого столбца матрицы выбирают ненулевой, перемещают его на крайнее верхнее положение перестановкой строк и вычитают получавшуюся после перестановки первую строку из остальных строк, домножив её на величину, равную отношению первого элемента каждой из этих строк к первому элементу первой строки, обнуляя тем самым столбец под ним. После того, как указанные преобразования были совершены, первую строку и первый столбец мысленно вычёркивают и продолжают пока не останется матрица нулевого размера. Если на какой-то из итераций среди элементов первого столбца не нашёлся ненулевой, то переходят к следующему столбцу и проделывают аналогичную операцию.
На втором этапе осуществляется так называемый обратный ход, суть которого заключается в том, чтобы выразить все получившиеся базисные переменные через небазисные и построить фундаментальную систему решений либо, если все переменные являются базисными, то выразить в численном виде единственное решение системы линейных уравнений. Эта процедура начинается с последнего уравнения, из которого выражают соответствующую базисную переменную (а она там всего одна) и подставляют в предыдущие уравнения, и так далее, поднимаясь по «ступенькам» наверх. Каждой строчке соответствует ровно одна базисная переменная, поэтому на каждом шаге, кроме последнего (самого верхнего), ситуация в точности повторяет случай последней строки. Реализация на Delphi вышеописанного алгоритма представлена ниже. Также можно бесплатно скачать исходный код этой программы.
type
Vector = array[1..MaxDimension] of Double;
Matrix = array[1..MaxDimension] of Vector;
...
var a: Matrix;
b,x: Vector;
h: Double;
i,j,k,n:integer;
begin
//Ввод данных
//Размерность системы
n := StrToIntDef(Text, StringGrid1.ColCount);
//Коэффициенты
for j := 0 to n - 1 do
for i := 0 to n - 1 do
a[i + 1, j + 1] := StrToFloatDef(StringGrid1.Cells[j, i], 0);
//Правая часть уравнения
for I := 0 to n - 1 do
b[i + 1] := StrToFloatDef(StringGrid2.Cells[0, i], 0);
//Прямой ход - исключение переменных
for i:=1 to n-1 do
for j:=i+1 to n do
begin
a[j,i]:=-a[j,i]/a[i,i];
for k:=i+1 to n do
a[j,k]:=a[j,k]+a[j,i]*a[i,k];
b[j]:=b[j]+a[j,i]*b[i]
end;
x[n]:=b[n]/a[n,n];
//Обратный ход - нахождение корней
for i:=n-1 downto 1 do
begin
h:=b[i];
for j:=i+1 to n do h:=h-x[j]*a[i,j];
x[i]:=h/a[i,i]
end;
//Вывод результата
for i:=1 to n do
ListBox1.Items.Append('x(' + IntToStr(i) + ')=' + FloatToStr(x[i]));
Программа решения систем линейных уравнений методом Крамера на Delphi с полными исходными кодами (BDS 2006)
скачать [файлообменник Deposit Files]
Программа решения систем линейных уравнений методом Гаусса на Delphi с полными исходными кодами (BDS 2006)
скачать [файлообменник Deposit Files]


04 Ноя 2008 в 12:20
привет
14 Ноя 2008 в 9:45
Прошу сообщать здесь, если какая-нибудь из ссылок на скачивание окажется нерабочей.
26 Ноя 2008 в 19:25
Ни одна из ссылок на Гаусса не работает
26 Ноя 2008 в 22:41
На Deposit Files проверил, ссылки рабочие. Просто он не дает скачивать, если загрузка на сервер большая или с вашего IP-адреса уже идет скачивание. Такое бывает, если подключение к интернету через провайдера, у которого один адрес на всех абонентов. Тут нужно просто подождать и еще раз попробывать.
А на LetitBit действительно не работает. Но у них сервер не работает сегодня почему-то. Завтра еще раз проверю. Если файлов нет, то перезалью еще раз.
06 Дек 2008 в 22:58
Прикол… Искал такую прогу (не себе, сам давно вышку сдал), наткнулся на говноеда, который текст такой программы (на С, без интерфейса, данные берёт из текстового файла) барыжит за 240 руб…
А тут наоборот, не жалко раздать людям и текст, и готовую прогу с удобным интерфейсом… Молодец!
Кстати, насчёт размерности матрицы - есть предел? 100х100 решит? Есть ограничение у элемента Grid?
12 Дек 2008 в 15:47
2SЁM
В программе, которая решает системы методом Гаусса размерность матрицы ограничена константой MaxDimension. Но ее можно изменить, как Вам нужно.
18 Дек 2008 в 2:40
Здравствуйте! Ребята кто смотрел метод Краммера? Вам случайно не показалось,что там функции точно такие как и для решения методом Гаусса, просто по разному называются???
18 Дек 2008 в 11:50
Нет, там разные программы и используется свои функции. Метод Крамера реализован как консольное приложение, а метод Гаусса как приложение VCL.
18 Дек 2008 в 23:55
Здравствуйте. А скажите пожалуйста в методе Гаусса тип Vector у Matrix = array[1..n] of Vector; встроенный в Delphi?
19 Дек 2008 в 0:20
Здравствуйте, Сергей. Нет, тип Vector не встроенный в Delphi. Его описание приведено сразу над описанием типа Matrix.
05 Янв 2009 в 5:17
Прошу прощения за наглость… А нельзя ли помочь и прикрепить к
этому материалу еще и блок-схему? В частности интересует блок-схема к методу Крамера…
14 Фев 2009 в 9:26
[...] решения уравнений метод гаусса- самый распространённый. Кстати о нём написано много [...]
14 Фев 2009 в 11:19
[...] такое метод гаусса? Все привыкли в фотошопе к размытию его методом, а [...]
15 Фев 2009 в 9:32
[...] сенсорные терминалы miele wt 2670 метод гаусса [...]
15 Фев 2009 в 11:17
[...] метод гаусса знай его [...]
15 Фев 2009 в 12:12
[...] метод гаусса знать [...]
15 Фев 2009 в 13:47
Спасибо за код. А то мне ещё математику сдавать.
15 Фев 2009 в 22:19
[...] как решить систему линейных уравнений? Метод гаусса поможет. Читайте на [...]
16 Фев 2009 в 10:33
[...] в спринте на ЧМ по биатлону. ——- Классический метод гаусса это решения систем линейных алгебраических [...]
16 Фев 2009 в 13:11
[...] метод гаусса очень известен [...]
16 Фев 2009 в 16:28
[...] для хоккейной команды “
16 Фев 2009 в 17:43
[...] волгоград, много вариантов. —— Оказывается метод гаусса используется в [...]
16 Фев 2009 в 19:35
[...] метод гаусса знайте [...]
16 Фев 2009 в 19:55
[...] метод гаусса узнать [...]
17 Фев 2009 в 8:14
[...] метод гаусса сшил сорочку такси юридическим лицам [...]
17 Фев 2009 в 9:32
[...] метод гаусса очень известен [...]
17 Фев 2009 в 19:32
[...] метод гаусса известен [...]
17 Фев 2009 в 21:08
[...] Постовой: метод гаусса [...]
18 Фев 2009 в 14:00
[...] метод гаусса знаком [...]
18 Фев 2009 в 16:28
[...] батареи . Постовой: Если Вас интересует метод гаусса тогда заходите на этот сайт. Здесь найдете все что Вас [...]
18 Фев 2009 в 16:55
[...] и защиты . Постовой: Если Вы не знаете что такое метод гаусса тогда заходите на этот сайт и все узнаете. Постоянно [...]
18 Фев 2009 в 23:19
[...] *************************** Интересное и полезное в сети: Содержательные статьи по разным аспектам стратегии маркетинга можно найти на 1mbiz.ru Оригинальный способ решения линейных уравнений, используя метод Гаусса [...]
19 Фев 2009 в 13:31
[...] листинг
20 Фев 2009 в 17:31
[...] • метод гаусса • смотреть кино онлайн бесплатно • Форум про [...]
24 Фев 2009 в 22:58
[...] ешение системы линейных уравнений используя метод гаусса в режиме online. Posted under [...]
26 Фев 2009 в 2:49
[...] ешение линейных уравнений. Метод Гаусса и [...]
02 Март 2009 в 2:37
Дай Вам Боже здоров`я
09 Март 2009 в 18:22
[...] уже компьютер решать умеет. В инете прочитала
14 Апр 2009 в 13:19
Хотелось бы узнать есть где полностью Крамер на DELPHI
06 Май 2009 в 21:09
А где можно найти метод Крамера с норм интерфейсом, а ку мет. Гаусса ?
А то выпрыгивает какой то черненький экранчик и все, ничего не понятно (((
07 Май 2009 в 0:23
админ дай свою асю
07 Май 2009 в 16:41
не дам. Сам ищи.
11 Май 2009 в 16:43
Зачем же флудить то так, математики мои
17 Май 2009 в 23:21
как переписать это все дело в дедфи4?????
23 Май 2009 в 11:44
Да.. Жаль нету крамера как приложение VCL … и блок-схемка не помешала бы .. ((( времени мало осталось … кто знает чем помочь 360279203
25 Май 2009 в 12:40
В данном коде не предусмотрено случая, когда резрешающий элемент равен нулю, при нахождении определителя матрицы…( Как это исправить?
25 Май 2009 в 12:54
А в скаченном коде решена эта проблема! =) Спасибо за помощь!
28 Май 2009 в 4:52
Отчно! Просто супер! Респ автору!!
20 Июнь 2009 в 11:37
Реально хорошо написано!
21 Июнь 2009 в 21:45
Автору спасибо!:)
10 Сен 2009 в 6:31
На здоровье
24 Сен 2009 в 20:42
Между прочим, программа не всегда верно работает. Написано хорошо, но….
24 Сен 2009 в 20:48
Даже в этом примере…если проверить на МатКаде :
given
42x+57y-98z=20
93x-11y+87z=69
42x+63y-73z=38
find(x,y,z) ->
x = 0.385
y = 0.924
z = 0.498
Как это объясните?? Ошибка в МатКаде?
Хотя у меня точно такой же алгоритм на C++ вместился в 20 строчек…еффект так же неверен
24 Сен 2009 в 20:49
Пардон, за пост, там ошибка!
18 Окт 2009 в 18:12
Спасибо большое очень помогла и сэконимила время ваше замечательная программа… спасибо)))
24 Окт 2009 в 14:47
гы
31 Окт 2009 в 23:29
Оппа, спасибо за код. То что надо.
05 Ноя 2009 в 20:29
У меня не получается скачать!!! А программа ну очень нужна….
Помогите мне!!!
06 Ноя 2009 в 16:17
Что именно не получается? Какая-то ошибка или что?
14 Ноя 2009 в 14:56
Спасибо огромное!!!!!!! Всё работает на 5 баллов!!!!
25 Ноя 2009 в 17:19
Объясните пожалуйста как она работает, не могу разглядеть метод гаусса в тексте программы..Или я по-другому для себя метод Гаусса представляю..Плиз..
27 Ноя 2009 в 16:42
[...] вашу фирму __________________________ Вы знаете, что такое метод гаусса? Срочная доставка суши Москва в любой район Простые [...]
25 Дек 2009 в 7:22
почему то я не могу скачать ничего с этого сайта.
скачать [файлообменник Deposit Files] - у меня только чистую страницу открывает и все , помогите кто нибудь.
27 Дек 2009 в 14:19
Можете плз на торрент или nnm-club.ru залить а то не получается скачать с этого дурацкого сайта пишет что с вашего ip уже идёт скачивание
07 Янв 2010 в 9:10
Конечно же я знаю, что такое метод Гаусса. Не школьник.
12 Янв 2010 в 15:50
Большое спасибо!
Большое спасибо!
Большое спасибо!
Большое спасибо!
Большое спасибо!
Большое спасибо!
Большое спасибо!
Будет возможность найду все свои программик и скину может кому тоже поможет!
22 Янв 2010 в 22:53
Братси кто может помоч нети.мне на какое сает заети.на диплом
19 Сен 2010 в 0:02
Прога не рабочая вылетает при делении на ноль и если коэффициент при первом неизвестном равен нулю
03 Окт 2010 в 23:48
Спасибо большое за программу!!! Очень хорошо и понятно написана. Только у меня вопрос: Как изменить значения по умолчанию в StringGrid? Какое свойство надо использовать?
05 Окт 2010 в 23:47
Римма, привет. Чтобы изменить значения по умолчанию, нужно использовать свойство cell. Например:
StringGrid1.Cell[1,1] := ‘43′;
Удачи!
23 Ноя 2010 в 0:35
Спасибо за программу! У меня маленькие просьбы:
1)откоментируйте более подробно алгоритм программы
2)Как добавить проверку результата если числа вещественные и 1/3+1/3+1/3=0,999999 вместо 1
3)Как бороться с делением на нуль, я так понял что если получаются нули то решить систему данным методом нельзя или я ошибаюсь?
09 Дек 2010 в 19:25
x[n]:=b[n]/a[n,n]; - на делфи7 не работает.почему? кто знает как изменить?
05 Янв 2011 в 20:16
Спасибо.
27 Июнь 2011 в 4:43
Очень полезная работа, мне почти помогла. Только вот мне нужно квадратную матрицу привести к треугольному виду методом Гаусса и вывести ее на экран. Подскажите, как это реализовать?
07 Ноя 2011 в 21:10
Програмка отличная хотя и выдается только ответ))) можно было бы организовать еще и вывод в листинг порядка решения. Хотя если у кого не кривые руки могут доработать))))
22 Ноя 2011 в 14:59
Ссылка “Программа решения систем линейных уравнений методом Крамера на Delphi с полными исходными кодами (BDS 2006)” - НЕ РАБОТАЕТ.
По моему примеру ваша программа не работает. (размерность 5*5)
23 Ноя 2011 в 12:10
Ссылка “Программа решения систем линейных уравнений методом Крамера на Delphi с полными исходными кодами (BDS 2006)” работает. Пробуйте скачать еще раз.
23 Ноя 2011 в 15:05
admin, “Такого файла не существует или он был удален из-за нарушения авторских прав. “.
Попробуйте закинуть программку в другой файлообменник!
Очень срочно надо!
20 Март 2012 в 10:08
всем привет, ссылка на Крамера не работает(( не могли бы помочь, если кто то успел скачать, залить на другой файлообменник, надо очень
20 Март 2012 в 16:36
перезалил, пользуйтесь
03 Апр 2012 в 9:45
Молодцы, спасибо за матриал!
07 Апр 2012 в 21:13
Спасибо! Жаль, что не в виде юнита, пришлось переделывать, но всё равно спасибо, лень было реализовывать метод решения СЛАУ на дельфи для проверки одной штуки. Респект автору, может юнит будет тоже полезен, может автор тоже переделает код, либо отметит ссылки на юнит либо класс.
09 Апр 2012 в 15:42
а ты можешь юнит прямо сюда выложить в комментарии?
28 Май 2012 в 10:16
А как вписать по умолчанию свои коефициенты??
опишите пожалуйста схему)