线性代数:向量、矩阵数学计算

自媒体 投稿&转载 1282浏览

向量

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sb
%matplotlib inline

# 向量
a = np.array([3,4])

plt.plot(0,0,'or')
plt.arrow(0,0,*a,linewidth=1,head_width=0.2,head_length=0.2,color='b')
plt.xlim(0,4)
plt.ylim(0,5)

plt.arrow(3,0,0,a[1],linewidth=1,head_width=0.1,head_length=0.1,color='r',linestyle='dotted')
plt.arrow(0,0,a[0],0,linewidth=1,head_width=0.1,head_length=0.1,color='r',linestyle='dotted')
plt.grid()

向量相加

a = np.array([1,2])
b = np.array([2,1])
c = a + b
display(c)

plt.plot(0,0,'or')
plt.xlim(0,4)
plt.ylim(0,4)
plt.arrow(0,0,*a,linewidth=1,head_width=0.1,head_length=0.1,color='r')
plt.arrow(a[0],a[1],*b,linewidth=1,head_width=0.1,head_length=0.1,color='r')
plt.arrow(0,0,*c,linewidth=1,head_width=0.1,head_length=0.1,color='b',linestyle='dotted')
plt.text(0.5,1.3,'$\overrightarrow{a}$',color='r',fontsize=15)
plt.text(2.0,2.6,'$\overrightarrow{b}$',color='r',fontsize=15)
plt.text(1.5,1.1,'$\overrightarrow{a}+\overrightarrow{b}$',color='b',fontsize=15)
plt.grid()

标量乘向量

a = 3
b = np.array([2,3])
c = a*b

plt.plot(0,0,'or')
plt.arrow(0,0,*b,linewidth=1,head_width=0.2,head_length=0.2,color='r')
plt.arrow(0,0,*c,linewidth=1,head_width=0.2,head_length=0.2,color='b',linestyle='dotted')
plt.text(1,2,'$\overrightarrow{a}$')
plt.text(5,8,'$3\overrightarrow{a}$')
plt.xlim(0,8)
plt.ylim(0,12)
plt.grid()

线性无关&线性相关

a与b线性相关,a与c线性无关

a = np.array([1,2])
b = np.array([2,4])
c = np.array([1,4])

plt.plot(0,0,'or')
plt.arrow(0,0,*a,linewidth=1,head_width=0.1,head_length=0.1,color='r')
plt.arrow(1,1,*b,linewidth=1,head_width=0.1,head_length=0.1,color='g')
plt.arrow(0.5,2,*c,linewidth=1,head_width=0.1,head_length=0.1,color='b')
plt.text(0.5,1.2,'$\overrightarrow{a}$')
plt.text(2,3.2,'$\overrightarrow{b}$')
plt.text(1.0,4.5,'$\overrightarrow{c}$')
plt.xlim(0,4)
plt.ylim(0,7)
plt.grid()

线性组合

2x - y = -1

0.1x - y = -6

# 计算向量张成
a = np.mat([[2,-1],[1/10,-1]])
b = np.mat([-1,-6]).T
print (np.linalg.solve(a,b))

# 绘制线性组合图
x = np.arange(-10,10)
y1 = 2*x+1
y2 = 0.1*x+6
plt.figure()
plt.plot(x,y1)
plt.plot(x,y2)
plt.plot(2.63157895,6.26315789,'or')

矩阵相乘

v = np.array([[-1,2],[1,4]])
ij = np.array([[3, 1],[1, 2]])
v_t = np.matmul(ij,v)
print (v_t)

矩阵求逆

A = np.mat([[1, -2], [1, -0.1]])
np.linalg.inv(A)

矩阵迹运算(对角线之和)

A = np.diag(np.arange(1,5))
print (A)
np.trace(A)

 

推荐阅读

百度惊雷算法是根据什么来判断有没有作弊的?

关于惊雷算法,有以下要点解读: 1、惊雷算法严厉打击通过刷点击,提升网站搜索排序的作弊行为,同时综合考虑站点质量、历史数据等各纬度特征,针对作弊行为绝不姑息; 2、惊雷算法上线后,依靠刷点击提升搜索排名的效果将不再生效,以往刷点击行为将进行打压。...

内容质量相关的算法有哪些,具体针对什么?

涉及到页面内容质量规范的算法有飓风算法3.0、细雨算法2.0与劲风算法。 1、飓风算法主要针对的是站群以及恶劣采集问题。 站群中的站点/智能小程序大多质量低、资源稀缺性低、内容相似度高、甚至复用相同模板,难以满足搜索用户的需求。 2、细雨算法主要针对......

关注公众号才可下载会中清风算法吗

建议改为页面直接提供下载,用户觉得资源好可以引导用户关注,但不能以关注作为条件让用户下载资源。...