|
g : = |
1; dx |
[1 ] : = |
dx |
[1 ] — sign (dx |
[1 ]); |
|
if |
dx |
[0 3> |
0 then |
dx |
[0] : = dx [0] — sign (dx [0]); |
|
go |
to |
ml7; |
|
|
|
|
|
ml8 |
: if dx 21 > 0 |
then go to ml9; |
[1 ]); |
|
g : = |
1; dx |
[1 ] : = |
dx |
[1 ] — sign (dx |
|
if |
dx |
[21< 0 |
then dx |
[2 ] : — dx [2] — sign (dx [2]); |
ml9 |
go |
to |
ml7; |
|
|
2 |
do xd [/] : = |
xdn [7); |
: for l : 0 step 1 until |
fin : |
go |
to |
m4; |
|
|
|
|
|
end; |
|
|
|
|
|
|
Программа приближения функции рядом Уолша. Программа предназна
чена для вычисления коэффициентов ряда Уолша для заданной функциональ ной зависимости и определения минимального числа членов ряда, необхо димого для приближения представления функции с заданной степенью точ ности eps.
В результате работы программы формируется массив ар. Число столбцов
этого массива равно трем, а количество строк определяется числом точек, в которых вычисляются значения функции. Первый столбец массива ар от
водится для занесения индекса коэффициента ряда Уолша, который одно значно определяет аналитическое выражение функции Уолша, во второй столбец массива ар записываются коэффициенты ряда Уолша, а третий стол
бец служит для занесения значения относительной погрешности, которая получается при аппроксимации функции числом членов ряда Уолша, рав ным количеству заполненных строк массива ар.
Всю программу можно разбить на две части. В первой части программы вычисляются все я коэффициентов ряда Уолша, а во второй части программы определяются те члены ряда, которые необходимы для аппроксимации функ-. ции с заданной погрешностью eps. В программе реализован способ построе
ния ряда, описанный в четвертой главе. Коэффициенты ряда Уолша вычис ляются в программе по формуле (4-16).
В программе используются следующие обозначения переменных: walsh определяет значение функции Уолша, sigma — десятичный эквивалент двоич ного набора, s, I — индексы функций Уолша, q — наибольший по модулю коэффициент ряда, epsa — заданная абсолютная погрешность, емах — те
кущая наибольшая погрешность.
begin real eps, epsa, emax, fmax, sum, q; integer m, n, k, s, i, j, l, p, sigma, walsh;
array |
sv |
[1 : 14]; |
|
|
|
read |
(eps); |
(svl, |
sv); |
|
|
|
read |
tape |
|
fmax : = |
sv [7]; |
m : = sv |
III; |
n : = sv |
[2]; |
begin |
array f |
[0 |
: n— 1 ], |
ap [0 : n—1, |
1 : 3 ] ; |
integer |
array |
v [1 : m), |
M 0 : m); |
|
read tape (ft, |
f); |
|
|
|
v |
[m] : = |
1; |
|
|
|
|
for k : = m—1 step— 1 |
until |
1 do о [k \ : = v \k + 1 ] X 2; |
epsa : = eps X fmax; |
|
|
for s : = 0 step 1 until n—1 do |
begin sum : = 0; t [0] |
: = |
s; |
•for k : = 1 step 1 until m do begin i : — k—1;
t [k] : = if t [i] ^ 0 then t [г] — v [k ]