2014 dxdy logo

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

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




 
 Получить матрицу в MATLAB
Сообщение17.01.2014, 14:04 
Добрый день.
Вопрос из области канонических преобразований матриц в MATLAB.
Подскажите пожалуйста функцию получения такой матрицы из коэффициентов характеристического полинома.
Например для матрицы 4-го порядка имеем характеристический полином
$g(p)=g_1p^4+g_2p^3+g_3p^2+g_4p+g_5$
Нужно получить матрицу
$G=\begin{bmatrix}
g_4 & g_3 & g_2 & g_1\\
g_3 & g_2 & g_1 & 0 \\
g_2 & g_1 & 0 & 0 \\
g_1 & 0 & 0 & 0
\end{bmatrix}$

Конкретно
Код:
clear all
clc
A=[-1.68 9.1   0 0 ;
   -6.22 -5.72 5.1 0;
   2.1   -1.1  -3.4 -0.1;
   4.6 -4 -8.2 -3]

g=poly(A)  %det(sI-A) = g(1)*s^n + g(2)*s^(n-1) + ... g(n)*s + g(n+1)

G=[g(4) g(3) g(2) g(1);
   g(3) g(2) g(1)  0;
   g(2) g(1)  0    0;
   g(1)  0    0    0]

Сейчас такие матрицы формирую «вручную» циклом на базе значений $g(p)$ или непосредственно, как в приведенном выше коде. Хотелось бы получать их командами MATLAB. Может даже одной командой! Причем не «от обратного», зная конечный вид матрицы в канонической форме, а как будто еще не зная матрицы в канонической форме. Такая хитрая постановка в связи с тем, что хочу использовать для учебных целей – чтобы студенты не запутались при формировании такой матрицы «вручную».
Командами канонических преобразований canon, ctrbf, obsvf что-то не получается такую матрицу выудить. Может есть готовая команда?

 
 
 
 Re: Получить матрицу в MATLAB
Сообщение28.01.2014, 23:42 
Код:
N = 4;
g = randi(100,1,N);

G = arrayfun(@(g,y,z) diag(g*ones(1,z),y), g, 0:N-1, N:-1:1, 'UniformOutput',0);
G = fliplr(sum(reshape([G{:}],N,N,N),3));

Так подойдет?

 
 
 
 Posted automatically
Сообщение28.01.2014, 23:56 
Аватара пользователя
 i  Тема перемещена из форума «Computer Science» в форум «Околонаучный софт»

 
 
 
 Re: Получить матрицу в MATLAB
Сообщение02.03.2014, 14:11 
Красивое решение, но как-то сложновато, тем более для студентов. Как мне показалось, такой способ напоминает автоматизацию расстановки «вручную». Видимо стандартных функций для этого нет.
Спасибо за ответ.

 
 
 [ Сообщений: 4 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group