import numpy as np import matplotlib.pyplot as plt
X = np.array([20,50,80,110]) Y = np.array([197.8,948.1,2102.5,3832.9]) plt.plot(X, Y, 'ro')
# 生成系数矩阵A defgen_coefficient_matrix(X, Y): N = len(X) m = 2 A = [] # 计算每一个方程的系数 for i in range(m): a = [] # 计算当前方程中的每一个系数 for j in range(m): a.append(sum(X ** (i + j+2))) A.append(a) return A
# 计算方程组的右端向量b defgen_right_vector(X, Y): N = len(X) m = 2 b = [] for i in range(m): b.append(sum(X ** (i+1) * Y)) return b
A = gen_coefficient_matrix(X, Y) print(A) b = gen_right_vector(X, Y) print(b)
a1, a2 = np.linalg.solve(A, b)
# 生成拟合曲线的绘制点 _X = np.arange(0, 130, 10) _Y = np.array([a1 * x + a2 * x ** 2for x in _X])
//下面要进行函数拟合 //构造AX=B的矩阵方程 var A = newArray(); var B = newArray(); var m = velArray.length; //m为数据点的个数 var sumxx = 0; var sumxxx = 0; var sumxxxx = 0; var sumxy = 0; var sumxxy = 0; //定义系数矩阵
for (var i = 0; i < m; i++) { sumxx += Math.pow(velArray[i], 2); sumxxx += Math.pow(velArray[i], 3); sumxxxx += Math.pow(velArray[i], 4); sumxy += (velArray[i] * pressureArray[i]); sumxxy += (Math.pow(velArray[i], 2) * pressureArray[i]); }