def polyFit(xData, yData, m): """ Returns coefficients of the polynomial p(x) = c[0] + c[1]x + c[2]x^2 +...+ c[m]x^m that fits the specified data in the least squares sense. USAGE: c = polyFit(xData,yData,m) INPUT: xData,yData : numpy arrays data to be fitted m : int degree of p(x) OUTPUT: c : numpy array coefficients of p(x) """ import numpy as np from ps12 import gaussElimin def SUM1(j, k, x): s = 0 for i in range(len(x)): s = x[i] ** (j + k) + s return s def SUM2(k, x, y): s = 0 for i in range(len(y)): s = x[i] ** k * y[i] + s return s a = np.zeros([m + 1, m + 1]) for j in range(m + 1): for k in range(m + 1): a[k, j] = SUM1(j, k, xData) b = np.zeros([m + 1, 1]) for k in range(m + 1): b[k, 0] = SUM2(k, xData, yData) x = gaussElimin(a, b) return x
def main(): a = np.array([[2, 1, -1], [-3, -1, 2], [-2, 1, 2]]) b = np.array([[8], [-11], [-3]]) x = ps12.gaussElimin(a, b) x = ps12.LUdecomp(a) y = ps12.LUsolve(x, b)