Ошибка при построении разобраться с системой хаара? Есть функция f заданная дискретными значениями есть s[j] - слой вейвлета хаара, для нулевого слоя(уровня) суммы равенства парсеваля sum(f^2)=sum(s[j]^2)+sum(d[j]^2) сходятся , а для последующих нет в чем ошибка?
var f=[],N=8,sum=0;
for(var k=0;k");
document.write("sumr="+sumr+"");
for(var j=1;j");
}
//alert(s);
//alert(d);

21 Авг 2019 в 06:06
179 +1
0
Ответы
1

Ошибка заключается в неправильной формуле для вычисления коэффициентов вейвлета Хаара на последующих уровнях.

На первом уровне (j=1) формула должна выглядеть следующим образом:

s[j][l] = (s[j-1][2l]+s[j-1][2l+1])/Math.sqrt(2);
d[j][l] = (s[j-1][2l]-s[j-1][2l+1])/Math.sqrt(2);

Однако на последующих уровнях (j>1) формула для вычисления коэффициентов должна быть изменена:

s[j][l] = (s[j-1][2l]+s[j-1][2l+1])/Math.sqrt(2);
d[j][l] = (d[j-1][2l]+d[j-1][2l+1])/Math.sqrt(2);

Правильное исправление кода:

for(var j=1;j<=N/4;j++)
{
s[j] = [];
d[j] = [];
sumr=0;
for(var l=0;l<N/Math.pow(2,j+1);l++)
{
s[j][l] = (s[j-1][2*l]+s[j-1][2*l+1])/Math.sqrt(2);
d[j][l] = (d[j-1][2*l]+d[j-1][2*l+1])/Math.sqrt(2);
sumr+=s[j][l]*s[j][l]+d[j][l]*d[j][l];
}
document.write("sumr="+sumr+"<br>");
}

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

20 Апр в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 943 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир