Извините, моя ошибка ...
Исходный код, приведенный в приведенной выше ссылке, оказывается неверным, по крайней мере, код Python, который я тестировал, и код C ++, который я преобразовал, не генерирует правильный ответ все время. (в то время как для примера в приведенной выше ссылке, результат правильный :) -)
Чтобы проверить код Python, просто замените mtx
на
[30,10,20,0],[60,20,40,0]
и возвращаемый результат будет выглядеть так:
[1,0,0,0],[0,1,2,0]
Тем не менее, у меня есть выход из этого. Именно в этот раз я преобразовал исходный код функции matalb rref
в C ++. Вы можете запустить matlab и использовать команду type rref
, чтобы получить исходный код rref
.
Просто обратите внимание, что если вы работаете с действительно большим или очень маленьким значением, обязательно используйте тип данных long double
в c ++. В противном случае результат будет усечен и не согласуется с результатом Matlab.
Я проводил большие симуляции в ns2, и все наблюдаемые результаты являются достоверными.
надеюсь, что это поможет вам и всем, кто столкнулся с проблемой ...