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, Супермодераторы



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

Сейчас этот форум просматривают: sqribner48, YandexBot [bot]


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

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