Ошибка заключается в неправильной формуле для вычисления коэффициентов вейвлета Хаара на последующих уровнях.
На первом уровне (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);
Правильное исправление кода:
После внесения данного изменения код должен правильно вычислять коэффициенты на последующих уровнях и соблюдать равенство Парсеваля.
Ошибка заключается в неправильной формуле для вычисления коэффициентов вейвлета Хаара на последующих уровнях.
На первом уровне (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>");
}
После внесения данного изменения код должен правильно вычислять коэффициенты на последующих уровнях и соблюдать равенство Парсеваля.