Нахождение точного рационального решения линейных целочисленных уравнений в Matlab
У меня есть линейная система уравнений A*x=b, где A - матрица NxN с целочисленными значениями, а b - вектор Nx1 с целочисленными значениями. Благодаря предшествующим знаниям я знаю, что мне гарантировано, что существует ровно одно рациональное решение x, такое что x=A^{-1}b (а также тот факт, что A имеет полный ранг).
Сейчас я ищу алгоритм в Matlab (или любом другом языке, который я могу переписать в Matlab), который обеспечивает точное рациональное решение этой проблемы для заданных A и b, например, в виде x=r/s*t, где r и s - скалярные целые числа, а t - вектор целых чисел Nx1, или в форме x=r./s, где r и s - целочисленные векторы Nx1.
Я попытался [r,s]=rat(A\b), который работает для достаточно простых случаев, но быстро приводит к проблемам с округлением (ier / s только приближается к x, но мне нужно точное решение). Использование символьных расчетов работ; Тем не менее, я должен скомпилировать программу в автономном режиме, и Matlab Compiler не поддерживает Symbolic Toolbox, насколько я знаю и насколько я пытался.
Некоторые характеристики: N должно быть не менее 100 или выше. Значения в A могут стать довольно большими, так что я уже сейчас использую int64. Я понимаю, что в один прекрасный момент я столкнусь с числовыми проблемами, и мне достаточно отложить подобные проблемы как можно дольше (я благодарен за любое решение, даже если оно работает только для меньшего N). Тем не менее, мне нужно точное решение, и я предпочитаю сообщение об ошибке над любым приближением, независимо от того, насколько хорошо. Время выполнения алгоритма является второстепенным, и это нормально, если ему требуется час или около того для N=100 (однако, более эффективный плюс).