np.linalg.inv():

本文详细介绍了如何使用NumPy库中的linalg.norm函数来计算向量的不同类型的范数,包括二范数、一范数及无穷范数,并通过实例展示了不同参数设置下范数的具体计算方法。
  • (1)np.linalg.inv():矩阵求逆
  • (2)np.linalg.det():矩阵求行列式(标量)

np.linalg.norm

顾名思义,linalg=linear+algebranorm则表示范数,首先需要注意的是范数是对向量(或者矩阵)的度量,是一个标量(scalar)

首先help(np.linalg.norm)查看其文档:

<code class="hljs mathematica has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">norm(x, ord=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">None</span>, axis=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">None</span>, keepdims=<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">False</span>)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li></ul>

这里我们只对常用设置进行说明,x表示要度量的向量,ord表示范数的种类,

参数 说明 计算方法
默认 二范数:2 x21+x22++x2n
ord=2 二范数:2 同上
ord=1 一范数:1 |x1|+|x2|++|xn|
ord=np.inf 无穷范数: max(|xi|)
<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">>>> <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">x</span> = np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.array</span>([<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span>, <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>])
>>> np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.linalg</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.norm</span>(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">x</span>)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.</span>
>>> np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.linalg</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.norm</span>(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">x</span>, ord=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span>)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5.</span>
>>> np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.linalg</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.norm</span>(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">x</span>, ord=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">7.</span>
>>> np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.linalg</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.norm</span>(<span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">x</span>, ord=np<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.inf</span>)
<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>

### np.linalg.inv 功能与用法 `np.linalg.inv` 是 NumPy 中的一个函数,用于计算给定方阵的逆矩阵。如果矩阵 \( A \) 可逆,则其逆矩阵记作 \( A^{-1} \),满足条件 \( A \cdot A^{-1} = I \),其中 \( I \) 表示单位矩阵[^2]。 #### 参数说明 - **参数**: `a`: 输入的方阵 (二维数组), 类型为 ndarray。 - **返回值**: 返回输入矩阵的逆矩阵,类型同样为 ndarray。如果输入矩阵不可逆或者维度不合法,则会抛出异常 LinAlgError[^4]。 #### 使用注意事项 为了成功调用 `np.linalg.inv` 并获得有效的结果,需注意以下几点: - 输入矩阵必须是方阵(即行数等于列数),否则无法定义逆矩阵。 - 如果矩阵奇异(行列式为零),则该矩阵不存在逆矩阵,此时函数将引发错误。 #### 示例代码 以下是使用 `np.linalg.inv` 的具体实例: ```python import numpy as np # 定义一个可逆的 2x2 方阵 A = np.array([[4, 7], [2, 6]]) try: # 计算矩阵 A 的逆矩阵 inverse_A = np.linalg.inv(A) print("原始矩阵:") print(A) print("\n逆矩阵:") print(inverse_A) # 验证原矩阵与其逆矩阵相乘的结果是否接近于单位矩阵 identity_matrix = np.dot(A, inverse_A) print("\n验证: 原始矩阵 * 逆矩阵 是否近似等于 单位矩阵") print(np.round(identity_matrix)) except np.linalg.LinAlgError: print("矩阵不可逆!") ``` 运行以上代码后,可以看到输出如下内容: ``` 原始矩阵: [[4 7] [2 6]] 逆矩阵: [[ 0.72 -0.84] [-0.28 0.56]] 验证: 原始矩阵 * 逆矩阵 是否近似等于 单位矩阵 [[1. 0.] [0. 1.]] ``` 此例子清晰地展示了如何利用 `np.linalg.inv` 来获取并检验矩阵的逆矩阵[^2][^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值