maple 12
Есть такая процедура (ортогональные функции Уолша)(парсер лох, пожрал все форматирование):
walsh := proc (i, v) local n, p; n := floor((1/2)*i); p := `mod`(i, 2); if i = 0 then if v < -1/2 then return 0 elif 1/2 < v then return 0 else return 1 end if else return min(1, (-1)^(floor((1/2)*n)+p)*(walsh(n, 2*v+1/2)+(-1)^(n+p)*walsh(n, 2*v-1/2))) end if end proc
Функция написана корректно и простой ее вызов вычисляется без ошибок:
> walsh(1, .2);
1
Но когда я хочу проинтегрировать ее по интервалу от -0.5 до 0.5, вылетает такая ошибка:
> int(wal1(y), y = -.5 .. .5);
%;
Error, (in walsh) cannot determine if this expression is true or false: 2*y < -1
В чем ошибка и как ее устранить?