Python最小二乘法矩阵
最小二乘法矩阵
#!/usr/bin/envpython #-*-coding:utf-8-*- importnumpyasnp defcalc_left_k_mat(k): """ 获得左侧k矩阵 :paramk: :return: """ k_mat=[] foriinrange(k+1): now_line=[] forjinrange(k+1): now_line.append(j+i) k_mat.append(now_line) returnk_mat defcalc_right_k_mat(k): """ 计算右侧矩阵 :paramk: :return: """ k_mat=[] foriinrange(k+1): k_mat.append([i,i+1]) returnk_mat defpow_k(x,k): """ 计算x列表中的k次方和 :paramx:点集合的x坐标 :paramk:k值 :return: """ sum=0 foriinx: sum+=i**k returnsum defget_left_mat_with_x(k_mat,k): """ 将左侧k矩阵运算得到左侧新的矩阵 :paramk_mat: :paramk: :return: """ left_mat=[] forklink_mat: now_data=[] forkinkl: now_data.append(pow_k(x,k)) left_mat.append(now_data) returnleft_mat defget_right_mat_with(right_k_mat): """ 将右侧k矩阵运算得到右侧新的矩阵 :paramright_k_mat: :return: """ right_mat=[] foriinrange(len(right_k_mat)): sum=0 forxL,yLinzip(x,y): a=(xL**right_k_mat[i][0])*(yL**right_k_mat[i][1]) sum+=a right_mat.append(sum) returnright_mat deffuse_mat(left,right): """ 融合两个矩阵 :paramleft: :paramright: :return: """ new_mat=[] foriinrange(len(left)): asd=np.append(left[i],right[i]) new_mat.append(list(asd)) returnnew_mat if__name__=='__main__': k=3 x=[1,2,3] y=[1,2,3] #计算原始左侧K矩阵 left_k_mat=calc_left_k_mat(k) print("原始左侧K矩阵") print(left_k_mat) #计算原始右侧K矩阵 right_k_mat=calc_right_k_mat(k) print("原始右侧k矩阵") print(right_k_mat) #计算左侧k矩阵 new_left_mat=get_left_mat_with_x(k_mat=left_k_mat,k=k) #计算右侧k矩阵 new_right_mat=get_right_mat_with(right_k_mat=right_k_mat) print("计算后左侧K矩阵") print(new_left_mat) print("计算后右侧侧K矩阵") print(new_right_mat) print("-----"*10) #融合两个矩阵左侧矩阵每一行增加右侧矩阵的对应行 new_all=fuse_mat(new_left_mat,new_right_mat) print("完整矩阵") print(new_all)
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接