Этот код представляет собой своего рода интерполяцию / подгонку квадратичной кривой по трем двумерным точкам вместе со способом вычисления минимального или максимального значения такой подобранной квадратики в самом интервале.Я предполагаю, что TRII обозначает тройную (точечная) -интерполяция, а TRIM обозначает тройной (точечный) минимум или максимум.
Чтобы быть более точным, TRII решает задачу: - найти квадратичную кривую, которая проходит через точки (x1, y1), (x2, y2) и (x3, y3) в форме Y = A + B X + C X ^ 2 и вычислите значение Y квадратичного в точке XR и вернитесь как YR.Это в основном способ плавной интерполяции между тремя 2d точками.Он часто используется для нахождения лучшего приближения для максимального или минимального значения набора дискретных точек данных.
Все, что нужно для D, D1, D2, D3 - это решить матричное уравнение:
(1 X1 X1 ^ 2) * (A) = (Y1)
(1 X2 X2 ^ 2) * (B) = (Y2)
(1 X3 X3 ^ 2) * (C) = (Y3)
с использованием правила Крамерса, как упомянуто в одном из других комментариев, D - определитель матрицы, а D1, D2, D3 - кофакторы.
TRIMснова вычисляет квадратичный Y = A + B X + C X ^ 2 и затем находит max / min этого квадратичного (XM, YM).Это делается путем первоначального нахождения точки, в которой квадратик имеет поворотный момент: если F (X) = A + B X + C X ^ 2, F '(XR) = B + 2 * C *XR = 0 или XR = -B / 2 * C, YR = A + B XR + C XR ^ 2.Тогда существует некоторая логика, чтобы заставить возвращаемые значения XM, YM min или max лежать в определенных пределах.
Код:
XM = XR.,,IF (YM.LT.Y (1)) YM = Y (1)
Немного странно, поскольку, если мы предположим, что GT и LT означают больше и меньше соответственно, тогда мы должны предположить, что X3 '<'X1 в противном случае условие (XR.GT.X (1) .OR.XR.LT.X (3)) является тривиальным, а XM, YM установлены на X1, Y1. </p>
Так что X3' <'X1 и условие говорит о том, что если квадратичное значение max / min находится за пределами интервала (X1, X3), тогда установите (XM, YM) на (X1, Y1), как и раньше.Если нет, то если Y1 выше минимального / максимального значения в Y, тогда снова установите (XM, YM) на (X1, Y1). </p>
Трудно понять, что это значит, и я подозреваю, что код может бытьнеправильно!Есть мысли?
Иван