Академический Документы
Профессиональный Документы
Культура Документы
DESCOMPOSICIN LU
a11
a21
a31
.
.
.
an1
en
la
posicin
que
se
convertir
en
cero).
Esto
es:
Originalmente se tena:
Debido a que [A] = [L][U], al encontrar [L] y [U] a partir de [A] no se altera en nada
la ecuacin y se tiene lo siguiente:
INVERSIN DE MATRICES
La matriz inversa de A es otra matriz que representamos por A -1 y que verifica:
CALCULO DE LA INVERSA
EJEMPLO DE DESCOMPOSICIN LU
PROBLEMA: Encontrar los valores de x1, x2 y x3 para el siguiente sistema de
ecuaciones:
-2 -1
[A] = 5
-1
-4
ITERACIN 1
Factor 1 = (a21 / a11) = 5 / 4 = 1.25
Factor 2 = (a31 / a11) = 1 / 4 = 0.25
Encontrando [U]
Fila 2 = - (factor 1) * (fila 1) + (fila 2)
Fila 3 = - (factor 2) * (fila 1) + (fila 3)
a11 = a11
9
[B] =
7
12
a12 = a12
a13 = a13
a21 = - (1.25) * (4) + (5) = 0
a22 = - (1.25) * (- 2) + (1) = 3.5
a23 = - (1.25) + (- 1) + (- 1) = 0.25
a31 = - (0.25) * (4) + (1) = 0
a32 = - (0.25) * (- 2) + (2) = 2.5
a33 = - (0.25) * (- 1) + (- 1) = - 0.75
-2
-1
3.5
0.25
2.5 - 0.75
[L] = 1.25
0.25
[U] =
Encontrando [L]
ITERACIN 2
Factor 3 = (u32 / u22) = 2.5 / 3.5 = 0.7142857143
Encontrando [U]
Fila 3 = - (factor 3) * (fila 2) + (fila 3)
a31 = - (2.5 / 3.5) * (0) + (0) = 0
a32 = - (2.5 / 3.5) * (3.5) + (2.5) = 0
a33 = - (2.5 / 3.5) * (0.25) + (- 0.75) = - 0.9285714286
[U] =
-2
-1
3.5
0.25
- 0.9285714286
Encontrando [L]
[L] =
1.25
0.25 0.7142857143
Al resolver el sistema anterior, se obtienen los siguientes valores para y1, y2 y y3:
Ejemplo
Calcular la inversa de la siguiente matriz:
A=
-9
-4
-1
[U]=
[L]=
-9
0.5
-10
d1
0.5
d2
0.25 2.5 2
d3
[L]=
0.5
0.25 2.5 2
0
0
d1= 1
0.5d1 + d2= 0
0.25d1 + 2.5d2 + 3= 0
dt=
-0.5
1
[U]=
-9
x1
0.5
x2
-10
1
=
-0.5
x3
x1= (1+0.2+0)/4=0.3
0.5x2+5x3= -0.5
x2= (-0.5+0.5)/0.5=0
-10x3=1
x3= -1/10
A-1 =
[L]=
0.3
-0.1
d1
0.5
d2
0.25 2.5 2
d3
0
=
1
0
d1= 0
0.5d1 + d2= 1
d2= 1+0 = 1
0.25d1 + 2.5d2 + 3= 0
dt=
1
-2.5
[U]=
-9
x1
0.5
x2
-10
x3
1
-2.5
4x1-9x2+2x3= 0
0.5x2+5x3= 1
-10x3= -2.5
-1.25
xt=
-0.5
-0.25
A-1 =
0.3
-1.25
-0.5
-0.1
0.25
Ahora se procede igual que en los pasos anteriores lo nico es que va a cambiar
el vector siguiente:
d1
0.5
d2
0.25 2.5 2
d3
[L]=
d1= 0
0.5d1 + d2= 0
d2= 0+0 = 0
0.25d1 + 2.5d2 + 3= 1
d3= 1 +0 +0 = 1
dt=
0
1
[U]=
-9
x1
0.5
x2
-10
x3
2.3
xt=
1
-0.1
A-1 =
0.3
-1.25
2.3
-0.5
-0.1
0.25
-0.1
//--------------------------------------------------------------------------#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//--------------------------------------------------------------------------#pragma package(smart_init)
#pragma resource "*.dfm"
double A[3][3],B[3][3],U[3][3],L[3][3],T[3][3],LU[3][3],H[3][3],I[3][3];
double Z[3][3],X[3][3];
int V[3][3],i=1,j=1;
TForm1 *Form1;
//--------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
if (i==2)
{
if(j==1) Edit5->Text= A[2][1];
if(j==2) Edit6->Text= A[2][2];
if(j==3) Edit7->Text= A[2][3];
}
if (i==3)
{
if(j==1) Edit8->Text= A[3][1];
if(j==2) Edit9->Text= A[3][2];
if(j==3) Edit10->Text= A[3][3];
}
j++;
if (j==4)
{
i++;
j=1;
}
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
U[3][j]=T[3][j]-((T[3][2]/T[2][2]*(T[2][j])));
}
}
U[1][1]=T[1][1];
U[1][2]=T[1][2];
U[1][3]=T[1][3];
U[2][1]=T[2][1];
U[2][2]=T[2][2];
U[2][3]=T[2][3];
Edit11->Text=AnsiString(U[1][1]);
Edit11->Text=AnsiString(U[1][1]);
Edit12->Text=AnsiString(U[1][2]);
Edit13->Text=AnsiString(U[1][3]);
Edit14->Text=AnsiString(U[2][1]);
Edit15->Text=AnsiString(U[2][2]);
Edit16->Text=AnsiString(U[2][3]);
Edit17->Text=AnsiString(U[3][1]);
Edit18->Text=AnsiString(U[3][2]);
Edit19->Text=AnsiString(U[3][3]);
Edit1->SetFocus();
}
//---------------------------------------------------------------------------
}
//---------------------------------------------------------------------------
Edit29->Text=AnsiString(LU[1][1]);
Edit30->Text=AnsiString(LU[1][2]);
Edit31->Text=AnsiString(LU[1][3]);
Edit32->Text=AnsiString(LU[2][1]);
Edit33->Text=AnsiString(LU[2][2]);
Edit34->Text=AnsiString(LU[2][3]);
Edit35->Text=AnsiString(LU[3][1]);
Edit36->Text=AnsiString(LU[3][2]);
Edit37->Text=AnsiString(LU[3][3]);
}
//---------------------------------------------------------------------------
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button6Click(TObject *Sender)
{
Z[1][2]=0;
Z[2][2]=1;
Z[3][2]=1*(-L[3][2]);
Edit41->Text=AnsiString(Z[1][2]);
Edit42->Text=AnsiString(Z[2][2]);
Edit43->Text=AnsiString(Z[3][2]);
}
//---------------------------------------------------------------------------
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button8Click(TObject *Sender)
{
X[3][1]=Z[3][1]/U[3][3];
X[2][1]=(Z[2][1]-U[2][3]*X[3][1])/U[2][2];
X[1][1]=(Z[1][1]-(U[1][3]*X[3][1])-(U[1][2]*X[2][1]))/U[1][1];
Edit49->Text=AnsiString(X[3][1]);
Edit48->Text=AnsiString(X[2][1]);
Edit47->Text=AnsiString(X[1][1]);
}
//---------------------------------------------------------------------------
X[3][2]= Z[3][2]/U[3][3];
X[2][2]= (Z[2][2]-(U[2][3]*X[3][2]))/U[2][2];
X[1][2]= (Z[1][2]-(U[1][3]*X[3][2])-(U[1][2]*X[2][2]))/U[1][1];
Edit52->Text=AnsiString(X[3][2]);
Edit51->Text=AnsiString(X[2][2]);
Edit50->Text=AnsiString(X[1][2]);
}
//--------------------------------------------------------------------------void __fastcall TForm1::Button10Click(TObject *Sender)
{
X[3][3]= Z[3][3]/U[3][3];
X[2][3]= (Z[2][3]-(U[2][3]*X[3][3]))/U[2][2];
X[1][3]= (Z[1][3]-(U[1][3]*X[3][3])- (U[1][2]*X[2][3]))/U[1][1];
Edit55->Text=AnsiString(X[3][3]);
Edit54->Text=AnsiString(X[2][3]);
Edit53->Text=AnsiString(X[1][3]);
}
//---------------------------------------------------------------------------
}
//---------------------------------------------------------------------------
Edit29->Text= "";
Edit30->Text= "";
Edit31->Text= "";
Edit32->Text= "";
Edit33->Text= "";
Edit34->Text= "";
Edit35->Text= "";
Edit36->Text= "";
Edit37->Text= "";
Edit38->Text= "";
Edit39->Text= "";
Edit40->Text= "";
Edit41->Text= "";
Edit42->Text= "";
Edit43->Text= "";
Edit44->Text= "";
Edit45->Text= "";
Edit46->Text= "";
Edit47->Text= "";
Edit48->Text= "";
Edit49->Text= "";
Edit50->Text= "";
Edit51->Text= "";
Edit52->Text= "";
Edit53->Text= "";
Edit54->Text= "";
Edit55->Text= "";
Edit56->Text= "";
Edit57->Text= "";
Edit58->Text= "";
Edit59->Text= "";
Edit60->Text= "";
Edit61->Text= "";
Edit62->Text= "";
Edit63->Text= "";
Edit64->Text= "";
Edit65->Text= "";
Edit66->Text= "";
Edit67->Text= "";
Edit68->Text= "";
Edit69->Text= "";
Edit70->Text= "";
Edit71->Text= "";
Edit72->Text= "";
Edit73->Text= "";
Edit73->SetFocus();
i=1;
j=1;
}
//---------------------------------------------------------------------------