Помощь - Поиск - Пользователи - Календарь
Полная версия: помогите, задача по матрицам
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
denhpi
AX=В A[1..4, 1..4] B[1..4,1..1] найти Х=
и сделать блок схему
DarkWishmaster
Цитата(denhpi @ 27.06.2011 10:50) *

AX=В A[1..4, 1..4] B[1..4,1..1] найти Х=
и сделать блок схему

A-1*A*X=A-1*B
X=A-1*B
Для нахождение обратной матрицы думаю в паскале проще всего сделать так:

A-1=1/|A| *
(A11 A21 ... An1)
(A12 A22 ... An2)
( . . . . . . . . . . .)
(A1n A2n ... Ann)
Lapp
Влад, поясни, пожалуйста, вот эту часть:
Цитата(DarkWishmaster @ 27.06.2011 12:30) *
Для нахождение обратной матрицы думаю в паскале проще всего сделать так:

A-1=1/|A| *
(A11 A21 ... An1)
(A12 A22 ... An2)
( . . . . . . . . . . .)
(A1n A2n ... Ann)

Что ты имел в виду?
TarasBer
Наверное, матрицу, составленную из определителей подматриц. И всё это делить на определитель внешней матрицы.

Только что-то это алгоритмическая сложность n^5 получается таким методом.
А вот метод Гаусса пишется очень просто и очень быстро.
Lapp
Цитата(TarasBer @ 27.06.2011 13:09) *
Наверное, матрицу, составленную из определителей подматриц.
А ты имел в виду, по-видимому, алгебраические дополнения.. ))
Тарас, я знаю, что ты знаешь. Вопрос был не к тебе, а к DarkWishMaster'у. Мне показалось, что он не вполне понимает, что пишет.

Цитата
И всё это делить на определитель внешней матрицы.
Ну, деление-то там как раз есть..
DarkWishmaster
Цитата(Lapp @ 27.06.2011 12:02) *

Влад, поясни, пожалуйста, вот эту часть:

Что ты имел в виду?


Aij это минор, т.е стираем i линию и j столбик и находим определитель.
А методом Гаусса на листке бумаги не трудно вычислить а вот в паскале не знаю как.
Нельзя же Паскаля заставить думать что лучше умножить на 3 первую строку и потом из неё вычесть вторую строку и так далее.

"А вот метод Гаусса пишется очень просто и очень быстро." - напиши пожалуйста )
Почему сложность n^5? определитель для матрицы ранга 3 можно легко формулой найти а ранга 4 уже немного сложнее, но всё равно не понимаю почему n^5.
TarasBer
> Нельзя же Паскаля заставить думать что лучше умножить на 3 первую строку и потом из неё вычесть вторую строку и так далее

Ты не можешь написать процедуру, которая умножает все элементы массива на одно число?
Ты не можешь написать процедуру, которая вычитает два массива?

> Почему сложность n^5? определитель для матрицы ранга 3 можно легко формулой найти а ранга 4 уже немного сложнее,

Давай, как ты это будешь делать? Перебирать все цепочки? А для ранга 5 какая формула у тебя выйдет? Так это уже O(n!) будет ваще.

> но всё равно не понимаю почему n^5.

Потому что для матрицы ранга n одним из самых простых методов определитель ищется за O(n^3), хотя есть способы и быстрее, конечно.
И ты ищешь n^2 таких определителей.
DarkWishmaster
Цитата(TarasBer @ 27.06.2011 14:50) *

> Нельзя же Паскаля заставить думать что лучше умножить на 3 первую строку и потом из неё вычесть вторую строку и так далее

Ты не можешь написать процедуру, которая умножает все элементы массива на одно число?
Ты не можешь написать процедуру, которая вычитает два массива?

> Почему сложность n^5? определитель для матрицы ранга 3 можно легко формулой найти а ранга 4 уже немного сложнее,

Давай, как ты это будешь делать? Перебирать все цепочки? А для ранга 5 какая формула у тебя выйдет? Так это уже O(n!) будет ваще.

> но всё равно не понимаю почему n^5.

Потому что для матрицы ранга n одним из самых простых методов определитель ищется за O(n^3), хотя есть способы и быстрее, конечно.
И ты ищешь n^2 таких определителей.

Просто в задаче дан размер матрицы, и поэтому не надо вычислять определитель ранга 5.
TarasBer
Это только сейчас не надо вычислять для размера 5х5. А потом может понадобиться.
Krjuger
Цитата
Нельзя же Паскаля заставить думать что лучше умножить на 3 первую строку и потом из неё вычесть вторую строку и так далее.

На самом деле можно)))Прочитай про метод Гаусса с частичным выбором и с полным выбором по всей матрице.То ,что ты на глаз ищещ строчки которые вот так вот божественно сокращаются при умножении делении на какое то число,это лишь заслуга тех,кто для тебя эту матрицу составлял,а в решении более реальных задач,такие финты часто не прокатывают и с бумажкой ты будеш решать до скончания веков.А метод Гаусса работает вполне систематизированно.
denhpi
а может кнонибудь написать алгоритм по методу Гауса???
Lapp
Цитата(denhpi @ 27.06.2011 21:03) *
а может кнонибудь написать алгоритм по методу Гауса???

А в FAQ заглянуть в лом?
Решение систем
TarasBer
В ЧАВО почему-то циклы FOR сделаны через REPEAT, странно написано.
Lapp
Цитата(TarasBer @ 28.06.2011 10:21) *
В ЧАВО почему-то циклы FOR сделаны через REPEAT, странно написано.

Я точно не знаю и могу ошибаться, но в свое время бытовало мнение, что реализация for (в TP, думаю) медленная, и быстрее делать через repeat. Думаю, потому Олег так и сделал..
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.