function F=funmsym(A,fun,x) % funmsym - symbolic evaluation of matrix functions % % F=funmsym(A,fun,x) % % A - the constant matrix % fun - the prototype of the symbolic function % x - independent variable % F - the matrix function % Copyright (c) Dingyu Xue, Northeastern University, China % Last modified 28 March, 2017 % Last modified 18 May, 2022 [V,T]=jordan(A); vec=diag(T); v1=[0,diag(T,1)',0]; v2=find(v1==0); lam=vec(v2(1:end-1)); m=length(lam); for i=1:m k=v2(i):v2(i+1)-1; J1=T(k,k); F(k,k)=funJ(J1,fun,x); end F=V*F*inv(V); end function fJ=funJ(J,fun,x) lam=J(1,1); f1=fun; fJ=subs(fun,x,lam)*eye(size(J)); H=diag(diag(J,1),1); H1=H; for i=2:length(J) f1=diff(f1,x); a1=subs(f1,x,lam); fJ=fJ+a1*H1; H1=H1*H/i; end, end