2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Получить матрицу в MATLAB
Сообщение17.01.2014, 14:04 


12/11/08
81
Добрый день.
Вопрос из области канонических преобразований матриц в 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 


21/03/10
43
Код:
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 
Админ форума
Аватара пользователя


19/03/10
8952
 i  Тема перемещена из форума «Computer Science» в форум «Околонаучный софт»

 Профиль  
                  
 
 Re: Получить матрицу в MATLAB
Сообщение02.03.2014, 14:11 


12/11/08
81
Красивое решение, но как-то сложновато, тем более для студентов. Как мне показалось, такой способ напоминает автоматизацию расстановки «вручную». Видимо стандартных функций для этого нет.
Спасибо за ответ.

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

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



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

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


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

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