线性代数的python实现-线性相关

305 阅读1分钟

假设 SS 是一个集合,其中定义了加法和标量乘法,那么 SS线性组合定义为

αisi,\sum \alpha_i s_i,

其中 αi\alpha_i 是任意实数,sis_iSS 中的第 ii 个对象。有时 αi\alpha_i 的值被称为 sis_i系数。线性组合可以用来描述许多事物。例如,一张杂货单可以写成 cini\displaystyle{\sum c_i n_i},其中 cic_i 是第 ii 项的成本,nin_i 是购买的第 ii 项的数量。因此,总成本是购买的物品的线性组合。

如果集合中的任何一个对象都不能写成集合中其他对象的线性组合,那么这个集合就被称为线性无关的。为了本书的目的,我们只考虑一组向量的线性无关性。不是线性无关的一组向量是线性相关的。

**试一试!**给定行向量 v=[0,3,2]v = [0, 3, 2]w=[4,1,1]w = [4, 1, 1]u=[0,2,0]u = [0, -2, 0],用 vvwwuu 的线性组合写出向量 x=[8,1,4]x = [-8, -1, 4]

书中给出了手动计算的求解:

v = np.array([[0, 3, 2]])
w = np.array([[4, 1, 1]])
u = np.array([[0, -2, 0]])
x = 3*v-2*w+4*u
print(x)

我给出的使用Numpy的求解:

import numpy as np

# 定义行向量
v = np.array([0, 3, 2])
w = np.array([4, 1, 1])
u = np.array([0, -2, 0])

# 转换为列向量并水平叠加
A = np.hstack((v[:, None], w[:, None], u[:, None]))

# 定义目标向量
b = np.array([-8, -1, 4])

# 求解系数
x = np.linalg.solve(A, b)

# 打印结果
print(x)