Мой вопрос касается небольшого проекта Python (цифры, изучение математики).
Я относительно уверен, что матрицы Грамма и базы должны быть правильно алгоритмизованы. Он прекрасно работает с базой мономов, но выдает ошибку, которую я не понимаю, для других двух ...
Ошибка - объект модуля не вызывается: в функции prelambdalegendre для for для l oop
import math
from scipy import integrate as int
import numpy as np
def gaussklammer(n):
if n%2==0:
return n
elif n%2==1:
return n-1
monom= lambda x,n: x**n
def prelambdalegendre(x,k):
pol=0
for i in range (0,int(gaussklammer(k)/2)+1):
pol+= (-1)**i *math.factorial(2*k-2*i)/(math.factorial(k-i)*math.factorial(k-2*i)*math.factorial(i)*2**k)*(x**(k-2*i))
return pol
legendre = lambda x,n:prelambdalegendre(x,n)
normlegendre =lambda x,k: math.factorial(2*k)/(2**k *math.factorial(k)**2) *legendre(x,k)
def grammatrix(baseofchoice,size):
if baseofchoice=='monom':
base =lambda x,k:monom(x,k)
elif baseofchoice=='legendre':
base =lambda x,k:legendre(x,k)
elif baseofchoice=='normlegendre':
base =lambda x,k:normlegendre(x,k)
#More elegant implementations didn't work , unfortunately.
#To add another base, just add another elif statement
A=np.zeros((size,size))
for i in range (0,size):
for j in range (0,size):
f= lambda x : base(x,i)*base(x,j)
A[i][j]=(int.quad(f,-1,1)[0])
return A
print(grammatrix('monom',5))
print(grammatrix('legendre',5))