Форум: "Игры";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
ВнизРешение СЛАУ методом Гаусса Найти похожие ветки
← →
Motion © (2005-05-02 18:28) [0]Рассчитывая полином по МНК, получил СЛАУ, которое необходимо решить за Гауссом(для произвольной матрицы). Объясните, для начала как решить математически, а потом как это реализовать с помощью Delphi
← →
begin...end © (2005-05-02 18:34) [1]> Motion © (02.05.05 18:28)
Итак, начнём. Как бы Вы решали такую систему?
2x + 3y = 8
4x - 5y = -6
← →
Motion © (2005-05-02 18:35) [2]Поделил первую строку на 2 и отнял бы от 2-ой
← →
Motion © (2005-05-02 18:36) [3]Точнее умножил бы на 2 и отнял бы от 2-ой :)
← →
Antonn © (2005-05-02 18:40) [4]--------------
2x = 8 - 3y;
--------------
x = (8 - 3y) / 2
--------------
(4(8 - 3y)/ 2) - 5y = -6
--------------
2(8 - 3y) - 5y = -6
--------------
16 - 6y - 5y = -6
--------------
-11y = -22
--------------
y = 2
--------------
x = (8 - 3*2) / 2
--------------
x = 1
--------------
Правильно? :)
← →
Motion © (2005-05-02 18:42) [5]Да
← →
begin...end © (2005-05-02 18:43) [6]> Motion © (02.05.05 18:36) [3]
OK. А такую?
2x + 3y + 4z = 20
4x + 5y + 2z = 20
3x - 2y + 5z = 14
← →
Motion © (2005-05-02 18:43) [7]Момент, сейчас решу
← →
Motion © (2005-05-02 18:47) [8]Не знаю :( Пытаюсь привести к треугольному виду - ничего не получается.
← →
begin...end © (2005-05-02 18:58) [9]> Motion © (02.05.05 18:47) [8]
Не может быть. В системе [6] вычтете из второго уравнения первое, умноженное на 2, а из третьего -- первое, умноженное на 3/2. Сообщите о том, какая система получилась.
← →
Antonn © (2005-05-02 19:00) [10]2 3 4 | 20
4 5 2 | 20
3 -2 5 | 14
-------------
2 3 4 | 20
0 0.5 3 | 10
3 -2 5 | 14
-------------
2 3 4 | 20
0 0.5 3 | 10
0 0 4,25 | 13,5
-------------
z = 13.5/4.25
-------------
y = (10 - (13.5/4.25)*3 )*2
-------------
x = ( 20 - ((10 - (13.5/4.25)*3 )*2)*3 - (13.5/4.25)*4 )*2
← →
Motion © (2005-05-02 19:03) [11]0 - y - 6z = -20
4x + 6y + 8z = 40
-x - 9y + (15/2-8) = -19
← →
Motion © (2005-05-02 19:07) [12]Что-то я не так делаю...
← →
begin...end © (2005-05-02 19:07) [13]> Motion © (02.05.05 19:03) [11]
Повторяю: из второго уравнения вычесть первое, умноженное на 2, а из третьего уравнения вычесть певрое, умноженное на 3/2.
← →
Motion © (2005-05-02 19:08) [14]А какое правило вычитания строк?
← →
Antonn © (2005-05-02 19:09) [15]Я вам не мешаю? :)
← →
Motion © (2005-05-02 19:10) [16]Да нет, если по теме :)
← →
Motion © (2005-05-02 19:12) [17]Умножаю первую строку на 2 и вычитаю из 2-ой?
← →
begin...end © (2005-05-02 19:13) [18]> Antonn © (02.05.05 19:09) [15]
Нет.
> Motion © (02.05.05 19:12) [17]
Да.
← →
Motion © (2005-05-02 19:14) [19]Если просто умножаю =>
4 6 8 40
4 5 2 20
3 -2 5 14
← →
Motion © (2005-05-02 19:14) [20]Если просто умножаю =>
4 6 8 40
4 5 2 20
3 -2 5 14
← →
Motion © (2005-05-02 19:16) [21]Потом от 2-ой отнимаю первую...то есть во второй пишу результат, а первую так и оставляю?...
4 6 8 40
0 -1 -6 -20
3 -2 5 14
← →
begin...end © (2005-05-02 19:16) [22]> Motion © (02.05.05 19:14) [20]
Вот и хорошо. А теперь нужно вычесть первую строку этой системы из второй: 4 - 4 = 0, 5 - 6 = -1, и т.д.
← →
Motion © (2005-05-02 19:17) [23]Я просто ровняюсь на решение Antonn ©, у него получается -
2 3 4 | 20
0 0.5 3 | 10
3 -2 5 | 14
← →
begin...end © (2005-05-02 19:18) [24]> Motion © (02.05.05 19:16) [21]
Вторую строку Вы преобразовали верно. А теперь восстановите первую строку, как было.
← →
Motion © (2005-05-02 19:18) [25]А, он потом 1-у и 2-у строку на 2 поделил...:) Я не заметил сначала
← →
Motion © (2005-05-02 19:21) [26]2 3 4 20
0 -1 -6 -20
3 -2 5 14
← →
Motion © (2005-05-02 19:21) [27]То есть делю 1-ну на 2
← →
begin...end © (2005-05-02 19:23) [28]> Motion © (02.05.05 19:21) [26]
Хорошо, но первую и не надо было менять. Нужно было из второй вычесть первую, умноженную на 2, из полученный результат записать на место второй строки. А первая такая же и осталась.
ОК, едем дальше. Теперь приступим к третьей строке: из неё нужно вычесть первую, умноженную на 3/2.
← →
Motion © (2005-05-02 19:26) [29]А первая должна была остаться в первоначальном виде или умноженая на 2?
← →
begin...end © (2005-05-02 19:27) [30]> Motion © (02.05.05 19:26) [29]
Первая должна остаться в первоначальном виде. Просто мы её в уме умножили на 2 и вычли её из второй.
← →
Motion © (2005-05-02 19:28) [31]Такое получилось:
3 4.5 6 30
0 -1 -6 -20
0 -6.5 -1 -16
← →
Motion © (2005-05-02 19:30) [32]А точнее:
2 3 4 20
0 -1 -6 -20
0 -6.5 -1 -16
← →
palva © (2005-05-02 19:30) [33]Извините, что вклиниваюсь, но у меня вопрос
> Рассчитывая полином по МНК, получил СЛАУ
Обычно МНК приводят к симметрической, положительно определенной матрице, которую естественнее решать методом Холецкого. Если матрица не такая, то вопрос снят, а если уравнение можно решать по Холецкому, то почему выбран Гаусс?
← →
begin...end © (2005-05-02 19:30) [34]> Motion © (02.05.05 19:28) [31]
Только сама первая строка не должна была меняться. Восстановите её на первоначальную.
← →
Motion © (2005-05-02 19:31) [35]2 3 4 20
0 -1 -6 -20
0 -6.5 -1 -16
← →
begin...end © (2005-05-02 19:32) [36]> Motion © (02.05.05 19:30) [32]
Прекрасно. Теперь из третьей строки нужно вычесть вторую, умноженную на 6,5.
← →
Motion © (2005-05-02 19:34) [37]То palva © >>
Возможно, судите сами -
Задана функция таблично. Использую МНК - вычислить коэфициенты алгебраического полинома. Я написал программу, которая составляет нормальную СЛАУ в матричном виде. А теперь СЛАУ нужно решить.
← →
Motion © (2005-05-02 19:37) [38]Получил -
2 3 4 20
0 -1 -6 -20
0 0 38 114
← →
begin...end © (2005-05-02 19:38) [39]> Motion © (02.05.05 19:37) [38]
Замечательно. Можем ли мы теперь сказать, чему равен z?
← →
Motion © (2005-05-02 19:40) [40]z=3
y=2
x=1
← →
begin...end © (2005-05-02 19:41) [41]> Motion © (02.05.05 19:40) [40]
Я В Вас верю! Теперь постарайтесь описать алгоритм решения системы [6]. Что, из чего, и в какой последовательности мы вычитали?
← →
Motion © (2005-05-02 19:42) [42]Насколько я понял, нужно привести матрицу к триугольному виду...а можно ещё пример - для закрепления?
← →
begin...end © (2005-05-02 19:45) [43]> Motion © (02.05.05 19:42) [42]
ОК. Я пока подумаю над следующим примером, а Вы всё же постарайтесь сформулировать алгоритм приведения матрицы к треугольному виду. Когда сформулируете -- я сразу же дам следующий пример.
← →
Motion © (2005-05-02 19:45) [44]Хорошо, а алгоритм на Delphi?
← →
Antonn © (2005-05-02 19:48) [45]Motion © (02.05.05 19:45) [44]
:)
← →
Motion © (2005-05-02 19:51) [46]Алгоритм решения ЭТОЙ системы уравнения? То есть для частного случая?
← →
begin...end © (2005-05-02 19:54) [47]> Motion © (02.05.05 19:45) [44]
До "алгоритма на Delphi" -- увы, ещё очень далеко. Вначале нужно осознать, КАК нужно решать без Delphi. Чтобы потом сообщить этой самой Delphi, ЧТО она должна делать. Сама она, к сожалению, решать уравнения не умеет.
Так что жду попытки формулировки алгоритма.
> Motion © (02.05.05 19:51) [46]
Да, именно этой. Для системы трёх уравнений.
← →
Motion © (2005-05-02 19:59) [48]То есть что за чем я должен делать? Вначале мне нужно получить первый элемент во второй строке равным 0, для этого я умножаю строку 1 на 2 отнимаю от 2-ой
← →
begin...end © (2005-05-02 20:03) [49]> Motion © (02.05.05 19:59) [48]
> То есть что за чем я должен делать?
Именно так. Начало может быть таким:
1. Из второй строки вычитаем первую, умноженную на ...
2. ...
← →
Motion © (2005-05-02 20:06) [50]1. Из второй строки вычитаем первую, умноженую на...
2. Из третей строки отнимаем первую умноженую на...
Так?
← →
begin...end © (2005-05-02 20:09) [51]> Motion © (02.05.05 20:06) [50]
Только вместо "..." должны быть конкретные числа. А ещё лучше будет, если Вы сообразите, почему мы умножали строки именно на такие числа.
← →
Motion © (2005-05-02 20:12) [52]1. Из второй строки вычитаем первую, умноженую на 2
2. Из третей строки отнимаем первую умноженую на 6.5
Первую строку мы умножали на число, чтобы в первом столбце числа первой и второй строки совпали.
← →
Motion © (2005-05-02 20:17) [53]А потом первую строку мы умножаем на число, чтобы у нас совпали числа первого и второго столбца первой и третей строки.
← →
Motion © (2005-05-02 20:19) [54]И вычтем из 3-ей строки первую
← →
Motion © (2005-05-02 20:21) [55]Это и есть алгоритм?
← →
begin...end © (2005-05-02 20:24) [56]> Motion © (02.05.05 20:21) [55]
Это и есть алгоритм. Правда, пока что не всего решения, а только приведения к треугольному виду. Но и это уже очень неплохо.
Теперь даю обещанный примерчик:
4a + 9b + 2c + 7d = 122
2a + 3b + 4c + 5d = 76
2a - 3b + 4c - 5d = -8
5a - 4b - 3c - 2d = -61
← →
Antonn © (2005-05-02 20:25) [57]
> Первую строку мы умножали на число, чтобы в первом
> столбце числа первой и второй строки совпали.
что бы их разность равнялась нулю, таким образом, мы "убиваем" одну переменную.
← →
Motion © (2005-05-02 20:32) [58]Понял....решаю вторую систему...
← →
Motion © (2005-05-02 20:38) [59]Пока получил такое -
0 3 -6 -3 -30
0 6 0 10 84
0 -3.5 13 -10.5 41
5 -4 -3 -2 -61
← →
Motion © (2005-05-02 20:39) [60]А дальше нужно обнулить ещё 5 элементов...а как?
← →
begin...end © (2005-05-02 20:43) [61]> Motion © (02.05.05 20:38) [59]
Из всех строк, кроме первой, нужно вычесть первую строку, умноженную на... ну Вы знаете, какие числа.
После этого во всех строках, кроме первой, коэффициенты перед A станут равными нулю.
А первая строка останется такой же, какой и была.
Делаем...
← →
Motion © (2005-05-02 20:48) [62]Момент
← →
Motion © (2005-05-02 20:50) [63]То есть постоянно нужно оперировать с 1-ой строкой?
← →
begin...end © (2005-05-02 20:51) [64]> Motion © (02.05.05 20:50) [63]
Пока -- да.
← →
Motion © (2005-05-02 20:56) [65]0 3 -6 -3 -30
0 6 0 10 84
0 -3.5 13 -10.5 41
5 -4 -3 -2 -61
Чтобы обнулить -3.5 я умножаю 3-ю строку на 3, 1-ю на 3.5 и плюсую. В итоге получаю -
0 3 -6 -3 -30
0 6 0 10 84
0 0 18 -42 18
5 -4 -3 -2 -61
← →
Motion © (2005-05-02 21:01) [66]Далее первую умножаю на 4 а последнюю на 3 и плюсую
Получаю:
0 3 -6 -3 -30
0 6 0 10 84
0 0 18 -42 18
15 0 -33 -18 -303
← →
begin...end © (2005-05-02 21:02) [67]> Motion © (02.05.05 20:56) [65]
Не спешите.
> 0 3 -6 -3 -30
> 0 6 0 10 84
> 0 -3.5 13 -10.5 41
> 5 -4 -3 -2 -61
А четвёртую строку почему обидели? С ней поступаем так же, как и со второй и третьей.
← →
Motion © (2005-05-02 21:07) [68]Удалено модератором
Примечание: Нарушение пункта 10
← →
Motion © (2005-05-02 21:08) [69]Не знаю как дальше
← →
Motion © (2005-05-02 21:29) [70]На сегодня, я так понимаю, разговора больше не получится. Ладно, тогда зо завтра. Завтра утром буду здесь где-то в 9-00. Попытаюсь пока на бумаге решить.
Страницы: 1 2 вся ветка
Форум: "Игры";
Текущий архив: 2005.08.28;
Скачать: [xml.tar.bz2];
Память: 0.61 MB
Время: 0.036 c