lecture 2相关知识点 2.19

代码句子(目标:每个句子复习20遍)

np.array

np.zeros1️⃣

np.arange()

plt.spy

np.eye2️⃣

np.roll() 2️⃣

from numpy.linalg import eig

from scipy.linalg import fractional_matrix_power as power

def shift_operator_1d(N):
    I = np.eye(N)
    return np.roll(I,1,axis = 1)

f = np.array([0,0,1,0])
T1 = shift_operator_1d(4)

T3 = power(T1,-1)
print(T3)

def shift_operator_1d(N):
    I = np.eye(N)
    return np.roll(I,1,axis = 1)

1.np.eye(N)

生成一个 N×N 的单位矩阵

  • 不是一个向量(n行1列或者n列一行),而是两个维度相同的矩阵
  • 单位矩阵不是指矩阵内所有元素都是1.【单位矩阵:diagonal元素为1,其余元素全为0】
作用:

生成三种类型的单位矩阵identity matrix:(1)行列数相同,(2)行列数不同,(3)行列数相同,但是单位元素有偏移(垂直于diagonal的两个方向:左上,右下)

function1:output ( n rows n colomns)identity matrix (Identical number of rows and columns)

例一:输出三行三列的单位矩阵: 

import numpy as np

I = np.eye(3)
print(I)

输出:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 0. 1.]]

function2:输出行列数不相同的单位矩阵

例二:输出3行5列的identity matrix

I = np.eye(3, 5)
print(I)


输出:
[[1. 0. 0. 0. 0.]
 [0. 1. 0. 0. 0.]
 [0. 0. 1. 0. 0.]]

3 行 5 列的矩阵(对角线仍然是 1,其余是 0)。 

function3:使用 k 参数 偏移单位矩阵的对角线

I = np.eye(4, k=1)  # 对角线向上偏移 1
print(I)

#输出
[[0. 1. 0. 0.]
 [0. 0. 1. 0.]
 [0. 0. 0. 1.]
 [0. 0. 0. 0.]]

2.np.roll(I,1,axis = 1)

语法

np.roll(a, shift, axis=None)

参数
  • a:输入数组(这里是单位矩阵 I)。
  • shift要移动的步数,可以是正数(右/下移)或负数(左/上移)。
  • axis
    • axis=0 按行移动(纵向)。--y方向
    • axis=1 按列移动(横向)。--x方向
注意:

不要搞混np.roll()和np.eye()中添加第二个参数:k参数进行的操作(可以实操下图中的代码,比较代码1和代码2输出的矩阵的区别)。

下面一张图片的两张代码的作用生成的矩阵一样

#代码1
def shift_operator_1d(N):
    I = np.eye(N)
    return np.eye(N,k=1)
#代码2
def shift_operator_1d(N):
    I = np.eye(N)
    return np.roll(I,1,axis = 1)

3.plt.spy()

plt.spy(A)
plt.show()

作用:用点可视化矩阵中非零元素点位置

语法

plt.spy(A, markersize=10)

参数

A:矩阵

markersize:控制点点大小

4.range(a,b)

--[a,b) 包含a,不包含b

5.

  • 网格分辨率 (N) 影响数值精度

    • 当 N 太小时,有限差分方法可能会出现色散误差,导致波前的小波动。
    • 增加 N(即减少 dx),可以更好地捕捉高频信息,减少数值误差
  • 有限差分方法的数值误差

    • 数值色散(Numerical Dispersion):数值方法的传播速度与真实物理波的速度不同,导致错误的伪波。
    • 数值耗散(Numerical Dissipation):高频分量随着时间推移被削弱,导致波形模糊。
  • 如何优化你的数值计算 ✅ 增加 N(空间分辨率),减少色散误差。
    ✅ 使用高阶有限差分格式(比如 4 阶中心差分),减少误差。
    ✅ 调整 dt(时间步长),避免数值不稳定性。
    ✅ 检查初始条件,避免太陡的梯度造成误差。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值