Мне нужно Ароксимуват результати експеременти методом Меньших квадратов!!
Считать Дание експеременту с файла и вивести кривую на екран
import numpy as np
import matplotlib.pyplot as plt
g = [lambda t: t**3,
lambda t: t**2,
lambda t: t**1,
lambda t: 1.0]
def approximate(x,y,basis):
N = len(y)
m = len(basis)
#A*x = b
A = np.matrix(np.zeros((m,m)))
b = np.matrix(np.zeros((m,1)))
for j in xrange(0,m):
for i,xi in enumerate(x):
b[j] += basis[j](xi)*y[i]
for k in xrange(0,m):
A[j,k] += basis[j](xi)*basis[k](xi)
try:
return np.linalg.inv(A)*b
except Exception,ex:
return np.linalg.pinv(A)*b
x = [1,2,3,4,7]
y = [5,3,2,5,9]
p = approximate(x,y,g)
p = np.array(p.flatten())[0]
def ap_s(basis,param,x):
return sum(b(x)*p for (b,p) in zip(basis,param))
a = plt.subplot(111)
a.plot(x,y)
xx = np.linspace(min(x),max(x),100)
a.plot(xx,ap_s(g,p,xx))
plt.show()
except Exception as ex