Процесс Грамма-Шмидта

Решаю задачу ортнормирование векторов в унитарном (эрмитовом пространстве). Столкнулся с несколькими трудностями. Не могли бы Вы помочь? Вот мой код для ортонормирования векторов в обычном евклидовом пространстве:

from numpy import linalg as LA

def GramSchmidt(*a):
    k=len(a[0])
    N=len(a);
#Система ортогональных векторов
    b = [[0] * k for i in range(N)]
    b[0]=a[0]
    for i in range(1,N):
        sum=a[i]
        for j in range(0,i):
            scolar_ab=0
            scolar_bb=0
            proj=[i for i in range(k)]
            for n in range(k):
                scolar_ab+=b[j][n]*a[i][n]
                scolar_bb+=b[j][n]*b[j][n]
            for n in range(k):
                proj[n]=(scolar_ab/scolar_bb)*b[j][n]
            for n in range(k):
                sum[n]-=proj[n]
        b[i]=sum
    
#Система ортонормированных векторов
    e = [[0] * k for i in range(N)]
    for i in range(0,N):
        LA.norm(b[i])
        e[i]=b[i]/LA.norm(b[i])
    
    
   
    print("Система ортогональных векторов: ", b)
    print("Система ортонормированных векторов: ", e)
    return e;
    
N = int(input("введите число векторов "))    
A = []
for i in range(N):
    A.append(list(map(int, input().split()))) 
    
print("Исходные векторы: ", A)
GramSchmidt(*A)

k=input("Нажмите на любую кнопку, чтобы закрыть программу ") 

Собственно вот с какими трудностями я столкнулся.

1)Как мне сделать, чтобы элементами векторов были комплексные числа? То есть чтобы я сюда, при

for i in range(N):
    A.append(list(map(int, input().split()))) 

Например (1, 1, 1j) Пробовал писать 1j(как мнимая единица) но питон не читает

2)Почему-то при выводе ортонормированных векторов, то есть e: ВЫдаются массивы вместе со словом array Система ортонормированных векторов: [array([0.30151134, 0.30151134, 0.90453403]), array([ 0.88077101, 0.27524094, -0.38533732])] Как его можно убрать? Ведь с вектором b не выдается со словом array


Ответы (0 шт):