2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 10:12 


26/09/17
294
Встроенная в Матлаб функция дает для заданного вектора ганкелеву матрицу, правый нижний угол которого заполнен нулями. Например:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
>> v=[1 2 3 4]
H=hankel(v)

v =

     1     2     3     4


H =

     1     2     3     4
     2     3     4     0
     3     4     0     0
     4     0     0     0
 
Мне нужно получить ганкелеву матрицу того же порядка, правый нижний угол которой является ее особенным единственным продолжением. Как?
P.S. О том, что это за продолжение см. Лемма 2 стр.242 вот здесь.

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 11:25 


26/09/17
294
До сюда вроде разобрался:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
% Делаем продолжение ганкелевой матрицы

% === Input Data ========
v=[1 2 3 4]

% ====== Algorithm ======
H=sym(hankel([v 0]));
s = sym('x', [1 size(v,2)+1]);
S=flipud(toeplitz(s));
for i=1:size(H,1)
    for j=1:size(H,2)
        if i+j<=5
            S(i,j)=0;
        end
    end
end
HS=H+S
Вот промежуточный результат:
Используется синтаксис Matlab M
HS =
 
[  1,  2,  3,  4, x1]
[  2,  3,  4, x1, x2]
[  3,  4, x1, x2, x3]
[  4, x1, x2, x3, x4]
[ x1, x2, x3, x4, x5]

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 12:51 


26/09/17
294
Уф, получилось! Выкладываю, может кому пригодится:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
% Делаем продолжение ганкелевой матрицы

% === Input Data ========
v=[1 2 3 4];

% ====== Algorithm ======
H=sym(hankel([v 0]));
s = sym('x', [1 size(v,2)+1]);
S=flipud(toeplitz(s));
for i=1:size(H,1)
    for j=1:size(H,2)
        if i+j<=5
            S(i,j)=0;
        end
    end
end
HS=H+S;
eqns=[];
for i=1:size(HS,1)
    eqns=[eqns sum(HS(i,:))==0];
end
SOL=solve(eqns, [s]);
C = struct2cell(SOL);
VS=zeros(1,size(HS,1));
for i=1:size(HS,1)
    VS(i)=C{i};
end
HVS=rot90(toeplitz(VS),1);
for i=1:size(H,1)
    for j=1:size(H,2)
        if i+j<=5
            HVS(i,j)=0;
        end
    end
end
HVS(:,end)=[];
HVS(end,:)=[];
res=HVS+hankel(v)
Результат:
Используется синтаксис Matlab M
>> hankelexTest

res =

     1     2     3     4
     2     3     4   -10
     3     4   -10     1
     4   -10     1     2

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 16:06 
Заслуженный участник


12/07/07
4134
Донецк, Украина
Из статьи Иохвидов И. С. О ганкелевых матрицах и формах. // Ма-тем. сб., 1969, том 80, 241–252
Цитата:
Продолжением ганкелевой матрицы $H_{n-1}$ назовём ганкелеву матрицу $H_{n-1+\nu} = ||s_{i+j}||_{i,j=0}^{n-1+\nu}$ (при любом фиксированном $\nu=1,2,…,\infty$), у которой блок совпадает с матрицей $H_{n-1}$.
<..>
Если ранг матрицы $H_{n-1}$ равен $\rho$ ($ 0 \le \rho \le n$), то особыми продолжениями $H_{n-1+\nu}$ ($\nu = 1,2,\ldots$) назовём те продолжения матрицы $H_{n-1}$, ранги которых остаются равными $\rho$.
<…>
Лемма 2. Если ранг ганкелевой матрицы $H_{n-1}$ равен $\rho (<n)$ и $D_{\rho-1} \ne 0$, то у $H_{n-1}$ существует единственным образом определяющееся особое продолжение $H_n$.
Обратим внимание: особое продолжение строится для квадратной матрицы (по определению) и условием леммы 2 является равенство нулю определителя этой квадратной матрицы.
В приведенном выше сообщении задаётся вектор [1,2,3,4] — первая строка ганкелевой матрицы. Используя элементы этого вектора, можно получить при помощи функции hankel квадратную матрицу, но её определитель не равен нулю
Используется синтаксис Matlab M
>> MM = hankel([1,2,3,4])
MM =  1     2     3     4
      2     3     4     0
      3     4     0     0
      4     0     0     0
>> det(MM)
ans = 256
Продолжением матрицы 4x4 будет матрица 5x5.
maximkarimov в сообщении #1529675 писал(а):
Мне нужно получить ганкелеву матрицу того же порядка, правый нижний угол которой является ее особенным единственным продолжением. Как?
P.S. О том, что это за продолжение см. Лемма 2 стр.242 вот здесь.
Так как просят получить матрицу того же порядка, то, видимо, строится продолжение для матрицы, получающейся отбрасыванием последней строки и последнего столбца. Однако определитель такой матрицы не равен нулю
Используется синтаксис Matlab M
>> MM(:, 4) = []; MM(4, :)=[]
MM = 1     2     3
     2     3     4
     3     4     0
>> det(MM)
ans = 5.0000
Если ещё раз отбросить последнюю строку и столбец, то всё равно определитель не равен нулю. Т.е. как использовать лемму 2, не очевидно. Приведенная в качестве результата квадратная матрица имеет ранг 4, а матрица 3x3 ранг 3
Используется синтаксис Matlab M
>> M = [1,2,3,4; 2,3,4,-10; 3,4,-10,1; 4,-10, 1, 2]
M =  1     2     3     4
     2     3     4   -10
     3     4   -10     1
     4   -10     1     2
>> rank(M)
ans =  4
>> M(:, 4) = []; M(4, :) = []
M = 1     2     3
    2     3     4
    3     4   -10
>> rank(M)
ans =  3
Т.е. не является особым продолжением [как оно определено в статье Иохвидов И. С. О ганкелевых матрицах и формах.].

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 16:30 


26/09/17
294
Продолжение к исходной ганкелевой матрице H порядка n строю не отбрасыванием, а добавлением столбца и строки. Получаю матрицу H1 порядка $n+1$. Решаю. Затем отбрасываю лишние столбец и строку H1 - получаю матрицу Hex, порядок которой равен n. Элементы в правом нижнем углу Hex определены однозначно. Что не так?

P.S. Определитель равен 0 здесь:
Используется синтаксис Matlab M
     1     2     3     4   -10
     2     3     4   -10     1
     3     4   -10     1     2
     4   -10     1     2     3
   -10     1     2     3     4
 
И ранг у нее 4.

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 17:33 
Заслуженный участник


12/07/07
4134
Донецк, Украина
Всё не так, поскольку не соответствует формулировкам статьи (я старательно цитировал их в своём предыдущем сообщении), а собственные Вы не привели. Заменим в приведенной матрице -10 на -1
Используется синтаксис Matlab M
>> M= [1,2,3,4; 2,3,4,-1; 3,4,-1,1; 4,-1, 1, 2]
M =  1     2     3     4
     2     3     4    -1
     3     4    -1     1
     4    -1     1     2
>> rank(M)
ans = 4
Матрица имеет одинаковые элементы вдоль линий, перпендикулярных главной диагонали; ранг матрицы 4. Где же единственность?

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение26.08.2021, 17:52 


26/09/17
294
Единственность имеет особое продолжение исходной матрицы в терминах цитируемого автора. А если говорить о произвольном продолжении, то вариантов действительно счетное множество (Лемма 1)! :D

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение27.08.2021, 00:20 
Модератор


20/03/14
11513
maximkarimov
Номер раз:
maximkarimov в сообщении #1529675 писал(а):
Мне нужно получить ганкелеву матрицу того же порядка, правый нижний угол которой является ее особенным единственным продолжением. Как?

(что уже ерунда, правый нижний угол не может быть продолжением. Уточните собственную терминологию и согласуйте с терминологией источника)
maximkarimov в сообщении #1529714 писал(а):
Продолжение к исходной ганкелевой матрице H порядка n строю не отбрасыванием, а добавлением столбца и строки. Получаю матрицу H1 порядка $n+1$.

Номер два. Вам вроде нужна была матрица того же порядка.

Приведите постановку задачи, пожалуйста. Иначе Вам никто не сможет помочь.

 Профиль  
                  
 
 Re: Матлаб: как получить особое продолжение ганкелевой матрицы?
Сообщение27.08.2021, 08:33 


26/09/17
294
Да я, собственно, разобрался уже, спасибо.
Что до формалистики, то строгая формулировка моей задачи такая: построить ганкелеву матрицу порядка n, первым столбцом которой является (любой) вектор v размера n, а остальные элементы определены ее особым продолжением порядка $n+1$.
Причесанный код:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
function [res] = hankelex(v)
H=sym(hankel([v 0]));
s = sym('x', [1 size(v,2)+1]);
S=flipud(toeplitz(s));
for i=1:size(H,1)
    for j=1:size(H,2)
        if i+j<=size(H,1)
            S(i,j)=0;
        end
    end
end
HS=H+S;
% составляем и решаем систему уравнений
eqns=sym(zeros(1,size(HS,1)));
for i=1:size(HS,1)
    eqns(i)=sum(HS(i,:))==0;
end
SOL=solve(eqns, [s]);
% вытаскиваем решения из структуры и формируем результат
C = struct2cell(SOL);
VS=zeros(1,size(HS,1));
for i=1:size(HS,1)
    VS(i)=C{i};
end
HVS=rot90(toeplitz(VS),1);
for i=1:size(H,1)
    for j=1:size(H,2)
        if i+j<=size(H,1)
            HVS(i,j)=0;
        end
    end
end
HVS(:,end)=[];
HVS(end,:)=[];
res=double(HVS+hankel(v));
end


-- 27.08.2021, 09:55 --

Замечание: существование и единственность особого продолжения ганкелевой матрицы - гениальное открытие И.С. Иохвидова.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: maxal, Toucan, PAV, Karan, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group