![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
MxAxKxC |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
Помогите с данной задачей пожайлуста.
|
|||
|
||||
MxAxKxC |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
суть метода в том, что в результате преобразований данной нам матрицы, мы получаем матрицу, с диагональными элементами, которые являются собственными числами нашей исходной матрицы.
Вот примерный алгоритм: 1.В исходной симметрической матрице A(k)=A(0) выберается максимальный по модулю наддиагональный элемент. 2. Нужно найти ортогональную данной матрицу(U), чтобы элемент, выбранный нами в пункте 1 был равен 0. В качестве ортогональной матрицы выбирается матрица вращения, в которой элемент А[i,j]=-sin(a), угол а= 0.5*arctg((i*j)/(A[i,i]+A[j,j])), если А[ii]=A[jj], a=pi/4. элемент A[j,i]=sin(a);элемент A[i,i]=cos(a);элемент A[j,j]=cos(a), остальные элементы на главной диагонали равны 1, а все остальные элементы равны 0. 3.Находим матрицу A(k+1) по формуле: A(k+1)=U(транспонированную)(К)*A(k)*U(k). 4. Итерационный процесс останавливается когда достигается необходимая точность Е. То есть когда корень из суммы квадратов наддиагональных элементов матрицы А(К+1)будет меньше Е. Написал несколько функций: Это сообщение отредактировал(а) MxAxKxC - 8.12.2007, 17:35 |
|||
|
||||
MxAxKxC |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
так, осталось еще немного, нужно сделать условие остановки итерационного процесса.
вот что получилось пока:
Это сообщение отредактировал(а) MxAxKxC - 9.12.2007, 12:07 |
|||
|
||||
MxAxKxC |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
как я понимаю должен быть цикл, но как его запрограммировать незнаю...
вот собственно это надо как то в цикл запихнуть:
я думаю примерно условие выхода должно быть таким:
но у меня воид функции, незнаю как с ними цикл составить. ![]() Это сообщение отредактировал(а) MxAxKxC - 9.12.2007, 14:58 |
||||
|
|||||
MxAxKxC |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
Задача решена, спасибо всем, что поддержали морально
![]() Добавлено @ 21:47 вот код, если вдруг комунить понадобится Это сообщение отредактировал(а) MxAxKxC - 13.12.2007, 21:48 Присоединённый файл ( Кол-во скачиваний: 56 ) ![]() |
|||
|
||||
MxAxKxC |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 8.5.2007 Репутация: 1 Всего: 1 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |