先放代码,有时间补内容
import sympy as sy
import numpy as ny
from scipy import integrate
from guass_swap import gaussin
def InterProduct(f,g,do,up):
val=sy.integrate(f*g,(x, #函数
do,#x下界0
up))#x上界pi
return val
def SquaresApproximation(f,fai,do,up):
ans=0
L=len(fai)
B = ny.transpose(ny.zeros([L]))
G = ny.zeros([L,L])
for i in range(L):
B[i]=InterProduct(f,fai[i],do,up)
for j in range(L):
G[i][j]=InterProduct(fai[i],fai[j],do,up)
print(G)
print(B)
a=gaussin(G,B)
for i in range(L):
ans=ans+a[i]*fai[i]
return ans
if __name__ == '__main__': #当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行。
x = sy.symbols("x")
f = abs(x)#公式
do=-1
up=1
fai=[1,x**2,x**4]
# f= lambda x : abs(x)
# fai = [lambda x : 1,
# lambda x : x ** 2,
# lambda x : x ** 4]
print(SquaresApproximation(f,fai,do,up))