📄 mpolyval.m
字号:
function Y = mpolyval(P,X)
% MPOLYVAL - evaluate matrix polynomial
%
% Y = mpolyval(P,X)
%
% If X is a numerical or symbolic array, evaluate the matrix polynomial P
% at these values. If either X or P is scalar, Y is returned as a matrix;
% otherwise, Y is returned as a cell array of matrices.
%
% If X is a matrix polynomial, substitute X into P, and return a matrix polynomial.
% This is the same as writing P(X).
% Copyright (c) 2004 by Fritz Keinert (keinert@iastate.edu),
% Dept. of Mathematics, Iowa State University, Ames, IA 50011.
% This software may be freely used and distributed for non-commercial
% purposes, provided this copyright statement is preserved, and
% appropriate credit for its use is given.
%
% Last update: Feb 20, 2004
if ~isnumeric(P)
X = sym(X);
end
if ~isnumeric(X)
P = sym(P);
end
if ~isa(X,'mpoly')
% evaluate at points
n = size(X);
X = X(:);
Y = cell(length(X),1);
for i = 1:length(X)
Y{i} = mpolyoneval(P,X(i));
end
Y = reshape(Y,n);
if (prod(n) == 1 | prod(size(P)) == 1)
Y = cell2mat(Y);
end
else
% substitute matrix polynomial into another
Y = mpolyoneval(P,X);
end
function val = mpolyoneval(P,x)
% evaluate matrix polynomial at one value by Horner scheme
n = size(P.coef,3);
val = P.coef(:,:,n);
I = eye(size(x));
for j = n-1:-1:1
val = val * x + P.coef(:,:,j)*I;
end
val = val * x^(P.min);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -