Tengo problemas con este codigo para calcular la factorizacion LDL^t, por favor ayuda.
Publicado por Carlos (2 intervenciones) el 20/04/2021 04:52:03
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
n=4
A=creamatriz(n,n)
B=creamatriz(n,n)
D=creamatriz(n,n)
sumad=0
sumab=0
#B=np.identity(n)
#B=np.diag(n,n)
#b=creamatriz(n,1)
#x=creamatriz(n,1)
A=[[4,3,2,1],[3,3,2,1],[2,2,2,1],[1,1,1,1]]
for j in range(n):
if j==0:
for k1 in range (n):
B[k1][k1]=1
print("B",k1,B[k1][k1])
print(np.array(B))
for k in range(j):
sumad+=(B[j][k]**2)*D[k][k]
print("j",j)
print("B",j+1,k+1,B[j][k])
print("D",k+1,D[k][k])
D[j][j]=A[j][j]-sumad
print("Di",j+1,"-----",D[j][j])
print(np.array(D))
for i in range(j+1,n):
B[j][i]=0
for k in range(i):
sumab+=B[i][k]*D[k][k]*B[j][k]
print("i",i)
print("Bik",i+1,k+1,B[i][k])
print("Bjk",j+1,k+1,B[j][k])
B[i][j]=1/D[j][j]*(A[i][j]-sumab)
print("Bjk",i+1,j+1)
print(np.array(B))
print(np.array(D))
los elementos de la matriz B (que es L en el sistema LDL), fallan a partir del B42 y B43 y los elementos de D33 y D34 fallan.
Valora esta pregunta


0