# Usamos o numpy para a o produto escalar usual import numpy as np x=np.array([1,2,0,4,0]) y=np.array([2,-1,4,0,2]) # np.dot() é a função de produto escalar para vetores ver help(np.dot)para o caso geral np.dot(x,y) def GramSchimdt(E): '''Aplica o processo de Gram-Schmidt para uma array de vetores ''' n,k = np.shape(E) F = E.copy() for i in range(1,k): F[:,i]=F[:,i]-sum(np.dot(E[:,i],F[:,j])/np.dot(F[:,j],F[:,j])*F[:,j] for j in range(i)) return F # Teste da função: # Exemplo 1 E = np.array([[2,1],[1,0],[0,2]], dtype=float) print(E) F=GramSchimdt(E) print(F) # Exemplo 2 E1 = np.array([[2,1,0],[1,-1,3],[0,2,1]], dtype=float) print(E1) F1=GramSchimdt(E1) print(F1)