Разговорчики в строю
Jan. 9th, 2022 01:22 amИз найденных на диске исходных текстов стандартной математической библиотеки АЛГОЛА-60 (библиотечные процедуры хранились в текстовом виде, по-видимому, в силу каких-то особенностей автора системы, и в кодировке, в точности совпадающей с кодировкой перфокарт, т. е. с битом четности, что было довольно неочевидно при поиске интересностей во всех возможных кодировках), одна содержит довольно забавную диагностику об ошибке. Сейчас в такой манере вычислительные библиотеки с пользователями не общаются.
Необходимое примечание: Название процедуры ЛАГРАНЖ2 вряд ли имеет отношение к точке Лагранжа L2, по направлению к которой сейчас летит телескоп имени Уэбба.
_REAL _PRОCEDURE ЛАГРАНЖ2(A,Х,У,Х1,Х2,P,П,П1); _REAL Х1,Х2;_INTEGER P,П,П1;_ARRAУ A,Х,У; _BEGIN _REAL S,Z,Z1;_INTEGER I,J,J1,К; _ARRAУ S1[0:20]; _INTEGER Я,Я1; _IF Х2<A[1]_THEN _BEGIN Z:=Х2;_GО _TО М3;_END ; _IF Х1<Х[1]_THEN _BEGIN Z:=Х1;_GО _TО М3;_END ; S:=0;_FOR J1:=1_STEP 1_UNTIL П1_DО _IF Х2≥A[J1]∧Х2≤A[J1+1]_THEN _GО _TО М1;Z:=Х2;_GО _TО М2; М1:_FOR I:=1_STEP 1_UNTIL П_DО _IF Х1≥Х[I]∧Х1≤Х[I+1]_THEN _GО _TО М;Z:=Х1; _IF Х1≤Х[П]_THEN _GО _TО М; М2:_IF Х2≤A[П1]_THEN _GО _TО М; М3: ОUTPUT(‘T’,‘ПРИ ОБРАЩЕНИИ К ПРОЦЕДУРЕ ЛАГРАНЖ2 АРГУМЕНТ=’, ‘E’,Z,‘T’, ‘ВЫШЕЛ ЗА ПРЕДЕЛЫ ТАБЛИЦЫ. РАЗБЕРИСЬ В ЧЕМ ДЕЛО, А Я ПРЕРЫВАЮ СЧЕТ. ДО ВСТРЕЧИ!’); ОUTPUT(‘×’); S:=S/0; М:_IF I≤П-P_THEN J:=I_ELSE J:=П-P; _IF J1>П1-P_THEN J1:=П1-P; Я1:=J1; _FOR Я:= _STEP 1_UNTIL P_DО _BEGIN S:=0; _FOR I:=0_STEP 1_UNTIL P_DО _BEGIN Z:=Z1:=1; _FOR К:=0_STEP 1_UNTIL P_DО _BEGIN _IF К≠I_THEN Z:=Z×(Х1-Х[К+J])/(Х[I+J]-Х[К+J]); _END ; S:=S+У[I+J+(J1-1)×П]×Z;_END ; S1[Я]:=S;J1:=J1+1;_END ; S:=0; _FOR I:=0_STEP 1_UNTIL P_DО _BEGIN Z:=Z1:=1; _FOR К:=0_STEP 1_UNTIL P_DО _BEGIN _IF К≠I_THEN Z:=Z×(Х2-A[К+Я1])/(A[I+Я1]-A[К+Я1]); _END ; S:=S+S1[I]×Z;_END ; ЛАГРАНЖ2:=S; _END
Необходимое примечание: Название процедуры ЛАГРАНЖ2 вряд ли имеет отношение к точке Лагранжа L2, по направлению к которой сейчас летит телескоп имени Уэбба.
no subject
Date: 2022-01-09 09:50 am (UTC)no subject
Date: 2022-01-09 05:00 pm (UTC)no subject
Date: 2022-01-09 10:03 am (UTC)Вроде тут пробел должен быть вместо нуля.
no subject
Date: 2022-01-09 05:02 pm (UTC)no subject
Date: 2022-01-09 01:24 pm (UTC)Вот эти две строки ценные тоже:
no subject
Date: 2022-01-09 09:31 pm (UTC)no subject
Date: 2022-01-09 10:03 pm (UTC)О. Прочитал снова. Нет, все так. Я перепутал J и J1.
no subject
Date: 2022-01-09 02:39 pm (UTC)no subject
Date: 2022-01-09 09:31 pm (UTC)no subject
Date: 2022-01-09 10:41 pm (UTC)no subject
Date: 2022-01-10 05:35 am (UTC)no subject
Date: 2022-01-09 11:19 pm (UTC)no subject
Date: 2022-01-10 05:43 am (UTC)no subject
Date: 2022-01-10 06:44 am (UTC)no subject
Date: 2022-01-10 10:04 pm (UTC)Всё равно непонятно, зачем третий массив.Мне тут объяснили - это интерполяция функции от двух переменных. В массиве S образуются интерполированные значения по одной координате по линии X1, а потом они используются для интерполяции по линии X2. Одно осталось не очень понятно, что там за трюки с индексами по массиву Y.