![]() |
|
Главная Промышленная автоматика. {xll],x{n-l]), то формулы Лаграижа работают как экстраполяционные. При интегрировании значение xarg несущественно; х1,х2 - нижний и верхний пределы интегрирования. При интерполяции и дифференцировании значения х\ и х2 несущественны. procedure difint(njt,xarg,xl,x2,x,y)result: (res); value n,jt,xarg,xl,x2; real xarg,xl,x2,res; integer n,jt; array x,y; begin real ca,cb,cc,a,b,c,sl,s2,tl,t2,t3,sum; integer j,js,j2,i,jl; switch beta:=no9,no5,no6; start: if jt=3 then go to intgr; if xargx[n-1] then begin j:=n-1; js: = l; go to term end; if xarg,x[2] then begin j: = 2; js: = l; go to term end; comment Определение места аргумента в таблице; js:=2; for i:=2 step 1 until n do begin if xarg<x[i] then go to term; j: = i end; no5: ca: = a; cb:=b; cc: = c; js: = 3; j: = j + l; go to term; no6: a:=(ca-ba)/2; b:=(cb-bb)/2; c:=(cc--c)/2; no9: if jt=2 then go to diff; lntrp:res: = a X xargf 2+b X xarg-j-c; go to fin; " diff: res:=2XaXxarg+b; go to fin; intgr:sum: = 0; sl: = xl; j2: = n; jl: = 2; for i: = l step 1 until n do begin if xlx[i] then go to nol7; jl:=jl + l end; noI7: for i:= 1 step 1 until n do begin j2:=j2-I; if x2x[j2-bl] then go to lagr end i; term: jl:=j2:=j; lagr: for j:=jl,jl + l step 1 until j2 do begin a:=x[j-1]-x[j]; ; b: = x[j-1]-x[] + I]; c:=:a-b; tI:=:y{i-l]/(aXb); t2:=y[i]/(aXc); t3:=-y[j + l]/(bXc); a:=tH-t2-bt3; b:=-(x[i] -bxO-M]) Xtl-(x[j-l] +x[j + l]) Xt2 -(x[-I]+x[i])Xt3; c:=x[j]Xx[i +l]Xtl-f x[j-l]XxO +llXt2-f x[]-l]XxO]Xt3; if it=53 then go to betaOs]; ifj=jlthen begin ca: = a; cb:=b; cc:=c; end else fin: begin ca:=(a + ca)/2; cb:= (b+cb)/2; cc:=(c+cc)/2 end; s2:=xlj]; sum:=sum+caX (523-513)/3 + сЬХ (522-&12)/2 + ccX(s2-si); ca:=a; cb:=.b; cc:=c; sl: = s2 end j; res: = sum + caX (х23-slf 3)/3+€bX (х22-512)/2+ссХ (x2-sl); end difint; Свидетельство к алгоритму 776 Алгоритм 776 получен из алгоритма 77а путем внесения в него-модификации, предложенной Э. М. Каплинским в его «Замечании к алгоритму 77а» [38]. Алгоритм 776 был транслирован на машине М-220 в системе ТА-1М, и с ним были проведены расчеты для значений параметров х1=0; x2=:2; x[i]=xl +(i-l) {x2-xl)ln, где n=5, 10, 20, 50, 100, 200; y[i\==exp{xli]) для i=l, 2,..., n+l; xarg=0.5, 0.9, 1, 1.077, 1.57, 2.1, 2.5; jt=l, 2, 3. Некоторые из результатов приведены в табл. 12 (для п=200) и 13 (для xarg 1.57). Таблица 12
Таблица 13
Контрольные значения для табл. 12 были получены в результате вычисления значений машиной М-220 по стандартной программе системы ТА-1М. Последние две строчки в табл. 12 показывают гораздо большие погрешности интерполяции и диф.ференцирования вследствие того, что в этих случаях {xarg=2A и 2.5) формулы алгоритма работают как экстраполяционные. Контрольные значения для интегрирования были получены в ре- зультате вычисления машиной М-220 значения интеграла J edx=e - 1 по стандартной программе системы ТА-1М. Точно такое же значение е- можно найти в таблицах Б. И. Сегала и К. А. Семендяева [37, с. 450]. Свидетельство к алгоритму 77а Алгоритм 77а получен в результате исправления, сокращения и ординарной переработки алгоритма 77 (И е п п i о п Р. Е. «САСМ», 1962, № 2). Кроме ошибок, указанных в нижеследующих «Подтверждении» и «Замечании», в алгоритме 77 было исправлено следующее. 1. Метка start стояла перед описанием. По-видимому, она должна стоять перед первым оператором процедуры. 2. Оператор, следующий после comment End of loop on [jm] index; должен иметь вид sum: == sum -bca X (xup f 3-sylf 3) /3 +tb Xi (xupf 2-sylf 2)/2 -b ccX (xup-syl); В алгоритме 77a этому оператору соответствует оператор в седьмой строке от конца процедуры. 3. В примечании к алгоритму 77 отсутствовали сведения о значениях формальных параметров в заголовке процедуры. Идентификаторы алгоритма 77а соответствуют идентификаторам алгоритма 77 следующим образом:
Перевод «Замечания к алгоритму 77» (Hennion P. Е. «САСМ», 1963, № 8) здесь не .приводится, поскольку в дальнейшем был опубликован его исправленный вариант («САСМ», 1963, № 11). Алгоритм 77а проверен с помощью транслятора ТА-1 для функций logx при xarg=2.5, п = 21, л;1 = 1, л;2=2 с равным шагом по аргументу *. * Результаты трансляции, приводившиеся ранее в «Свидетельстве к алгоритму 77а» 123], здесь опущены, поскольку в «Свидетельстве к алгоритму 776» даны более точные, детальные и показательные результаты решения по этому алгоритму. (Прим. ред.) 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 |