В настоящее время я работаю над внедрением прямого сокращения Matrix, и теперь оно проходит почти все мои тесты. Однако у меня проблема с округлением значений с плавающей точкой. Я уменьшаю ненулевые строки ниже элемента pivot, просто добавляя -1 * a [j, col] / a [i, col], где i = pivot, и j инициализируется в i + 1, итерируя вниз, пока все строки не будут сделано.
Однако скажите, что я хочу допуск 1e-10 для сравнений с плавающей запятой. Как я могу принудительно установить значения в [j, col] в ноль, если они превышают этот допуск?
В некоторых случаях у меня есть значения от 1e-14 до 1e-15, в моих тестовых случаях, которые должны быть равны нулю. Текущие случаи, которые я попробовал, показаны ниже, но это не сработало. Может кто-то указать мне верное направление? «
Это первый раз, когда я пытаюсь сравнить значения с плавающей запятой, которые я прочитал, может быть трудно, поэтому я надеюсь, что кто-то может помочь мне решить эту проблему, поскольку в настоящее время мое приложение останавливается до тех пор, пока оно не будет исправлено.
var tolerance = 1e-10;
if (a[j, lead] < a[j, lead]*tolerance) {
a[j, lead] = 0;
}