2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Матлаб: как найти лин.оператор для заданых входа и выхода?
Сообщение16.09.2021, 20:26 


26/09/17
326
Даны две матрицы $A$ и $B$, каждый столбец каждой из которых является циклическим сдвигом одного и того же образующего вектор-столбца. Например:
$A=$\begin{pmatrix}
&1, 2, 2& \\
&0, 1, 2& \\
&1, 0, 1&  \\
&2, 1, 0& \\
&2, 2, 1&  \\
\end{pmatrix}$$ $B=$\begin{pmatrix}
&0,1,1& \\
&1,0,2& \\
&2,1,2&  \\
&2,2,1& \\
&1,2,0&  \\
\end{pmatrix}$$
Как найти матрицу $X$ такую, что $XA=B$?

 Профиль  
                  
 
 Re: Матлаб: как найти лин.оператор для заданых входа и выхода?
Сообщение16.09.2021, 23:11 
Заслуженный участник
Аватара пользователя


11/12/05
9957
maximkarimov в сообщении #1531819 писал(а):
Как найти матрицу $X$ такую, что $XA=B$?
Решить систему из 25-ти линейных уравнений?

 Профиль  
                  
 
 Re: Матлаб: как найти лин.оператор для заданых входа и выхода?
Сообщение16.09.2021, 23:20 


26/09/17
326
Интересует реализация соответствующей функции в среде Матлаб.

 Профиль  
                  
 
 Re: Матлаб: как найти лин.оператор для заданых входа и выхода?
Сообщение17.09.2021, 15:18 


26/09/17
326
Разобрался. Может кому пригодится:
код: [ скачать ] [ спрятать ]
Используется синтаксис Matlab M
function [X] = getLO(A,B,mode)
% находим линейный оператор X такой, что  X*A=B
% mode==0 - в символьном виде, иначе приближенные численные значения
% ==== Algorithm ============
X = sym('x', [size(A,1) size(A,1)]);
% составляем и решаем систему уравнений
eqns=X*A==B;
S=solve(eqns,X);
% вытаскиваем решения из структуры и формируем результат
if size(A,1)==1 && size(A,2)==1
    X=S;
elseif size(A,1)>1
    C = struct2cell(S);
    c=sym(zeros(1,size(C,1)));
    for i=1:length(c)
        c(i)=C{i};
    end
    X=reshape(c, size(A,1), size(A,1));
else
    X=nan;
end
if mode~=0
    X=double(X);
end
end
 

Решение для заданных выше матриц $A$ и $B$:
Используется синтаксис Matlab M
X =
 
[   1,    0,  -1, 0, 0]
[   1,    0,   0, 0, 0]
[ 2/3, -1/3, 4/3, 0, 0]
[ 1/3, -2/3, 5/3, 0, 0]
[   1,   -1,   0, 0, 0]

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

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



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

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


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

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