分数形式输出设定(直接把这两行代码贴上就可以了):
from fractions import Fraction
np.set_printoptions(formatter={'all':lambda x: str(Fraction(x).limit_denominator())})
矩阵乘法:
import numpy as np
A = np.array([
[1,-1,1],
[1,1,1],
[4,2,1],
[9,3,1]
])
B = np.array([
[0.5],
[-1],
[-0.5],
[2]
])
AB = np.dot(A,B)
若 A X = B AX=B AX=B,用最小二乘法(least square)求解有 X = ( A T A ) − 1 A T B X = (A^TA)^{-1}A^TB X=(ATA)−1ATB,程序如下:
ATA = np.dot(A.T,A) ; print('ATA\n',ATA)
ATA_R = np.linalg.inv(ATA) ; print('ATA的逆矩阵\n',ATA_R)
ATA_RAT = np.dot(ATA_R,A.T) ; print('ATA_RAT\n',ATA_RAT)
x = np.dot(ATA_RAT,B) ; print('x\n',x)
输出结果为: