LINUX.ORG.RU

[maple] Не интегрируется процедура


0

1

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

В чем ошибка и как ее устранить?

★★
Ответ на: комментарий от anonymous

Не то скопипастил из maple. Там должно быть walsh(1, x)

bk_ ★★
() автор топика
Ответ на: комментарий от anonymous

Не помогает.

evalf(int(walsh(1, y), y = -.5 .. .5))

Error, (in walsh) cannot determine if this expression is true or false: 2*y < -1
bk_ ★★
() автор топика

Задача на самостоятельную работу в универе?

Хех. Как это? «Давно я в руки не брал» maple...

А дело в том, что ты используешь «кусочные» функции. В maple с ними работают по особому. В твоем случае даже график командой plot не построишь. получишь тот же Error.

Решать за тебя не буду. Но в помощи maple можно ввести слово piecewise. Читай - там не много, но попотеть в решении придется. Задача так просто не решается, но заслуживает внимания!

RabidRabbit
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.