Wiemy, że jest symetryczny i pozytywnie określony. Wiemy, że jest ortogonalny:B.
Pytanie: czy symetryczny i pozytywnie określony? Odpowiedź: Tak
Pytanie: Czy komputer mógł nam to powiedzieć? Odpowiedź: Prawdopodobnie.
Czy istnieją jakieś symboliczne systemy algebry (takie jak Mathematica), które obsługują i propagują znane fakty dotyczące macierzy?
Edycja: Dla jasności zadaję to pytanie dotyczące abstrakcyjnie zdefiniowanych matryc. Tzn. Nie mam wyraźnych wpisów dla i B , po prostu wiem, że są to zarówno macierze, jak i szczególne atrybuty, takie jak symetryczny, pozytywnie określony itp.
matrix
symbolic-computation
MRocklin
źródło
źródło
Odpowiedzi:
Edycja: teraz jest w SymPy
Starsza odpowiedź, która pokazuje inną pracę
Po dłuższej analizie to właśnie znalazłem.
Aktualna odpowiedź na moje konkretne pytanie brzmi: „Nie, nie ma obecnego systemu, który mógłby odpowiedzieć na to pytanie”. Jest jednak kilka rzeczy, które wydają się zbliżać.
Po pierwsze, Matt Knepley i Lagerbaer wskazali na prace Diego Fabregata i Paolo Bientinesi . Ta praca pokazuje zarówno potencjalne znaczenie, jak i wykonalność tego problemu. To dobra lektura. Niestety nie jestem pewien, jak dokładnie działa jego system ani do czego jest on zdolny (jeśli ktoś zna inne publiczne materiały na ten temat, daj mi znać).
Po drugie, istnieje biblioteka algebry tensorowej napisana dla Mathematica o nazwie xAct, która obsługuje symetrie i takie symbolicznie. Robi niektóre rzeczy bardzo dobrze, ale nie jest dostosowany do specjalnego przypadku algebry liniowej.
Po trzecie, reguły te są formalnie zapisane w kilku bibliotekach dla Coq , zautomatyzowanego asystenta dowodzenia twierdzeń (Google szuka algebry liniowej / macierzowej coq, aby znaleźć kilka). To potężny system, który niestety wydaje się wymagać interakcji człowieka.
Po rozmowie z niektórymi ludźmi dowodzącymi twierdzeniami sugerują przyjrzenie się programowaniu logicznemu (tj. Prologowi, który również sugerował Lagerbaer) dla tego rodzaju rzeczy. O ile mi wiadomo, nie zostało to jeszcze zrobione - mogę się z tym bawić w przyszłości.
Aktualizacja: Zaimplementowałem to za pomocą systemu Maude . Mój kod jest hostowany na github
źródło
Niektóre obliczenia macierzy symbolicznej (np. Uzupełnianie macierzy blokowej) można wykonać za pomocą pakietu NCAlgebra http://www.math.ucsd.edu/~ncalg/ (działającego pod matematyką).
Bergman http://servus.math.su.se/bergman/ to pakiet w Lisp o podobnych możliwościach.
Niektóre istotne dokumenty:
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
źródło
CAS
2x2
3x3
Powstaje zatem pytanie, a co z
N
macierzą wymiarową? Może uda ci się wymyślić schemat indukcyjny, w którymN-1 x N-1
zakłada się, że for jest prawdą, a następnie skonstruować nową macierz blokową o całkowitym rozmiarze,N x N
aby udowodnić, że jest ona pozytywnie określona i symetryczna.Więc ostatnie pytanie, które oprogramowanie lepiej nadaje się do tego zadania (jeśli w ogóle), moje doświadczenie było z (
MATLAB/MuPad
iDerive
nadal go używa) i żadne z nich nie radzi sobie dobrze z wektorami i macierzami.MATLAB
dzieli wszystko na komponenty iDerive
może deklarować,Non-scalars
ale nie stosuje wobec nich żadnych zasad uproszczenia.źródło
Minęło trochę czasu, odkąd ostatni raz użyłem jednego z tych pakietów, ale pomyślałem, że możesz to zrobić w językach takich jak Mathematica, używając asercji. Coś w rodzaju Assert [A, Symmetric] mówi Mathematica, że A jest macierzą symetryczną i tak dalej. W tej chwili nie mam dostępu do żadnej przydatnej opcji, więc należy to sprawdzić.
źródło
Assuming
zamiastAssert
.Assuming
zastosuje te założenia podczas uproszczenia lub integracji wyrażenia, ale w dokumentacji nie jest jasne, czy właściwości macierzy są propagowane. Domyślam się, że takie właściwości nie są przenoszone przez obliczenia symboliczne.Klon 15 nie może tego zrobić. Nie ma właściwości „Ortogonalne” dla macierzy (chociaż ma Symmetric i PositiveDefinite).
źródło
W Mathematica możesz przynajmniej sprawdzić te właściwości dla określonych matryc. Na przykład macierz,
A
jak opisano:Dla matrycy
B
:Następnie:
Matryce matematyczne i dokumentacja algebry liniowej
źródło