2.编写python程序,仅用numpy库,实现如下功能: (1)利用Numpy随机数模块创建两个数组或矩阵 (2)计算两个数组的基本运算,包括加、减、乘、除、幂、点积等 以某一个矩阵为例,完成其线性代数运算,包括逆矩阵、广义逆矩阵、行列式、特征值、特征向量级奇异值分解、范数等。
时间: 2024-09-24 20:21:46 浏览: 49
在Python中,我们可以使用NumPy库来处理数组和矩阵的各种运算。以下是一个例子,展示了如何创建数组,进行基本运算以及线性代数的一些操作:
```python
import numpy as np
# 1. 创建数组或矩阵
arr1 = np.array([1, 2, 3, 4]) # 一维数组
arr2 = np.array([[1, 2], [3, 4]]) # 二维数组(矩阵)
# 2. 基本运算
# 加法
sum_arr = arr1 + arr2
# 减法
diff_arr = arr1 - arr2
# 乘法(元素wise)
mul_arr = arr1 * arr2
# 除法(元素wise,注意会报错,因为除数为零)
try:
div_arr = arr1 / arr2
except ZeroDivisionError:
print("除数不能为零")
# 幂运算
pow_arr = arr1 ** 2
# 点积(内积)
dot_product = np.dot(arr1, arr1)
# 3. 线性代数运算
# (假设arr2是非奇异矩阵)
try:
# 逆矩阵
inv_matrix = np.linalg.inv(arr2)
# 广义逆矩阵(当arr2不可逆时)
pinv_matrix = np.linalg.pinv(arr2)
# 行列式
det = np.linalg.det(arr2)
# 特征值和特征向量
eigenvalues, eigenvectors = np.linalg.eig(arr2)
# 奇异值分解
u, s, vh = np.linalg.svd(arr2)
# 范数
norm = np.linalg.norm(arr2)
print("\n线性代数运算结果:\n")
print("逆矩阵:", inv_matrix)
print("广义逆矩阵:", pinv_matrix)
print("行列式:", det)
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)
print("奇异值分解:\n", "U:\n", u, "\ns:\n", s, "\nV^H:\n", vh)
print("范数:", norm)
except np.linalg.LinAlgError as e:
print("错误:", str(e))
```
以上代码演示了如何进行基本的数组运算和一些常用的线性代数操作。注意在实际应用中,对于某些特殊条件(如除数为零或矩阵不可逆),可能会抛出异常。在尝试运算之前,最好先检查输入的合法性。
阅读全文