python код для решения линейной системы с помощью факторизации ЛПНП - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь решить линейную систему, которая является ax = b с помощью разложения LDU, где L - нижняя три angular, D - диагональная матрица, а U - транспонирование L, диагональные элементы которого равны 1

, но ошибка, что "TypeError: 'int' объект не может быть подписан"

вот мой код

import numpy as np

s=(4,4)

a=np.array([[4,1,1,1],[1,3,-1,1],[1,-1,2,0],[1,1,0,2]])
l=np.zeros(s)
v=np.zeros(4)
d=np.zeros(4)
y=np.zeros(4)
z=np.zeros(4)
x=np.zeros(4)
b=np.array([0.65,0.05,0.0,0.5])
s=np.zeros(4)
t=np.zeros(4)
k=np.zeros(4)
q=np.zeros(4)
for i in range(4):
  l[i,i]=1


for i in range(4):
  for j in range(i):
    v[j]=l[i,j]*d[j]
    s[i]=s[i]+l[i,j]*v[j]

  d[i]=a[i,i]-s[i]

for j in range(i+1,4):
    for k in range(i):
        t[j]=t[j]+l[j,k]*v[k]

    l[j,i]=(a[j,i]-t[j])/d[i]

y[0]=b[0]

for i in range(1,4):
  for j in range(i):
    k[i]=k[i]+l[i,j]*y[j] # here are the error code that "TypeError: 'int' object isnosubscriptable"#

  y[i]=b[i]-k[i]

for i in range(4):
  z[i]=y[i]/d[i]

x[3]=z[3]

for i in range(2,-1,-1):
  for j in range(i+1,4):
    q[i]=q[i]+l[j,i]*x[j]

  x[i]=z[i]-q[i]


for i in range(4):
  print(x[i])

Я знаю, что это плохой код

, но я действительно не не знаю, почему возникает этот тип ошибки

...