Мы знаем, что симметрична и положительно определена. Мы знаем, что B ортогонально:
Вопрос: является ли симметричным и положительно определенным? Ответ: да.
Вопрос: Мог ли компьютер сказать нам это? Ответ: возможно.
Существуют ли системы символической алгебры (например, Mathematica), которые обрабатывают и распространяют известные факты о матрицах?
Изменить: Чтобы было ясно, я задаю этот вопрос о абстрактно определенных матриц. Т.е. у меня нет явных записей для и B , я просто знаю, что они обе являются матрицами и имеют определенные атрибуты, такие как симметричный, положительно определенный и т. Д ....
matrix
symbolic-computation
MRocklin
источник
источник
Ответы:
Изменить: теперь это в SymPy
Старый ответ, который показывает другую работу
Поэтому, посмотрев на это некоторое время, я нашел это.
Текущий ответ на мой конкретный вопрос: «Нет, в настоящее время нет системы, которая могла бы ответить на этот вопрос». Есть, однако, несколько вещей, которые кажутся близкими.
Во-первых, Мэтт Кнепли и Лагербер указали на работы Диего Фабрегата и Паоло Биентинези . Эта работа показывает как потенциальную важность, так и выполнимость этой проблемы. Это хорошее чтение. К сожалению, я не уверен точно, как работает его система или на что она способна (если кто-нибудь знает другие публичные материалы по этой теме, дайте мне знать).
Во-вторых, есть библиотека тензорной алгебры, написанная для Mathematica под названием xAct, которая обрабатывает симметрии и тому подобное символически. Он делает некоторые вещи очень хорошо, но не приспособлен к частному случаю линейной алгебры.
В-третьих, эти правила формально записаны в паре библиотек для Coq , автоматизированного помощника по доказательству теорем (Google находит для coq линейную / матричную алгебру, чтобы найти несколько). Это мощная система, которая, к сожалению, требует взаимодействия с человеком.
После разговора с некоторыми людьми , доказывающими теорему, они предлагают изучить логику программирования (например, Пролог, который Лагербаер также предложил) для такого рода вещей. Насколько мне известно, это еще не сделано - я могу поиграть с этим в будущем.
Обновление: я реализовал это с помощью системы Мод . Мой код размещен на github
источник
SymPy
сделать вывод об упрощении умножения и инверсии матриц?Некоторые вычисления символической матрицы (например, завершение блочной матрицы) могут быть выполнены с помощью пакета NCAlgebra http://www.math.ucsd.edu/~ncalg/ (который работает под управлением mathematica).
Bergman http://servus.math.su.se/bergman/ - это пакет на Лиспе с похожими возможностями.
Некоторые соответствующие документы:
http://math.ucsd.edu/~helton/osiris/COMPALG2000/ohRevisIJC.pdf
http://math.ucsd.edu/~thesis/thesis/dkronewitter/dkronewitter.pdf
http: // www. tandfonline.com/doi/abs/10.1080/00207170600882346
источник
CAS
2x2
3x3
Тогда возникает вопрос, а как насчет
N
размерной матрицы? Возможно, вы можете придумать индуктивную схему, в которойN-1 x N-1
предполагается, что for истинно, а затем построить новую блочную матрицу с общим размером,N x N
чтобы доказать, что она положительно определена и симметрична.Поэтому последний вопрос, из которых программного обеспечение лучше подходят для выполнения этой задачи (если таковые имеется), мой опыт был с
MATLAB/MuPad
иDerive
( до сих пор использует его) , и ни один из них обрабатывать векторы и матрицы очень хорошо.MATLAB
разбивает все на компоненты иDerive
может объявлять,Non-scalars
но не применяет к ним никаких правил упрощения.источник
Прошло довольно много времени с тех пор, как я последний раз использовал один из этих пакетов, но я подумал, что вы можете сделать это на таких языках, как Mathematica, с помощью утверждений. Нечто подобное Assert [A, Symmetric] говорит Mathematica, что A - симметричная матрица и так далее. В данный момент у меня нет доступа ни к одному из них, поэтому это нужно проверить.
источник
Assuming
вместоAssert
.Assuming
будет применять эти предположения при упрощении или интеграции выражения, но в документации не ясно, распространяются ли свойства матрицы. Я предполагаю, что такие свойства не переносятся с помощью символических вычислений.Клен 15 не может этого сделать. У него нет свойства «Ортогональный» для матриц (хотя у него есть Symmetric и PositiveDefinite).
источник
В Mathematica вы можете по крайней мере проверить эти свойства для конкретных матриц. Например, матрица,
A
как вы описали:Для матрицы
B
:Затем:
Матрица Mathematica и документация по линейной алгебре
источник