Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Математика _ Проблема с вычислением обратной матрицы

Автор: vly67 11.07.2007 20:55

Необходимо решить систему нелинейных уравнений. Я это делаю через метод Ньютона, в процессе вычисляя обратную матрицу.
Я вычисляю обратную матрицу Lu методом, приведением матрицы к верхнетреугольной. На этом месте получается затык потому, что на главной диагонали получаются нули или очень малые значения. Эта матрица имеет решение, но нужны какие-то методы, чтобы обойти этот ступор.
Ранее , на этомфоруме, я встречал совет прибавлять к строке, в которой на главной диагонали образовался ноль, все нижестоящие - это неверный путь. Таким образом не находятся даже обратные матрицы, которые без труда вычислялись. Я просто суммировал 2 произвольные строки. В прямой матрице также делал эту операцию (и не делал тоже), при перемножении прямой и обратной матриц единичной не получалось.
Может кто знает как решить эту проблему?

Автор: Evyn 11.07.2007 21:28

у меня есть чтото в конспекте похожее , к примеру

2 3 11 5 | 2
1 1 5 2 | 1
2 1 3 2 | -3
1 1 3 1 | -3

и от левой верхней части диагональ к низу

Автор: vly67 11.07.2007 21:35

Цитата(Evyn @ 11.07.2007 23:28) *

у меня есть чтото в конспекте похожее , к примеру

2 3 11 5 | 2
1 1 5 2 | 1
2 1 3 2 | -3
1 1 3 1 | -3

и от левой верхней части диагональ к низу


Не совсем вас понял. Ваша матрица имеет обратную и она легко вычисляется.

Автор: Tan 11.07.2007 21:39

Может есть смысл прикрепить задание? Возможно есть вариант более простого решения.

Автор: Гость 11.07.2007 21:46

Цитата(Tan @ 11.07.2007 17:39) *

Может есть смысл прикрепить задание? Возможно есть вариант более простого решения.


Матрица огромна и задание сюда не войдёт. Я дам вам вот эту матрицу ,у неё таже болезнь - она в прямом решении не имеет обратной матрицы

1 2 3 4
5 6 7 8
9 10 11 1
1 1 1 2

Автор: Evyn 12.07.2007 17:37

Не знаю , говорим ли мы про одно и тоже. У меня пример такой:
{ 2X(1)+3X(2)+11X(3)+5X(4)=2
{ X(1)+X(2)+5X(3)+2X(4)=1
{ 2X(1)+X(2)+3X(3)+2X(4)=-3
{ X(1)+X(2)+3X(3)+4X(4)=-3

Исходя из системы уравнений создается матрица ~


Автор: willhunting 13.07.2007 14:38

Цитата(vly67 @ 11.07.2007 17:55) *

Необходимо решить систему нелинейных уравнений. Я это делаю через метод Ньютона, в процессе вычисляя обратную матрицу.
Я вычисляю обратную матрицу Lu методом, приведением матрицы к верхнетреугольной. На этом месте получается затык потому, что на главной диагонали получаются нули или очень малые значения. Эта матрица имеет решение, но нужны какие-то методы, чтобы обойти этот ступор.
Ранее , на этомфоруме, я встречал совет прибавлять к строке, в которой на главной диагонали образовался ноль, все нижестоящие - это неверный путь. Таким образом не находятся даже обратные матрицы, которые без труда вычислялись. Я просто суммировал 2 произвольные строки. В прямой матрице также делал эту операцию (и не делал тоже), при перемножении прямой и обратной матриц единичной не получалось.
Может кто знает как решить эту проблему?

Метод Гаусса(LU) -- самый плохой метод. Попробуй с выбором главного элемента(NPU). Да методов много, вот запрограммировать их сложнее.

Автор: Evyn 15.07.2007 13:40

Весьма полезный ресурс
http://matclub.ru/lec1/

Автор: vly67 16.07.2007 18:21

ПРоблема в сингулярности матрицы, т.е. система имеет множество решений (детерминант матрицы равен нулю). Пока не найду путей обхода этого. Возможно и есть какие-то выходы , путём добавление в систему уравнений фиктивных переменных , а потом вычисление и основных.
Я вот экпериментировал, посмотрите. что вышло
Есть система уравнеий
x1+ 2*x2 +3*x3 + 4*x4 = 30
5*x1+ 6*x2 +7*x3 + 8*x4 = 70
9*x1+ 10*x2 +11*x3 + 1*x4 = 66
x1+ 1*x2 +1*x3 + 2*x4 = 14

Вектор свободных членов V={30,70,66,14}
матрица D=
1 2 3 4
5 6 7 8
9 10 11 1
1 1 1 2

детерминант det(D) =0,
но система имеет решения при x1=1, x2=2, x3=3, x4=4, а также при
x1=-2, x2=8, x3=0, x4=4, и при многих других.
ПРи введении фиктивного члена x5=1 система приобретает вид
x1+ 2*x2 +3*x3 + 4*x4 +x5= 31
5*x1+ 6*x2 +7*x3 + 8*x4 +x5= 71
9*x1+ 10*x2 +11*x3 + 1*x4 +x5= 67
x1+ 1*x2 +1*x3 + 2*x4 +x5= 15
x2+x5 = 3
Матрица D1=
1 2 3 4 1
5 6 7 8 1
9 10 11 1 1
1 1 1 2 1
0 1 0 0 1
детерминант det(D1) =-88,
и система имеет одно решение при x1=1, x2=2, x3=3, x4=4, x5=1
Но мне нужно работать с огромным массивом чисел, и понять как вводить фиктивную переменную и сколько их нужно для единственного решения - это я не могу пока.


Автор: Гость 17.07.2007 0:04

Цитата(vly67 @ 16.07.2007 14:21) *

ПРоблема в сингулярности матрицы, т.е. система имеет множество решений (детерминант матрицы равен нулю). Пока не найду путей обхода этого. Возможно и есть какие-то выходы , путём добавление в систему уравнений фиктивных переменных , а потом вычисление и основных.
Я вот экпериментировал, посмотрите. что вышло
Есть система уравнеий
x1+ 2*x2 +3*x3 + 4*x4 = 30
5*x1+ 6*x2 +7*x3 + 8*x4 = 70
9*x1+ 10*x2 +11*x3 + 1*x4 = 66
x1+ 1*x2 +1*x3 + 2*x4 = 14

Вектор свободных членов V={30,70,66,14}
матрица D=
1 2 3 4
5 6 7 8
9 10 11 1
1 1 1 2

детерминант det(D) =0,
но система имеет решения при x1=1, x2=2, x3=3, x4=4, а также при
x1=-2, x2=8, x3=0, x4=4, и при многих других.
ПРи введении фиктивного члена x5=1 система приобретает вид
x1+ 2*x2 +3*x3 + 4*x4 +x5= 31
5*x1+ 6*x2 +7*x3 + 8*x4 +x5= 71
9*x1+ 10*x2 +11*x3 + 1*x4 +x5= 67
x1+ 1*x2 +1*x3 + 2*x4 +x5= 15
x2+x5 = 3
Матрица D1=
1 2 3 4 1
5 6 7 8 1
9 10 11 1 1
1 1 1 2 1
0 1 0 0 1
детерминант det(D1) =-88,
и система имеет одно решение при x1=1, x2=2, x3=3, x4=4, x5=1
Но мне нужно работать с огромным массивом чисел, и понять как вводить фиктивную переменную и сколько их нужно для единственного решения - это я не могу пока.

Что-то такое детерминант матрицы ?
Если определитель матрицы равен нулю, то обратной матрицы не существует.
Если система имеет множество решений, то система имеет множество решений. smile.gif С этим ничего не поделаешь. vly67, ты же вроде решаешь методом Ньютона ? Вычисление обратной матрицы есть на форуме. Да сам метод есть у меня. Ты хоть расскажи, что надо сделать, как и каким методом.


Автор: vly67 18.07.2007 15:23

Цитата(Гость @ 17.07.2007 2:04) *

Что-то такое детерминант матрицы ?
Если определитель матрицы равен нулю, то обратной матрицы не существует.
Если система имеет множество решений, то система имеет множество решений. smile.gif С этим ничего не поделаешь. vly67, ты же вроде решаешь методом Ньютона ? Вычисление обратной матрицы есть на форуме. Да сам метод есть у меня. Ты хоть расскажи, что надо сделать, как и каким методом.


Ты вообще мало что понял из того , что я изложил.Если сказать точнее - ты вообще ничего не понял. В общем это пустая трата времени.

Автор: willhunting 18.07.2007 15:50

Цитата(vly67 @ 18.07.2007 12:23) *

Ты вообще мало что понял из того , что я изложил.Если сказать точнее - ты вообще ничего не понял. В общем это пустая трата времени.

Предыдущий пост гостя – мой.
Удачи.