Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
aff2ab
Conversão de uma função linear (afim) para forma A,b
Seqüência de Chamamento
[A,b]=aff2ab(afunction,dimX,D [,flag])
Parâmetros
- afunction
uma função do Scilab
Y =fct(X,D)
ondeX, D, Y
sãolists
de matrizes- dimX
uma matriz de inteiros p x 2 (
p
é o número de matrizes em X)- D
uma
list
de matrizes de reais (ou qualquer outro objeto Scilab válido).- flag
parâmetro opcional (
flag='f'
ouflag='sp'
)- A
uma matriz de reais
- b
um vetor de reais tendo a mesma dimensão de linha que
A
Descrição
aff2ab
retorna a representação matricial de uma
função afim (na base canônica).
afunction
é uma função com sintaxe imposta:
Y=afunction(X,D)
onde X=list(X1,X2,...,Xp)
é uma lista de p matrizes de reais, e Y=list(Y1,...,Yq)
éuma lista de q matrizes reais que dependem
linearmente das Xi
's. A entrada (opcional) D
contém parâmetros necessários para computar Y como uma função
de X (geralmente é uma lista de matrizes).
dimX
é uma matriz p x 2:
dimX(i)=[nri,nci]
é o número real de linhas e colunas
da matriz Xi
. Estas dimensões determinam
na
, a dimensão de coluna da matriz resultante
A
: na=nr1*nc1 +...+ nrp*ncp
.
Se o parâmetro opcional flag='sp'
a matriz
resultante A é retornada como uma esparsa.
Esta função é útil para resolver um sistema de equações lineares onde as incógnitas são matrizes.
Exemplos
// solucionador de equação de Lyapunov (uma incógnita, uma restrição) deff('Y=lyapunov(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q)') A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3]; [Aly,bly]=aff2ab(lyapunov,dimX,D); [Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); lyapunov(Xv,D) Xm=Xv(:); A'*Xm+Xm*A-Q // solucionador de equação de Lyapunov com restrição redundante X=X' // (uma variável, uma restrição) D é variável global deff('Y=ly2(X,D)','[A,Q]=D(:);Xm=X(:); Y=list(A''*Xm+Xm*A-Q,Xm''-Xm)') A=rand(3,3);Q=rand(3,3);Q=Q+Q';D=list(A,Q);dimX=[3,3]; [Aly,bly]=aff2ab(ly2,dimX,D); [Xl,kerA]=linsolve(Aly,bly); Xv=vec2list(Xl,dimX); ly2(Xv,D) // equações de Francis // Achando matrizes X1 e X2 tais que: // A1*X1 - X1*A2 + B*X2 -A3 = 0 // D1*X1 -D2 = 0 deff('Y=bruce(X,D)','[A1,A2,A3,B,D1,D2]=D(:)'+,... '[X1,X2]=X(:);Y=list(A1*X1-X1*A2+B*X2-A3,D1*X1-D2)') A1=[-4,10;-1,2];A3=[1;2];B=[0;1];A2=1;D1=[0,1];D2=1; D=list(A1,A2,A3,B,D1,D2); [n1,m1]=size(A1);[n2,m2]=size(A2);[n3,m3]=size(B); dimX=[[m1,n2];[m3,m2]]; [Af,bf]=aff2ab(bruce,dimX,D); [Xf,KerAf]=linsolve(Af,bf);Xsol=vec2list(Xf,dimX) bruce(Xsol,D) // Achando todas as X que comutam com A deff('y=f(X,D)','y=list(D(:)*X(:)-X(:)*D(:))') A=rand(3,3);dimX=[3,3];[Af,bf]=aff2ab(f,dimX,list(A)); [Xf,KerAf]=linsolve(Af,bf);[p,q]=size(KerAf); Xsol=vec2list(Xf+KerAf*rand(q,1),dimX); C=Xsol(:); A*C-C*A
Ver Também
- linsolve — solucionador de equações lineares
Report an issue | ||
<< Linear Equations | Linear Equations | chol >> |