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

Функция

Число правильных значащих цифр

Интерполирование

Дифференцирование

Интегрирование

logX

>2

sinX

>4*)

>2

•) За исключением случая интерполяции между первыми двумя точками. (Прик. В. Уиттера)

Эти результаты вполне приемлемы, если учесть сравнительно большой шаг по Л". Тесты, использующие меньшие и неравные шаги по X,. тоже были удовлетворительными.

Также было обнаружено, что для интегрирования существуют следующие ограничения:

1) х1о\хф]; . , .

2) хирха[пор].

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

П. Е. Хеньон (И е п п i о п Р. Е. «САСМ», 1963, № 11)

Мое внимание было привлечено к словам в «Подтверждении к алгоритму 77» (Whitter V. Е. «САСМ», 1962, № 6) о том, что существуют ограничения на верхнюю и нижнюю, границы интегрирования,, т. е. 1) xloxail], 2) хирха{пор]. Чтобы снять эти ограничения, нужно сделать следующие два изменения... **

АЛГОРИТМ 786

Корни полиномов с целыми коэффициентами, получаемые в форме простых дробей [С2]

Процедура ratfact (сокращение от rational - рациональный и factor- множитель) предназначена для нахождения рациональных корней полиномов с целыми коэффициентами. Здесь используется предло-

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

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

В. Уиттер (Whitter V. Е. «САСМ», 1962, № 6)

Эта процедура бьша переведена на язык ВАС-220 (диалект языка АЛГОЛ-60) и проверена на машине Burroughs 220. Были обнаружены, следующие небольшие ошибки... *

После внесения вышеуказанных поправок процедура была проверена для интерполяции, дифференцирования и интегрирования функции е*, logZ и sin Л" в интервале 1Х5. Двадцать одно значение каждой из функций, взятые с равным шагом по Z и с точностью до семи, значащих цифр, были сведены в таблицу на вышеуказанном интервале. Затем была проверена процедура; табл. 14 показывает полученную точность.

Таблица 14



женное Дж. Пеком расширение хорошо известного метода вычисления полиномов по схеме Гориера. Полином f{x)=ao+aiX+\.. +а„л;" с целыми коэффициентами и с aoXGn=#=0 имеет в качестве корня несократимую дробь pfq тогда и только тогда, когда аод+а±-р-[-.+ +a„ i9p"-i + a„p«=0. Кроме того, q должно быть множителем «„, а р - множителем ас Ненулевые рациональные корни p/q выводятся на внешний носитель информации с помощью процедуры outreal через канал с номером k. Массив а имеет размерность [0:п]. procedure ratfact(a,n,k);

value n,k; integer n,k; integer array a;

begin integer i,p,q aO: = abs(a for p: = l s

,r,t,f,g,aO,an; .0]); an: = abs(a[n]); ep 1 until aO do begin comment Если ip «e множитель коэффициента a[0] или q не множитель коэффициента a[n], то переходим на конец цикла для продвижения в соответствующем списке цикла;

if (аО-нр) храО then go to finp; for q:= step 1 until an do

begin if (an-4-q) Xqan then go to finq;

comment Для проверки, является ли p/q корнем, вычисляем полином. Определение значения г дает экономию одного вычисления переменной с индексом; f: = g: = a[0]; t: = p; for i: = 1 step 1 until n do begin r: = a[i]Xt;

f: = fXq + r; g:=-gXq+r; t:=tXp end i; if f=0 then

begin outreal (k,p); outreal (k,q) end; if g=0 then

begin outreal (k,-p); outreal (k,q) end; finq: end q;

finp: end p end ratfact;

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

Процедура ratfact алгоритма 786 является стереотипным переизданием процедуры ratfact алгоритма 78а. В пояснительные тексты и в «Подтверждения» были внесены некоторые уточнения редакторского характера.

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

Алгоритм 78а получен в результате исправления, ординарной переработки и некоторой модификации алгоритма 78 (Perry С. «САСМ», 1962, № 2).

Модификация состояла в добавлении двух переменных аО и сп и двух операторов aO:=a&s(a[0]); и an: = abs{a[n]); что дает сокращение времени работы алгоритма. Кроме того, процедура print была заменена стандартной процедурой outreal, что заставило ввести новый фор-



мальный параметр k - номер канала. Исправлена ошибка: удаленьз границы индексов в спецификации массива а.

Алгоритм был проверен с помощью транслятора ТА-1 для следующих полиномов:

1) 3+14x-f3x2-36x3, я=3. Результат: Xi=-1/3, Х2-З/А, Хз=-3/9.

2) 3-X-22x2-fi24x3, п=3. Результат: Xi=il/2, Х2=-1/3, Хз=3/4, Х4=3/6.

В обоих случаях последний корень совпадает по значению с первым.

Подтверждение к алгоритму 78

М. Халстид (Н а 1 s t е а d М. Н. «САСМ», 1962, № 3)

Процедура ratfact была переведена на язык NELIAC и проверена на машине UNIVAC-M-I90 Countess и на машине CDC 1604. Были вычислены корни полиномов порядка от двух до шести. Не потребовалось никаких исправлений. Было замечено, что для полинома, коэффициенты которого имеют общий множитель, будут выдаваться избыточные значения р/д, в которых эта дробь была действительным корнем, но лишь одно, в котором значения р и q содержат общий множитель.

Подтверждение к алгоритму 78

Д. М. Коллисон (Collison D. М. «САСМ», 1962, № 8)

Алгоритм был успешно проверен с помощью транслятора Elliott ALGOL на машине National Elliott 803. Было замечено, что кратный рациональный корень может быть напечатан процедурой только один раз.

АЛГОРИТМ 796

Коэффициенты полиномиальной аппроксимации производной любого порядка от табличной функции [D4]

Процедура dicol выдает коэффициенты coef для п ординат (соответствующих абсциссам xtab) в я-точечном конечно-разностном выражении для k-й производной, вычисляемой в точке хр. Используемый метод состоит в определении аналитического выражения для k-u производной каждого коэффициента в п-точечной интерполяционной формуле Лагранжа и вычислении этого выражения в точке хр. При k=0 будут вычисляться сами интерполяционные коэффициенты Лагранжа..

procedure dicol (k,n,xp,xtab) result: (coef);

value k,n,xp; real xp; integer k,n; array xtab.coef; begin real factk,sum,denom,part; integer i,terms,j,m,high;

integer array xuseILn-1];

factk: = l;

for i: = 2 step 1 until к do factk:=iXfactk; terms: = n-к-1; if terms<0 then go to zz; for ]: = 1 step I until n do begin sum:=0; denom:=part: = l;





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.0035