Главная Промышленная автоматика.

const:

vana:

begin comment Отыскивается ql, являющийся множителем an; if q = 1 then go to varia; if (atn]-q)Xq=a[n] then begin comment Далее проверка: не является ли q общим множителем для всех ги for i:=0 step 1 until п- do

if (a[i]-bq) xq¥=a{i] then go to varia; for i:=0 step 1 until n do a[i]: = a[i]/q; c: = cXq; go to const

end const. Затем проверка: является ли (рх-Множнтелем многочлена;

f: = aIO]; g: = l;

for i: = 1 step 1 until n do

begin g: = gXp; f:=fXq + gXa[i] end i; if f=0 then

begin comment Данный двучлен (px-q) является множителем. Далее делим на него наш полином;

г:=г-Ы; u[r]i = p; vi:r]: = q;

for i:=0 step 1 until n do begin

a[il: = f:=(ai[iH-f)/p; f: = fXq end i; n: = n-1;

go to if n=0 then fin else varia end f;

q:=-q;

if q<0 then go to varia end q end p;

fin: if n==0 then c: = cXa[0] end factors;

Свидетельство к алгоритму 756

Алгоритм 756 является стереотипным переизданием алгоритма 75а.

Свидетельство к алгоритму 75а

Алгоритм 75а получен в результате сокращения и ординарной переработки процедуры, приведенной в «Подтверждении к алгоритму 75» А. П. Релфа (Relph А. Р «САСМ», 1962, № 7). Перевод подтверждения Дж. Хилмора («САСМ», 1962, № 8) здесь не приводится как потерявший свое значение после публикации алгоритма 75а.

Алгоритм 75а проверен с помощью транслятора ТА-1 для многочленов Зл;3-29л;2--78л;-40 и л;-6x2-1-32. Получены правильные резуль-

таты:

для первого многочлена 1 X (х-4) {х-5) (Зх-2); для второго многочлена lX(x-f-2) (х-4) (х-4).



* Далее указываются две поправки к алгорит.му 75 и приводится новый вариант процедуры factors, в результате переработки которого получен алгоритм 75а. {Прим. ред.)

А. П. Релф (Relph А. Р. «САСМ», 1962, № 7)

Алгоритм 75 был транслирован с использованием транслятора DEUCE ALGOL и дал удовлетворительные результаты после следующих исправлений... *

Свидетельство к алгоритму 766 [Ml]

Алгоритм 766 «Процедуры сортировки» здесь не приводится, поскольку соответствующий алгоритм 76 («САСМ», 1962, № 1) не пригоден ни к какой переработке по причинам, указанным в нижеследующем «Замечании» Б. Рэнделла.

Замечание к алгоритму 76

Б. Рэнделл (Randell В. «САСМ», 1962, № 6)

В процедурах сортировки были обнаружены следующие типы ошибок.

1. Описания процедур не начинаются с символа procedure.

2. В спецификациях массивов даются границы индексов.

3. Символ « = » используется вместо символа «: = » в операторах присваивания и в заголовках циклов.

4. Большое число точек с запятой опущено (обычно после end).

5. Выражения в описках граничных пар в описаниях массивов зависят от локализованных переменных.

6. В некоторых операторах процедур отсутствуют правые скобки.

7. Условные операторы следуют за then.

8. Нет описаний для А или Z, что является, по-видимому, опечаткой.

9. В некоторых процедурах делается попытка использовать некоторые идентификаторы для двух различных величин, а иногда попытка дважды описать один идентификатор в том или ином начале блока.

10. В процедуре Presort quadratic selection массив, описанный как двумерный, используется как одномерный.

И. В 0днод1 месте переменная с индексами дается как фактический параметр, соответствующий формальному параметру, специфицированному как массив.

12. В некоторых процедурах идентификаторы, используемые в качестве формальных параметров, вновь описываются и все же используются как параметры.

13. В каждой процедуре в совокупности спецификаций дается k, не заданное в списке формальных параметров.

Не было сделано никакой попытки транслировать или даже понять логику этих процедур. Думается, что такая чрезвычайно неаккуратная попытка использования языка АЛГОЛ никогда не должна появляться в качестве алгоритма в журнале «САСМ».



АЛГОРИТМ 776

Интерполяция, дифференцирование и интегрирование функций [D1, D4, Е1]

Процедура difint может в зависимости от способа обращения к ней выполнять интерполяцию, дифференцирование или интегрирование -функций одной переменной, которые на всем или на интересующей нас части интервала адекватно описываются с помощью двупараболической кривой.

Процедура основана на использовании интерполяционной схемы -Лагранжа, приспособленкой для ооредненных парабол второго порядка. По данному методу вычисляется производная от функции, численно определенной в точках 1, 2, 3 и 4, путем проведения одной параболы через точки 1, 2, 3 и второй параболы через точки 2, 3 и 4. Тогда производная в точке 2 равна среднему значению аналитических производных двух парабол, т. е. коэффициенты параболы iaix\+biX2+Ci), проходящей через точки 1, 2 и 3, и коэффициенты параболы (СгХг+Ьгг-Ь + С2), проходящей через точки 2, 3 и 4, определяются с помощью урав нений Лагранжа, как показано ниже. Арифметические средние значения этих коэффициентов

a{ai+a2)/2, b= {bi+b2)/2, c=,(ci-bC2)/2

используются для получения производной на интервале от точки 2 до точки 3 по формуле (2ах+Ь).

Интерполяция производится аналогично, за исключением того, что конечной формулой является парабола [ах+Ьх+с).

Интегрирование производится подобно построению кривой по точкам. Например, интеграл между некоторыми двумя точками, скажем, 2 и 3, является осредненным интегралом двух парабол между границами независимых координат для точек 2 и 3. Осреднение производится для каждого интервала вдоль абсциссы, так как полученные результаты накапливаются для вычисления определенного интеграла.

С помощью уравнений Лагранжа находятся коэффициенты аь, bk и с*

Путем вычисления t; = У] I Д {Xj - Xi), где yi = f (Xj), /=1,2.....т.

I 1=1.1Ф1

т т т mm

Тогда aft=2?r, Ьй = 2г X 2 Г, Ck = tiX Д данной

процедуре эти формулы применяются для т = 3, Л = 1 и 2.

Значения формальных параметров поясняются ниже: X - массив табличных значений аргумента, имеющий размерность [1:п]; все значения аргумента различны и образуют монотонно возрастающую последовательность;

у - массив табличных значений функций, имеющий размерность :[1:п1;

jt - параметр, задающий режим вьшолнения процедуры difint. Для интерполяции нужно положить lt=l; для дифференцирования it=2, а для интегрирования jt=3;

xarg - значение агрумента, при котором нужно производить интерполяцию или дифференцирование. Если xarg находится вне интервала





0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [16] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43

0.0016