- Scilab help
- Linear Algebra
- aff2ab
- balanc
- bdiag
- chfact
- chol
- chsolve
- classmarkov
- cmb_lin
- coff
- colcomp
- companion
- cond
- det
- eigenmarkov
- ereduc
- expm
- fstair
- fullrf
- fullrfk
- genmarkov
- givens
- glever
- gschur
- gspec
- hess
- householder
- im_inv
- inv
- kernel
- kroneck
- linsolve
- lsq
- lu
- lyap
- nlev
- orth
- pbig
- pencan
- penlaur
- pinv
- polar
- proj
- projspec
- psmall
- qr
- quaskro
- randpencil
- range
- rank
- rankqr
- rcond
- rowcomp
- rowshuff
- rref
- schur
- spaninter
- spanplus
- spantwo
- spec
- sqroot
- squeeze
- sva
- svd
- sylv
- trace
Please note that the recommended version of Scilab is 2026.0.0. This page might be outdated.
See the recommended documentation of this function
aff2ab
linear (affine) function to A,b conversion
Calling Sequence
[A,b]=aff2ab(afunction,dimX,D [,flag])
Arguments
- afunction
- a scilab function - Y =fct(X,D)where- X, D, Yare- listof matrices
- dimX
- a p x 2 integer matrix ( - pis the number of matrices in- X)
- D
- a - listof real matrices (or any other valid Scilab object).
- flag
- optional parameter ( - flag='f'or- flag='sp')
- A
- a real matrix 
- b
- a real vector having same row dimension as - A
Description
aff2ab  returns the matrix representation of an affine
    function (in the canonical basis).
afunction is a function with imposed syntax:
    Y=afunction(X,D) where X=list(X1,X2,...,Xp) is
    a list of p real matrices, and Y=list(Y1,...,Yq) is
    a list of q real real matrices which depend linearly of
    the Xi's. The (optional) input D contains 
    parameters needed to compute Y as a function of X. 
    (It is generally a list of matrices).
dimX is a p x 2 matrix: dimX(i)=[nri,nci]
    is the actual number of rows and columns of matrix Xi.
    These dimensions determine na, the column dimension of 
    the resulting matrix A: na=nr1*nc1 +...+ nrp*ncp.
If the optional parameter flag='sp' the resulting A
    matrix is returned as a sparse matrix.
This function is useful to solve a system of linear equations where the unknown variables are matrices.
Examples
// Lyapunov equation solver (one unknown variable, one constraint) 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 // Lyapunov equation solver with redundant constraint X=X' // (one variable, two constraints) D is global variable 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) // Francis equations // Find matrices X1 and X2 such that: // 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) // Find all X which commute with 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
See Also
- linsolve — linear equation solver
| << Linear Algebra | Linear Algebra | balanc >> |