2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2, 3  След.
 
 О собственных значениях
Сообщение15.12.2006, 02:22 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
Вопрос.
Может сложиться такая ситуация?:
Ррешается полная проблема собственных значений.
Затем полученный результат проверяется на выполнение условиям, вытекающим из определения собственных значений.
Я знаю таких три:
а) сумма модулей всех собственных значений должна быть близкой сумме модулей диагональных элементов матрицы (не равна т.к. алгоритмы дают приближенный результат)
б) произведение модулей собственных значений - близко величине определителя матрицы
в) собственне значения должны удовлетворять характеристическому уравнению, т.е. равенству нулю определителя $\det \left( {A - \lambda E} \right) = 0$.

Для некоторых матриц у меня получается, что а) и б) выполняются с хорошой точностью, а последнее - в) вообще не выполняется (определитель не близок к нулю, а вообще огромное число).

 Профиль  
                  
 
 
Сообщение15.12.2006, 09:53 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Собственно, условие в есть один из вариантов определения собственных значений. Поэтому оно должно выполняться безусловно.

О матрицах какого порядка идет речь? Ошибка либо в вычислении сотственных значений, либо в вычислении определителя. Возможно, накапливается какая-то вычислительная погрешность. Попробуйте проверить вычисление собственных значений с помощью какого-нибудь математического пакета. Еще можно попробовать провести вычисления с маленькими матрицами, чтобы все можно было проверить вручную.

 Профиль  
                  
 
 
Сообщение15.12.2006, 11:29 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
Все, что Вы перечислили было проделано.
1) Сверял результаты с маткадом. Хорошо совпадает.
2) Проверял алгоритм на разных хороших матрицах, т.е. на небольших (проверяемых вручную) и больших, но хорошо обусловленных (все три условия выполняются).
3) Точно также проверял и определитель. Причем для расчета определителя у меня имеются два алгоритма.
4) Матрицы небольшие, но плохо обусловленные.
5) В правильности решения более или менее уверен.

При использовании алгоритма отыскания собственных значений к различным по размерности, но хорошо обусловленным матрицам получается, что условие в) выполняется все лучше с увелоичением размерности (0пределитель получается $\det (A - \lambda E) \simeq 10^{ - 30} $
и даже меньше).

 Профиль  
                  
 
 
Сообщение15.12.2006, 12:15 


02/05/06
56
1) Ничего не написали ни про размерность матриц, ни про число обусловленности, ни про спектр, а это, вообще говоря, существенно.
2) Можете найти собственные вектора и проверить качество того и другого.
3) Матрицу принято балансировать для вычислений (например для вычисления детерминанта)

 Профиль  
                  
 
 
Сообщение15.12.2006, 15:46 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
Матрицы размерностью не болле чем $1000 \times 1000$.
Спектр, как указано выше, удовлетворяет условиям а) и б), но не удовлетворяет в). И при этом он содержит комплексно значные числа. Но из постановки вопроса должно быть ясно, что всем этим расчетам я не доверяю, поэтому о числе обусловленности писать не буду (я пока считаю, что алгоритмы, которые я использую не позволяют его найти). Определитель (в нем я более уверен) очень мал. К примеру $\det \left( {A^{300 \times 300} } \right) = {\text{2}}{\text{,3}} \cdot {\text{10}}^{{\text{ - 531}}} $.
Comga писал(а):
2) Можете найти собственные вектора и проверить качество того и другого.

Что значит качество того и другого (не понял)?
Comga писал(а):

3) Матрицу принято балансировать для вычислений (например для вычисления детерминанта)

Что значит балансировать?

 Профиль  
                  
 
 
Сообщение15.12.2006, 16:03 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Так проверьте по заданной матрице и собственные вектора, и определитель (сравните с мат.пакетом). Что не совпадет, там значит и ошибка.

 Профиль  
                  
 
 
Сообщение15.12.2006, 21:38 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
А какой смысл мне искать собственные вектора для возможно неправильно посчитанных собственных значений?
С Mathcad мои расчеты совпадают и по спектру и по определителю исходной матрицы $A$.
Но условие $\det \left( {A - \lambda _i E} \right) = 0$ для некоторых $\lambda _i $ (не для всех, только для нескольких максимальных по модулю) нарушается (и в Mathcad и в моей программе для $\det \left( {A - \lambda _i E} \right)$ выдаются большие значения, причем эти значения не совпадают).

 Профиль  
                  
 
 
Сообщение15.12.2006, 22:04 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Т.е. Вы получаете, что Mathcad выдает в качестве собственного значения матрицы $A$ некоторое число $\lambda$, и он же выдает что $\det (A-\lambda E)$ большое число? Забавно.

 Профиль  
                  
 
 
Сообщение15.12.2006, 22:22 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
Так точно.
Использую для нахождения собственных значений в Mathcad процедуру eigenvals.
Это не так уж удивительно, бывало, что он (Mathcad) решал мне СЛАУ своими встроенными процедурами (lsolve в частности), а невязка получалась >100% (максимальная по модулю а не среднеквадратичная).

 Профиль  
                  
 
 
Сообщение15.12.2006, 23:42 
Заслуженный участник
Аватара пользователя


23/07/05
17973
Москва
Вероятно, это эффект ограниченной точности вычислений.

Вот забавный пример, показывающий неустойчивость больших корней алгебраического уравнения при малых изменениях уравнения (Mathematica 4.1):
$\mathbf{N[Solve[(x-1)(x-2)(x-3)(x-4)(x-5)(x-6)(x-7)(x-8)(x-9)}\\ \mathbf{(x-10)(x-11)(x-12)(x-13)(x-14)(x-15)(x-16)(x-17)(x-18)}\\ \mathbf{(x-19)(x-20)(x-21)(x-22)(x-23)(x-24)(x - 25)(x-26)(x-27)}\\ \mathbf{(x-28)(x-29)(x-30)(x-31)(x-32)+10^{-10}x^{30}==0,x],32]}$
$\{\{x\to 1.0000000000000000000000000000000\},\{x\to 2.0000000000000000000000000000000\},\\ \{x\to 3.0000000000000000000000000011643\},\{x\to 3.9999999999999999999999369757528\},\\ \{x\to 5.0000000000000000003563740703508\},\{x\to 5.9999999999999995431882789700103\},\\ \{x\to 7.0000000000002018194531903925218\},\{x\to 7.9999999999604120144505793703333\},\\ \{x\to 9.0000000040668704573265153740176\},\{x\to 9.9999997548285116609861286668699\},\\ \{x\to 11.000009412125009829985354941177\},\{x\to 11.999755752234634932515017125887\},\\ \{x\to 13.004553284959005167895987932308\},\{x\to 13.946540522513496405570270760926\},\\ \{x\to 15.123707811264094608818337034159-0.53711285777461487448822314708445i\},\\ \{x\to 15.123707811264094608818337034159+0.53711285777461487448822314708445i\},\\ \{x\to 16.622094130075808086747990926958-1.5456175599389122810029307442652i\},\\ \{x\to 16.622094130075808086747990926958+1.5456175599389122810029307442652i\},\\ \{x\to 18.364608131845854161643873898998-2.5642322226808945743950208315371i\},\\ \{x\to 18.364608131845854161643873898998+2.5642322226808945743950208315371i\},\\ \{x\to 20.423603500663870585088947020059-3.5122886056935141050178841917609i\},\\ \{x\to 20.423603500663870585088947020059+3.5122886056935141050178841917609i\},\\ \{x\to 22.845107881677431927305762648229-4.2498899092607344561408606754910i\},\\ \{x\to 22.845107881677431927305762648229+4.2498899092607344561408606754910i\},\\ \{x\to 25.605860880036052180282347387421-4.5617749317042816582931275571119i\},\\ \{x\to 25.605860880036052180282347387421+4.5617749317042816582931275571119i\},\\ \{x\to 28.522501899638564672144532643147-4.1874426798036444740315541566807i\},\\ \{x\to 28.522501899638564672144532643147+4.1874426798036444740315541566807i\},\\ \{x\to 31.161290603893327262854551185261-2.9576907519531275340494730588972i\},\\ \{x\to 31.161290603893327262854551185261+2.9576907519531275340494730588972i\},\\ \{x\to 32.855795795560925599249839965109-1.0445164385329707877790708850561i\},\\ \{x\to 32.855795795560925599249839965109+1.0445164385329707877790708850561i\}\}$
Здесь Вы можете видеть, что происходит с корнями, если коэффициенты уравнения подвергаются малому возмущению вследствие каких-либо причин (например, вследствие возникновения ошибки округления при вычислении коэффициентов).

 Профиль  
                  
 
 
Сообщение16.12.2006, 03:33 
Заслуженный участник


28/10/05
1368
Такие задачи делать с помощью Маthematica, MathCad или Maple -- лучше повеситься (основное предназначение у них не то). По-моему, MatLAB для этого дела больше подходит. В последний раз мы, я, сравнивали результаты собственных значений в Mathematica 5.1 и MatLAB для небольших матриц (поскольку часть результатов была получена в Мathematica, после чего переносилась в MatLAB). Приняла их удовлетворяющими критериям точности (можно сказать "на глаз", но результаты отличались уже в х знаке после запятой). Может стоить попробовать другой пакет, специально предназначенных для численных вычислений?

 Профиль  
                  
 
 
Сообщение16.12.2006, 08:10 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
LynxGAV писал(а):
Такие задачи делать с помощью Маthematica, … -- лучше повеситься

Mathematica делает ровно то, что написано. Если написать 100 знаков, сделает 100. Напишешь 1000 — сделает 1000. Но писать надо, признаю, аккуратно (и указывая accuracy в том числе :) ).

У меня не очень большой опыт с М., но то, что я видел — численные методы сделаны вполне приемлемо (не по скорости, но по качеству результата).

 Профиль  
                  
 
 
Сообщение16.12.2006, 11:17 


02/05/06
56
Fgolm писал(а):
Матрицы размерностью не болле чем $1000 \times 1000$.
Спектр, как указано выше, удовлетворяет условиям а) и б), но не удовлетворяет в). И при этом он содержит комплексно значные числа. Но из постановки вопроса должно быть ясно, что всем этим расчетам я не доверяю, поэтому о числе обусловленности писать не буду (я пока считаю, что алгоритмы, которые я использую не позволяют его найти). Определитель (в нем я более уверен) очень мал. К примеру $\det \left( {A^{300 \times 300} } \right) = {\text{2}}{\text{,3}} \cdot {\text{10}}^{{\text{ - 531}}} $.

Максимальное по модулю собственное число можно найти, используя прямую итерацию. Есть отдельные программы, вычисляющие число обусловленности. Если число обусловленности 10^N, то необходимо иметь минимум N разрядную арифметику, чтобы не было потерь из-за ограниченной точности вычислений. Было бы правильно выложить матрицу и результаты работы для всех.

Fgolm писал(а):
Comga писал(а):
2) Можете найти собственные вектора и проверить качество того и другого.

Что значит качество того и другого (не понял)?

Проверить A x=\lambda x

Fgolm писал(а):
Что значит балансировать?

Построчная нормализация элементов матрицы, например.

 Профиль  
                  
 
 
Сообщение16.12.2006, 14:38 
Заслуженный участник


28/10/05
1368
Резутаты MatLAB для уравнения Someone.
:shock:

Код:
-35.45034264785386 + 1.82671978774743i
-35.45034264785386 - 1.82671978774743i
-33.52469196167482 + 5.08710672034733i
-33.52469196167482 - 5.08710672034733i
-30.27702935506426 + 7.35018191359883i
-30.27702935506426 - 7.35018191359883i
-26.42684031787888 + 8.40778900672977i
-26.42684031787888 - 8.40778900672977i
-22.51127078798312 + 8.36886431583805i
-22.51127078798312 - 8.36886431583805i
-18.85383855580688 + 7.56990822316522i
-18.85383855580688 - 7.56990822316522i
-20.46688512805427 + 3.01367775813702i
-20.46688512805427 - 3.01367775813702i
-15.74220016403341 + 6.40974874424462i
-15.74220016403341 - 6.40974874424462i
-13.26718829787621 + 5.05841568691830i
-13.26718829787621 - 5.05841568691830i
-11.31548361243937 + 3.65349243871979i
-11.31548361243937 - 3.65349243871979i
-9.76756227283725 + 2.29764220011169i
-9.76756227283725 - 2.29764220011169i
-8.53212069262100 + 1.05076344556426i
-8.53212069262100 - 1.05076344556426i
-7.70895927435456                   
-7.02022107103860                   
-5.99991866849548                   
-4.99999348318864                   
-3.99999990625347                   
-3.00000000852557                   
-1.99999999989745                   
-1.00000000000040

 Профиль  
                  
 
 
Сообщение16.12.2006, 15:39 
Заслуженный участник
Аватара пользователя


31/10/06
371
РФ, РК, г.Симферополь
Если кому интересно предлагаю матрицу одной из СЛАУ о которых шла речь:
http://slil.ru/23583981
Здесь матрица размерностью 100*100 (ВСЕ ЭЛЕМЕНТЫ ЗАПИСАНЫ В ОДИН СТОЛБЕЦ, т.е. первые 100 чисел в файле - это элементы первой строки матрицы, вторая сотня - элементы соответственно второй строки матрицы и т.д.). Все диагональные элементы этой матрицы - единичные. Ее определитель (у меня так получилось) $\det \left( A \right) = {\text{ - 9}}{\text{,5}} \cdot {\text{10}}^{{\text{ - 52}}} $.

Собственные значения, которые я получаю:
http://slil.ru/23583969.
Здесь имеется 4 пары комплексно сопряженных.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу 1, 2, 3  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group