2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 03:21 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Это всё-таки не MatLab, а надстройка. Поскольку он тьюринг-полный, на нём, конечно, можно что угодно написать, вплоть до пакета символьных вычислений. Но не называть же это возможностью самого MatLab-а.

Даже "Mat" в MatLab означает не "математику", а "матрицы", и поэтому пишется не через th.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 04:54 
Экс-модератор
Аватара пользователя


23/12/05
12064
Я Вам скажу, что и без symbolic toolbox Matlab может выполнять символьные операции. Если Вы не в курсе, то лучше не пытайтесь спорить.

Munin в сообщении #602585 писал(а):
Даже "Mat" в MatLab означает не "математику", а "матрицы", и поэтому пишется не через th.

Для меня это давно не новость

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 09:12 
Заслуженный участник


11/05/08
32166
Munin в сообщении #602495 писал(а):
Ошибка возникает из-за всех операций с числами: и сложения, и умножения, и деления. Кстати, от сложения и вычитания - прежде всего.

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

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 12:27 
Заслуженный участник
Аватара пользователя


30/01/06
72407
photon в сообщении #602591 писал(а):
Я Вам скажу, что и без symbolic toolbox Matlab может выполнять символьные операции.

Отлично. Верю. Дайте ссылку.

Я ж доверчивый. Даёте ссылку не на то - ну я её и воспринимаю по содержанию.

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

Действительно. Целочисленность я пропустил как-то. Но в общем случае - вызывают.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 13:28 
Экс-модератор
Аватара пользователя


23/12/05
12064
Munin в сообщении #602688 писал(а):
Отлично. Верю. Дайте ссылку.

Я ж доверчивый. Даёте ссылку не на то - ну я её и воспринимаю по содержанию.

Устанавливать тулбокс все равно надо, а использовать можно без него (в смысле, не через него). Например, вычисление обратной матрицы.

Если Вы имели в виду это, то да, соглашусь - надстройка нужна. Ну так какой язык ни возьми - есть какие-то библиотеки и т.п.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 13:54 
Заслуженный участник


11/05/08
32166
photon в сообщении #602707 писал(а):
Устанавливать тулбокс все равно надо, а использовать можно без него (в смысле, не через него).

Устанавливать как раз не надо (в том смысле, что он вроде как по умолчанию сам устанавливается, если специально не постараться). Но: если для символьных вычислений необходимо установить тулбокс, то в каком смысле возможны символьные вычисления не через него?...

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 13:58 
Экс-модератор
Аватара пользователя


23/12/05
12064
ewert в сообщении #602719 писал(а):
то в каком смысле возможны символьные вычисления не через него?...

Можно не открывая сам тулбокс пользоваться его функциями. Та же функция inv() прекрасно отработает в ваших скриптах или в командной строке, но при наличии установленного тулбокса.

Что же касается "по умолчанию", то вот на работе у меня нет его - в рамках той лицензии, которая имеется, его нет.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 14:49 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Продемонстрируйте, пожалуйста, как работает символическое вычисление определителя, так, чтобы топикстартер смог у себя воспроизвести (полагая, что тулбокс он установил). И посмотрим, получится ли у него ноль или e-16.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 15:00 
Заслуженный участник


11/05/08
32166
Ну, должен получиться ноль; иначе какие ж эти вычисления символьные. Тем более с такой маленькой матрицей -- уж тут-то переполнений рациональной арифметики в принципе не может возникнуть.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 15:02 
Экс-модератор
Аватара пользователя


23/12/05
12064
Munin в сообщении #602734 писал(а):
Продемонстрируйте, пожалуйста, как работает символическое вычисление определителя, так, чтобы топикстартер смог у себя воспроизвести (полагая, что тулбокс он установил). И посмотрим, получится ли у него ноль или e-16.

Вот с этим сложнее. У меня на работе не установлен symbolic toolbox и при этом выдает в ответе $0$.

Код:
A=[1 2 3; 4 5 6; 7 8 9]
A =
     1     2     3
     4     5     6
     7     8     9
>> det(A)
ans =
     0

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 15:54 
Заслуженный участник


11/05/08
32166
photon в сообщении #602736 писал(а):
У меня на работе не установлен symbolic toolbox и при этом выдает в ответе $0$.

Хм, а я с самого начала не обратил внимания на саму матрицу. Возможно, что от версии к версии менялись алгоритмы вычисления определителя. Например, в методе Гаусса можно делить ведущую строку на ведущий элемент, а можно этого не делать и умножать нижние строчки на соответствующие отношения. Для данной конкретной матрицы, по идее, во втором случае погрешность должна оказаться нулевой, а в первом -- нет. Или ещё вариант: в какой-то момент разработчики могли решить, что для матриц маленького размера выгоднее считать определитель всё-таки по минорам. Или правила опознания числа как целого внутри самого Матлаба могли измениться (он может при этом учитывать содержимое двух скрытых байтов, а может и не учитывать). Или, наконец, это может зависеть просто от различия процессоров -- правила или техника округлений может оказаться немного различной. В общем, тут остаётся только гадать.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение03.08.2012, 16:01 
Экс-модератор
Аватара пользователя


23/12/05
12064
Для определенности уточню, что у меня релиз R2007a.

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение06.08.2012, 09:08 


08/02/12
86
У меня R2012a

 Профиль  
                  
 
 Re: Определитель матрицы в MatLab
Сообщение06.08.2012, 13:31 
Заслуженный участник


11/05/08
32166
Хм, а у меня R2009b, и тоже выдаёт ноль. Хотя хэлп уверяет, что детерминант считается с помощью LU-разложения матрицы (на самом деле PLU-разложения) и потом перемножения детерминантов сомножителей. Врёт хэлп: если в лоб вызвать это разложение, то детерминант верхнетреугольного сомножителя вот как раз 6.6613e-16 и выдаёт, а непосредственно det -- всё-таки ноль. Впрочем, хэлп там много чего врёт. Например, он обещает возможность обращений вида [L,U]=lu(A), [L,U,P]=lu(A), [L,U,P,Q]=lu(A) и ещё других, на самом же деле срабатывают только первые два, а на третье уже жалуется "шибко много выходных аргументов".

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

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



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

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


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

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