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

67.999999

-40.999999 24.999999

-16.999999 9.9999999 4.9999999

9.9999999 -5.9999999 -2.9999999 1. 9999999

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

Р. А. Конджер (С о п g е г ,R. А. «САСМ», 1962, № 6) Процедура была закодирована вручную на языке ФОРТРАН дл» машины IBM 1620. Были найдены необходимыми Следующие поправки... *

После этих исправлений программа была проверена обращением матрицы 6x6 и обращением рез-ультата. Вторичный результат совпадал с исходной матрицей с точностью до ошибок округления.

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

Р. Георг (George R. «САСМ», 1962, № 8)

Эта процедура была запрограммирована на языке ФОРТРАН, переведена в машинный код автоматически и проверена на вычислительной машине George, построенной в Аргоне. Использовалась программа? плавающей запятой, дающая точность максимум Э1 разряд. Обнаружено несколько различных ошибок... **

Пересмотренный алгоритм был проверен на вычислительной (машине LGP-30 с использованием языка АЛГОЛ-30, малого подмножества, языка АЛГОЛ. С ограничениями, приняты.ми в подмножестве, на проверенных матрицах программа работала удовлетворительно.

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

П. Г. Беренц (В eh е г е п z Р. G. «САСМ», 1962, № 1-2)

Эта процедура была пропущена на машине FACIT EDB с использованием языка FASIT ALGOL 1. Были Сделаны некоторые изменения-в процедуре... ***.

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

Алгоритм 596 не публикуется здесь, потому что соответствующий-алгоритм 59 «Нахождение корней вещественного полинома -по -методу Бариса» был позднее заменен в журнале «САСМ» более совершенны-м-алгоритмом 340 («САСМ», 68-Г1).

АЛГОРИТМ 60S

Вычисление интеграла по Ромбергу [D1]

Процедура-функция rombint вычсляет значение интеграла f{x) dx

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

** Рекомендуется восемь поправок к алгоритму 58, учтенных при составлении алгоритма 58а. (Прим. ред.)

*** Предлагается ряд поправок .к алгоритму 58, учтенных при составлении алгоритма 58а. (Прим. ред.)



с погрешностью порядка 2Xk+!2, где feO. При увеличении k на единицу время вычисления, грубо говоря, удваивается.

real procedure rombint(f,a,b,k);

value a,b,k; real a,b; Integer k; real procedure f; begin real d,s,h; integer m,i,j,n; array t[l:k-b 1];

t[l]r=(f?a)+f(b))/2; n: = l;

for i: = l step 1 until к do begin s:==0; n: = 2Xn; h: = d/n;

fori:=l step 2 until n do s: = s + f(a-fjXh); t{i + l]:=(2Xs/n+t[i])/2; m: = l;

for = i step -1 until 1 do begin m:=4Xm;

t[Jl:=t[j + l] + (t[j+ll-t[i])/(m-l) end j end i; rombint:=t[l]Xd end rombint;

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

Процедура-функция rombint алгоритма 606 является стереотипным переизданием процедуры-функции алгоритма 60а. В пояснительный текст внесены уточнения редакторского характера.

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

Алгоритм 60а получен в результате оптимизации и ординарной переработки алгоритма 60 (Bauer F. L. «САСМ», 1961, № 6). Оптимизация состояла в сокращении времени счета, благодаря тому, что после некоторых преобразований выражение 2Хп-1 в первом заголовке цикла по / было заменено на п.

После переработки проведено контрольное решение на ТА-1

для /= I -q rfjf. Результат трансляции 7=0.0308139510. Ручным

счетом получено значение 7=0.03078.

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

Г. Тачер (Тha Cher И. С. «САСМ», 1962, № 3)

Эта процедура была переведена на язык транслятора АСТ-1П для вычислительной машины Royal-Precision LGP-30. Эта система допускает семь значащих десятичных цифр.

Программа была использована для вычисления интегралов У,= f xdx

0.01

0.01

я Л= f x"dx. Результаты приведены в табл. 3.



+ 12

«=

Л и Л

2 5 10 12

1.0899997 1.0899997 1.0899991

0.57076812 0.306J4608 0.25555693

-0.57076842 -0.30614626 -0.2655.5818

19.641113

10.656923 4.9017590 4.7002345

-19.641125 -Ю.656929 -4.9017805 -4.7004402

18.166655X10» 8.4777719X108 1.0408634X10» 0.25000715X10» 0.24999291X10»

-18.166667X10» -8.4777756X10» -1.0408640X10» -0.25000727X10» -0.25001311X10»

И. 3.»

1.0900000

0.26555932

-0.26555932

4.7004831

-4.7004831

0.25000000X10»

-о.гБооосоохю*"

* Истинное значение. {Прим. ред.) ** В оригинале значения для ft=l н к=2 перепутаны местами. (Прил. ред.)

Очевидно, ЧТО процедура дает хорошие результаты для положительных степеней и что даже влияние близости особой точки для отрицательных степеней может быть преодолено.

Область применимости алгоритма могла бы быть расширена путем дополнения списка формальных параметров процедурой check, определяющей, получилась ли достаточная точность без проведения всех итераций. Эта процедура может иметь, например, следующую форму:

procedure check (t! ,t2,f,exit);

real tl,t2; integer f; label exit; begin if abs((t2-tl) Xf)/tl<tolerance Af>mink then goto exit

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

Алгорит.м квадратуры по Ромбергу описывается в работах [13i,

14i].

Подтверждение к алгоритму 60 К. X. Бухнер (В ц с h п е г К. И. «САСМ», 1962, № 5)

С августа 1961 г. эта процедура успешно применялась .к различным задачам на языке ФОРТРАН для машины IBM 1620. Вследствие своей изящности и экономного использования памяти метод вычисления интеграла по Ромбергу вытеснил другие методы в нашей библиотеке программ, например метод Ньютона - Котеса 10-го порядка.

Автор алгоритма 60 ссылается на работу Штифеля, в которой излагаются различные методы численного интегрирования, В том числе и алгорит.м Ромберга.

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

Г. Тачер (Thacher Н. С. «САСМ», 1964, № 7)

Алгоритм квадратуры по Ромбергу с большим успехом использовался многими (Тачер Г. «Подтверждение к алгоритму 60» «САСМ»,





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