2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Matlab, ошибка при вычислении собственных значений
Сообщение30.10.2007, 10:00 


14/02/07
9
Мне знакомый подкинул 7х7 матрицу

A=[289 2064 336 128 80 32 16;
1152 30 1312 512 288 128 32;
-29 -2000 756 384 1008 224 48;
512 128 640 0 640 512 128;
1053 2256 -504 -384 -756 800 208;
-287 -16 1712 -128 1968 -30 2032;
-2176 -287 -1565 -512 -541 -1152 -289;],

и говорит - посчитай ее собственные значения.

Matlab мне выдал следующие собственные числа этой матрицы:
6.4949
3.9735 + 4.2593i
3.9735 - 4.2593i
-1.4468 + 5.2847i
-1.4468 - 5.2847i
-5.7742 + 2.2902i
-5.7742 - 2.2902i
У транспонированной матрицы A' выдал совсем другие числа:
8.1933
5.0474 + 5.7946i
5.0474 - 5.7946i
-1.8464 + 7.1605i
-1.8464 - 7.1605i
-7.2976 + 3.1393i
-7.2976 - 3.1393i
Между тем Maple выдает следующие: 0, 1, 2, 4, -4, -2, -1. У транспонированной матрицы выдает такие же, т.е. Maple скорее всего правильно посчитал.

В чем здесь подвох? Может ли кто объяснить?

 Профиль  
                  
 
 
Сообщение30.10.2007, 13:08 
Экс-модератор
Аватара пользователя


23/12/05
12047
pim писал(а):
Между тем Maple выдает следующие: 0, 1, 2, 4, -4, -2, -1. У транспонированной матрицы выдает такие же, т.е. Maple скорее всего правильно посчитал.

А откуда уверенность, что совпадение собственных значений для Вашей матрицы и транспонированной указывает на правильность вычисления? Матрица-то у Вас не эрмитова.

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


01/03/06
13626
Москва
photon писал(а):
А откуда уверенность, что совпадение собственных значений для Вашей матрицы и транспонированной указывает на правильность вычисления? Матрица-то у Вас не эрмитова.
Это совпадение следует из того, что определитель выдерживает транспонирование, поэтому и вековое уравнение не меняется от транспонирования матрицы. Так что несовпадение собственных чисел при транспонировании гарантированно говорит об ошибке, а вот совпадение собственных чисел при транспонировании о правильности вычислений ещё не сообщает, но несколько укрепляет веру в их правильность :D

 Профиль  
                  
 
 
Сообщение30.10.2007, 13:46 
Экс-модератор
Аватара пользователя


23/12/05
12047
Хм, какая-то плохая матрица: у MatLAB получилось, что
$|A|\neq|A^T|$ :shock:

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


01/03/06
13626
Москва
Вот ссылочка: http://ru.wikipedia.org/wiki/%D0%9E%D0% ... 0%BB%D1%8C (свойство 1 определителя), так что я не виноват!

 Профиль  
                  
 
 
Сообщение30.10.2007, 13:57 
Экс-модератор
Аватара пользователя


23/12/05
12047
Это я помню, потому и сделал такие глаза...

Это ж как надо считать определитель, чтобы настолько промахнуться с результатом, там же умножай и складывай?.. Может, конечно, получались разности очень больших чисел и были потеряны последние знаки мантиссы - в MatLAB число учитываемых знаков меньше, чем для Maple, и если предположение о наличии таких "невкусных" разностей верно, то, действительно, скорее следует доверять Maple

 Профиль  
                  
 
 
Сообщение30.10.2007, 14:47 


29/05/06
92
ИМХО, ничего странного: исходная матрица - плохо обусловлена (см. cond(A)). Matlab считает численно (double), Maple - аналитически (по возможности). В данном случае верить следует Maple.

 Профиль  
                  
 
 
Сообщение30.10.2007, 21:47 


14/02/07
9
alexrey036 писал(а):
ИМХО, ничего странного: исходная матрица - плохо обусловлена (см. cond(A)). Matlab считает численно (double), Maple - аналитически (по возможности). В данном случае верить следует Maple.


Да действительно, матрица плохо обусловлена. Спасибо. Число обусловленности ~ 10^16. Похоже, что в процессе вычислений отбрасываются почти все значащие цифры.

Maple тоже не справился, когда я сменил тип данных с целого на double - выдал еще какую-то белиберду. Т.е. для плохо обусловленных матриц нет алгоритмов что ли? или их просто нет в этих софтинах? Может кто знает, где есть?

Мой приятель, кстати, сказал мне в чем дело - любое число на комплексной плоскости из круга с центром в нуле, радиуса примерно 7 будет собственным значением этой матрицы с точночтью ~ 10^-16. Такой пример он в какой-то книжке увидел, в какой не помню.

 Профиль  
                  
 
 
Сообщение01.11.2007, 12:36 


07/08/07
97
pim писал(а):
Т.е. для плохо обусловленных матриц нет алгоритмов что ли? или их просто нет в этих софтинах? Может кто знает, где есть?

Для плохо обусловленных есть методы. Но они считают приближенно. Так что как раз этот круг и получишь.

 Профиль  
                  
 
 
Сообщение03.12.2007, 17:49 


12/11/07
6
to Firarika


Цитата:
Для плохо обусловленных есть методы.


А какие, например?

 Профиль  
                  
 
 
Сообщение12.01.2008, 11:05 


14/02/07
9
alexrey036 писал(а):
ИМХО, ничего странного: исходная матрица - плохо обусловлена (см. cond(A)). Matlab считает численно (double), Maple - аналитически (по возможности). В данном случае верить следует Maple.



Я тут вот, что подумал. У матрицы с нулевым определителем вообще число обусловленности равно бесконечности, но считаются же собственные значения.

Вот пример, взял тоже матрицу 7-го порядка:
A=100*[1 2 3 4 5 6 7;
8 9 10 11 12 13 14;
15 16 17 18 19 20 21;
22 23 24 25 26 27 28;
29 30 31 32 33 34 35;
36 37 38 39 40 41 42;
43 44 45 46 47 48 49]

число обусловленности: cond(A)=2.891276623261116e+017. Но соб. числа и matlab и maple считают одинаково. Вот такие

18251.7103723488
-751.7103723488
0.00000000000000
0.00000000000000
-0.00000000000000
0.00000000000000
-0.00000000000000

Значит не в обусловленности дело, хотя конечно она много чего портит. А в чем тогда?

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


17/10/05
3709
:evil:
pim писал(а):
У матрицы с нулевым определителем вообще число обусловленности равно бесконечности, но считаются же собственные значения.

Я не знаток Mathlab, так что прошу заранее извинить.

(1) Если я правильно понял, речь идёт о матрице $a_{j,k}=\frac{(j-1)*7+k}{100}$. Вы, видимо, имели в виду не 100, а 1/100.

(2) Я не очень понимаю, откуда взялось
pim писал(а):
Да действительно, матрица плохо обусловлена. Число обусловленности ~ 10^16.

pim писал(а):
cond(A)=2.891276623261116e+017


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

(3) Кое что можно найти здесь.

 Профиль  
                  
 
 
Сообщение13.01.2008, 17:16 


14/02/07
9
незваный гость писал(а):
Я не знаток Mathlab, так что прошу заранее извинить.

(1) Если я правильно понял, речь идёт о матрице $a_{j,k}=\frac{(j-1)*7+k}{100}$. Вы, видимо, имели в виду не 100, а 1/100.


Нет-нет, речь идет именно с умножением на 100. Просто попытался примерно подобрать матрицу похожую на первую, по величине элементов и чтоб det(A)=0.
Кстати, у первой матрицы определитель 0, а если прибегнуть к матлабу, то он и здесь дает ошибку: говорит, что det(A)=69542.

незваный гость писал(а):
(2) Я не очень понимаю, откуда взялось ...


Конечно вы правы, число обусловленности равно бесконечности, просто привел, то что матлаб выдает (сингулярные числа вроде нормально считает для этой матрицы)

незваный гость писал(а):
(3) Кое что можно найти здесь.


Указанная там процедура balance(A) резултата не дала.

Так что пока ничего не ясно.
Книгу ту, кстати, нашел, откуда этот пример взят, автор Годунов С.К., который своими разностными схемами знаменит. Пойду почитаю

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


17/10/05
3709
:evil:
pim писал(а):
Нет-нет, речь идет именно с умножением на 100

Тогда приведённые Вами собственные числа слетели на 4 порядка.

 Профиль  
                  
 
 
Сообщение14.01.2008, 06:55 


14/02/07
9
незваный гость писал(а):
Тогда приведённые Вами собственные числа слетели на 4 порядка.


Спасибо. Уже исправил.

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

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



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

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


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

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