Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2023.1.0 - Português


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) onde X, D, Y são lists 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' ou flag='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 inv >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon May 22 12:42:12 CEST 2023