2014 dxdy logo

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

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


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3  След.
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 07:04 


18/09/21
1685
vpb в сообщении #1537204 писал(а):
Вы взяли матрицу с элементами $\lambda_{ij}=51-|i-j|$, да ?
Да. Взято для проверки работоспособности (не важно, какие там рациональные числа). Никакого глубокого смысла тут нет. Предполагается, что ТС сюда вставит свою матрицу.
Евгений Машеров в сообщении #1537192 писал(а):
Всё замечательно, но считать через характеристический многочлен - не самый точный способ...
В общем случае да (если считать приближенно через числа с плавающей точкой). В случае ТС, если использовать символьные вычисления (как это делает Maxima), то сам многочлен будет абсолютно точен. А уж искать корни многочлена с целыми коэффициентами очень легко с любой точностью. ТС упоминал, что точность важна, но не написал о примерном порядке. Здесь можно получить спектр с любой точностью (в практических пределах), хоть 100 десятичных знаков.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 07:11 
Заслуженный участник


18/01/15
3110
zykov в сообщении #1537205 писал(а):
Взято для проверки работоспособности (не важно, какие там рациональные числа)
Нет. Такой тест проверяет не работоспособность программы, а правильность её формального написания. А это существенно разные вещи. Ваша программа формально правильна, а фактически неработоспособна. Для проверки работоспособности можете взять тот тест, который я предложил.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 07:36 


18/09/21
1685
vpb в сообщении #1537206 писал(а):
Такой тест проверяет не работоспособность программы, а правильность её формального написания
Боюсь, не вижу причин для такого странного утверждения. Там совершенно не важно, какие рациональные числа стоят в матрице.
Вот прогнал вашу матрицу:
Используется синтаксис Text
m: genmatrix(lambda([i,j], (1+abs(i-j))^(-2)), n, n);

Вот её спектр с точностью 25 десятичных знаков (могу и 100 знаков дать, если надо):
Код:
6.45171160318028198592124b-1
6.458831200656652284330236b-1
6.470720303669286325873533b-1
6.487412956685580868370221b-1
6.508958737012136426184717b-1
6.535419251926757229090185b-1
6.566874675858464933506263b-1
6.603415203858068234057661b-1
6.645154323239113984235085b-1
6.692212605920331236994043b-1
6.744740555511478316467155b-1
6.802891763563998433504928b-1
6.866858632357615308554659b-1
6.936831405222135856629578b-1
7.013050709755362620478293b-1
7.09574825631577380122504b-1
7.185221033421130501517574b-1
7.281748486318186800125885b-1
7.385694410596802926432993b-1
7.497394078429108543437276b-1
7.617291543819830435587833b-1
7.74578833462349265451877b-1
7.883426192690293779935474b-1
8.030686378696253280526082b-1
8.188231113005154436311896b-1
8.35663891359211431157174b-1
8.536722634089700679906785b-1
8.729181044059196435209551b-1
8.935018113649682989884977b-1
9.155083389177231999707279b-1
9.390627271621322161906184b-1
9.642691187895846030700249b-1
9.912849166624298959515991b-1
1.020239081145894176169545b0
1.051332431211300002627372b0
1.084726610919897538353381b0
1.120682187088424919685225b0
1.15940473815122573917094b0
1.201239676074432101011821b0
1.246453045913704571827655b0
1.29551566857675757825802b0
1.348779093600930040755181b0
1.406909680407312753447938b0
1.470383544308682560874245b0
1.540195891687304458003764b0
1.61700894088595936503678b0
1.702439682319068012094779b0
1.797420187067563730937935b0
1.905020977936741408516063b0
2.026300962075795186373192b0
2.170435052924737379634229b0

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 08:00 
Заслуженный участник


18/01/15
3110
zykov в сообщении #1537208 писал(а):
от прогнал вашу матрицу:
Это не моя матрица. В моей $a_{ij}=1/(1+(i-1)+51(j-1))$.

-- 01.11.2021, 07:05 --

Было же написано:
vpb в сообщении #1537204 писал(а):
Попробуйте что-нибудь другое ... ну , например, обратные величины чисел от $1$ до $51^2$, расположенные в естественном порядке (как в книжке).
то есть в первой строке $1/1, 1/2, \ldots, 1/51$, во второй $1/52,1/53,\ldots,1/102$, и т.д. И вплоть до $1/51^2$ в правом нижнем углу. По-моему, всё ясно было написано.

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


11/03/08
9581
Москва
Говорят, некогда адмирал Крылов уволил начальника верфи за то, что инженеры у него вели расчёты с двумя знаками больше, чем требовалось. Может быть, определиться сперва, какая точность нужна?
Безусловно, рациональная арифметика позволит посчитать характеристический многочлен абсолютно точно. Но вот корни у него уже рациональными числами, вообще говоря, не будут. И вычислены будут с некоторой погрешностью. И мне отчего-то кажется, что погрешность результата будет обусловлена не погрешностью вычисления корней, а погрешностью исходных данных. Так что характеристический многочлен, вычисленный в целых числах и расчёт корней до 100 знаков могут оказаться не особо полезными.
В общем, хорошо бы что-то узнать о задаче, исходя из этого, выработать требования к точности ("абсолютной точности", в принципе достижимой для СЛАУ, тут абсолютно точно не будет), и, возможно, окажется, что вполне хватает самых стандартных пакетов. А для перестраховки - повторить расчёт, используя, кроме обычной "двойной", одинарную и расширенную точность. Если разница результатов окажется меньше желаемой точности - значит, пользоваться стандартными методами.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 09:10 


18/09/21
1685
Евгений Машеров
Да, для инженерных рассчётов такая точность обычно не требуется. Но иногда надо точно проанализировать какой-то математический объект. Для этого символьные вычисления подходят лучше. Для этого и сделаны символьные мат. пакеты.
ТС сразу написал, что матрица содержит точные рациональные значения. Похоже скорее на какой-то математический анализ, чем на инженерное приложение.

Вот у меня недавно была похожая задача. Матрица вероятностей для Марковского процесса - это была матрица с точными рациональными значениями. И нужно было проанализировать - найти поточнее наибольшие собственные значения под единицей. Там правда размер поменьше, где-то 10-20. Но в принципе могло бы быть и 50.

-- 01.11.2021, 09:23 --

vpb в сообщении #1537209 писал(а):
Это не моя матрица. В моей $a_{ij}=1/(1+(i-1)+51(j-1))$.
В теме речь про симметричную матрицу, а эта не симметричная.
Впрочем характеристический многочлен считается точно так же. Вышел довольно большой - 330кб.
Но корни уже не обязаны быть действительными.
Поискал его корни функцией 'realroots'. Она ищет только действительные корни действительного многочлена методом Штурма (подробнее смотри первый том трёхтомника Кострикина "Введение в алгебру").
Нашлись 51 действительных корей.
Вот спектр этой матрицы (25 десятичных знаков):
Код:
1.512731216738014950319543b-123
4.53819365021404485095863b-123
1.858844119127672770952655b-119
7.613825511946947669822074b-116
3.118622929693469765559121b-112
6.386939760012226079865081b-109
1.308045262850503901156369b-105
2.678876698317831989568243b-102
5.486339478154919914635761b-99
5.618011625630637992587019b-96
5.752843904645773304409108b-93
5.890912158357271863714926b-90
6.032294050157846388444085b-87
6.177069107361634701766743b-84
6.325318765938313934609144b-81
3.238563208160416734519882b-78
1.65814436257813336807418b-75
1.69793982728000856890796b-72
8.693451915673643872808755b-70
4.451047380824905662878082b-67
2.278936258982351699393578b-64
5.83407682299482035044756b-62
2.987047333373348019429151b-59
1.529368234687154185947725b-56
3.915182680799114716026176b-54
1.002286766284573367302701b-51
5.13170824337701564058983b-49
1.313717310304516003990996b-46
3.363116314379560970216951b-44
8.609577764811676083755395b-42
1.102025953895894538720691b-39
2.821186441973490019124968b-37
7.222237291452134448959917b-35
9.244463733058732094668694b-33
2.366582715663035416235186b-30
3.029225876048685332781038b-28
3.877409121342317225959728b-26
6.022908835151732757657445b-24
7.559655316910404484879484b-22
8.740861476817885319961403b-20
9.261708027974116779448735b-18
8.952658552087665242183209b-16
7.850867160151621343301122b-14
6.202194631245282786396207b-12
4.37447022135205048141473b-10
2.721585236815438334292548b-8
1.469852491479289212081521b-6
6.690265552902578670173314b-5
2.542681093656581059281802b-3
6.315664480832848582426907b-2
1.020162845136022105312749b0

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 09:33 
Заслуженный участник
Аватара пользователя


11/03/08
9581
Москва
Ну так в любом случае как только ставится задача нахождения собственных чисел, корней некоего многочлена, рациональность куда-то убегает. И даже выписать выражение с радикалами, говорят, нельзя... А численно - тут вопрос о точности важен, но решаем. Скажем, если для нас принципиально, что максимальное собственное значение меньше единицы, мы его вычислили, меньше, но не в силу ошибки ли? - вполне можно оценить ошибку и придти к выводу, что с учётом ошибки всё равно меньше.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 09:47 


18/09/21
1685
Евгений Машеров
Да, точно корни многочлена не выразить обычно. Даже через радикалы.
Но, как я писал выше, если есть точный многочлен с целыми коэффициентами, то задача найти его корни приближенно - это уже элементарно. Хоть методом Ньютона можно быстро найти хоть 100, хоть 1000 знаков.

Или вот для примера возьмите матрицу 51x51 которую привёл vpb.
Ради любопытства в Octave её забил - просто численные методы с double float.
Там функция 'eigs' (help: "This function is based on the ARPACK package") ерунду выдаёт.
Максимальное значение около 1, но отличается во втором знаке после запятой.
Второе значение 5e-4 вместо нужного 6e-2.
В хвосте идут степени 1e-19 - 1e-23, что совсем не похоже на правильный результат.

А вот символьные вычисления в Maxima выдали все 51 собственных значений с заказанной точностью (25 знаков).

-- 01.11.2021, 10:02 --

vpb в сообщении #1537204 писал(а):
Для несимметрических же матриц ситуация совершенно другая, их с.з. считать гораздо труднее.
Если имеется эффективный метод для симметричных матриц, то для несимметричной можно провести Polar decomposition - $A=UP$.
Сначала нужно найти собственные значения матрицы $A^* A$, которые равны квадратам модулей собственных значений исходной матрицы (что уже даёт модули собственных значений исходной матрицы).
Потом матрицу $P=(A^* A)^{1/2}$. Потом матрицу $U=A P^{-1}$.

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


11/03/08
9581
Москва
Не работает. Простой связи с.з. исходной матрицы с собственными значениями матрицы $A^TA$ нет, увы. Для симметричной есть, а для несимметричной нет.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 12:29 


18/09/21
1685
Да, поспешил.
Там, про полярное разложение, другое утверждается.
В разделе "Relation to the SVD" получается спектральное разложение, если матрица нормальная.
Матрица будет нормальной, если она например самосопряженная, но не только.

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


11/03/08
9581
Москва
Так сингулярные числа ищут. Которые иногда связаны простым образом с собственными, а чаще нет.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 14:18 


18/09/21
1685
Евгений Машеров в сообщении #1537225 писал(а):
Ради любопытства в Octave её забил - просто численные методы с double float.
Там функция 'eigs' (help: "This function is based on the ARPACK package") ерунду выдаёт.
Максимальное значение около 1, но отличается во втором знаке после запятой.
Второе значение 5e-4 вместо нужного 6e-2.
В хвосте идут степени 1e-19 - 1e-23, что совсем не похоже на правильный результат.
Нет, тут я напутал, зачем-то в квадрат возвёл.
В начале нормально идёт 1.0202, 0.0632, 0.00254 и т.д.
Первые 10 более менее совпадают (до 1e-16), правда в 10ом большая ошибка уже.
А в хвосте идёт 1e-19, 1e-20, что совсем далеко от правильных.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 15:08 
Заслуженный участник


18/01/15
3110
zykov в сообщении #1537214 писал(а):
В теме речь про симметричную матрицу, а эта не симметричная.
Верно. Извиняюсь за невнимательность.

В целом, вполне возможно, что я был неправ, утверждая, что в данной ситуации Максима не сработает. Но окончательно признавать, что был неправ, пока не стану. Есть еще некоторые соображения, кои надо обдумать. В общем, возможно, что и для матрицы, нужной ТС, тоже сработает. Но всё равно, это чересчур уж заковыристый путь. Тут отлично работает и обычный.

 Профиль  
                  
 
 Re: Собственные числа матрицы
Сообщение01.11.2021, 15:18 


18/09/21
1685
Зависит от пока нераскрытых требований.
ТС писал, что точность важна. Но вопрос насколько и какого порядка.
Этот путь через полностью точный характеристический многочлен гарантирует точность. Причём при необходимости может дать довольно много точных цифр.

-- 01.11.2021, 15:21 --

vpb в сообщении #1537258 писал(а):
Тут отлично работает и обычный.
Который из них?
Просто численные методы на double float могут и не очень хорошо работать. Опять же, зависит от требований.

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


11/03/08
9581
Москва
zykov в сообщении #1537249 писал(а):
А в хвосте идёт 1e-19, 1e-20, что совсем далеко от правильных.


А вот тут надо смотреть, какая точность вычислений. Возможно, double, и попросту вышли на машинную погрешность. И надо что-то использовать поточнее, ну хоть extended. Или вообще длинную "немашинную" арифметику.

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

Модераторы: Модераторы Математики, Супермодераторы



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

Сейчас этот форум просматривают: QuantumCoder


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

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