Документ взят из кэша поисковой машины. Адрес оригинального документа : http://wasp.phys.msu.ru/forum/index.php?showtopic=18742
Дата изменения: Unknown
Дата индексирования: Sun Apr 10 05:01:46 2016
Кодировка: Windows-1251
Как проверить, что матрица положительно определена - Студенческий форум Физфака МГУ
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Reply to this topicStart new topic
Как проверить, что матрица положительно определена
BettaRomeo
сообщение 18.11.2011, 16:01
Сообщение #1


уважаемый
******

Группа: Профи
Сообщений: 184
Репутация: 15

Предупреждения:
(0%) -----


Нужна помощь с кодом.

Есть много симметричных матриц вида
correlation(i,j)=
1............ 0,5......... 0,7......... 0,5......... 0,76
0,5......... 1............ 0,3......... 0,4......... 0,82
0,7......... 0,3......... 1............ 0,7......... 0,6
0,5......... 0,4......... 0,7......... 1............ 0,34
0,76....... 0,82....... 0,6......... 0,34....... 1
(простите за точки, но LATEX не работает что-то)
Размером от 1х1 (число=1) до 5x5.

Нужно сделать (в идеале на VBA, ибо остальной код - это макрос экселя.....)
проверку, является ли матрица положительно определенной.

Заранее спасибо.

Сообщение отредактировал BettaRomeo - 18.11.2011, 16:25
Прикрепленные файлы
Прикрепленный файл  matrix.JPG ( 11.59 килобайт ) Кол-во скачиваний: 5
 


--------------------
Совет стоматолога: Помните - ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью, как уважительное отношение к окружающим.
---
Незнание законов физики не освобождает от ответственности за их нарушение.
Go to the top of the page Вставить ник
+
novice
сообщение 18.11.2011, 17:36
Сообщение #2


уже не чужой
**

Группа: Участники
Сообщений: 22
Репутация: 2

Предупреждения:
(0%) -----


Может быть, попробовать критерий Сильвестра? В данном случае, раз матрицы максимально размером 5x5, то проблем с вычислением определителя по времени быть не должно (в худшем случае придется считать 5 определителей).

Сообщение отредактировал novice - 18.11.2011, 17:38
Go to the top of the page Вставить ник
+
Какоткин Р. В.
сообщение 18.11.2011, 18:03
Сообщение #3


...
***********

Группа: Элита
Сообщений: 2,145
Репутация: 42

Предупреждения:
(0%) -----


Для неотрицательно определенных матриц критерий действует только в одну сторону: если форма неотрицательно определена, то главные миноры неотрицательны. Обратное неверно.


--------------------
"Каждое достаточно большое множество чисел, точек или объектов обязательно содержит высоко упорядоченную структуру".
Фрэнк Пламптон Рамсей
---------------------------------------------------------------------------
'Simplex sigillum veri'
Go to the top of the page Вставить ник
+
novice
сообщение 18.11.2011, 23:04
Сообщение #4


уже не чужой
**

Группа: Участники
Сообщений: 22
Репутация: 2

Предупреждения:
(0%) -----


По критерию: квадратичная форма является положительно определенной тогда и только тогда, когда все угловые миноры ее матрицы положительны.
Ссылка на вики: http://ru.wikipedia.org/wiki/%D0%9A%D1%80%...%82%D1%80%D0%B0
А нужно ведь проверить, является ли матрица положительно определенной. Тогда нужно все угловые миноры проверить на положительность. Или нужно еще проверить, является ли матрица неотрицательно определенной?

Сообщение отредактировал novice - 18.11.2011, 23:05
Go to the top of the page Вставить ник
+
Какоткин Р. В.
сообщение 18.11.2011, 23:45
Сообщение #5


...
***********

Группа: Элита
Сообщений: 2,145
Репутация: 42

Предупреждения:
(0%) -----


Если какой либо из миноров равен нулю, то положительной определенности уже не будет.


--------------------
"Каждое достаточно большое множество чисел, точек или объектов обязательно содержит высоко упорядоченную структуру".
Фрэнк Пламптон Рамсей
---------------------------------------------------------------------------
'Simplex sigillum veri'
Go to the top of the page Вставить ник
+
novice
сообщение 19.11.2011, 17:53
Сообщение #6


уже не чужой
**

Группа: Участники
Сообщений: 22
Репутация: 2

Предупреждения:
(0%) -----



Цитата
Нужно сделать (в идеале на VBA, ибо остальной код - это макрос экселя.....)
проверку, является ли матрица положительно определенной.


Цитата
Если какой либо из миноров равен нулю, то положительной определенности уже не будет.


Проверяем все миноры подряд, начиная с меньшего. Если какой-то минор отрицательный или нулевой, то матрица не является положительно определенной. Например: у приведенной Вами матрицы миноры будут: 1, 0.75, 0.38, 0.1764, 0.0109072. Все положительные. Значит, матрица положительно определенная.

В чем проблема?
Go to the top of the page Вставить ник
+
Какоткин Р. В.
сообщение 19.11.2011, 19:15
Сообщение #7


...
***********

Группа: Элита
Сообщений: 2,145
Репутация: 42

Предупреждения:
(0%) -----


Смотрите первый пост.
Нужен код.


--------------------
"Каждое достаточно большое множество чисел, точек или объектов обязательно содержит высоко упорядоченную структуру".
Фрэнк Пламптон Рамсей
---------------------------------------------------------------------------
'Simplex sigillum veri'
Go to the top of the page Вставить ник
+
novice
сообщение 19.11.2011, 22:15
Сообщение #8


уже не чужой
**

Группа: Участники
Сообщений: 22
Репутация: 2

Предупреждения:
(0%) -----


Рад бы помочь, но не владею VBA. Так что кодом помочь не смогу.

P.S. Единственное, что могу добавить: в Excel 2010 есть функция "МОПРЕД(матрица в массиве)" (например: "=МОПРЕД(A1:E5)"), которая ищет определитель. Может это чем-нибудь поможет.

Сообщение отредактировал novice - 19.11.2011, 22:17
Go to the top of the page Вставить ник
+
BettaRomeo
сообщение 21.11.2011, 17:38
Сообщение #9


уважаемый
******

Группа: Профи
Сообщений: 184
Репутация: 15

Предупреждения:
(0%) -----


Переберем все левые верхние квадраты по возрастанию и найдем от них определители. Если определитель неположительный - сообщим ошибку.

Пусть
dimension - текущая размерность в цикле
ndim - максимальная размерность
i и j - номера строк и столбцов в матрице
cells(х,у) - взятие данных из ячейки excel из столбца х и строки у

Итак:

For dimension = 1 to ndim

For i = 1 to dimension
for j = 1 to dimension
correl(i,j) = Cells (i,j)
next j
next i

opredelitel=МОПРЕД (correl)
if opredelitel < 0 or opredelitel = 0 then
message box = "матрица определена неверно"
end if

next dimension

Если это математически правильно, то остается только правильно написать синтаксис.


--------------------
Совет стоматолога: Помните - ничто так не защищает ваши зубы 12 часов днем и 12 часов ночью, как уважительное отношение к окружающим.
---
Незнание законов физики не освобождает от ответственности за их нарушение.
Go to the top of the page Вставить ник
+

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 10.04.2016, 5:01