第三章

习题3.2

点击查看代码
def difference_equation(n_terms):  
    # 初始条件  
    x = [-2, -2]  
      
    # 迭代计算差分方程的解  
    for n in range(2, n_terms):  
        x.append(x[n-1] + 2*x[n-2])  
      
    return x  
  
# 设置要计算的项数  
num_terms = 20  # 可以根据需要调整  
  
# 计算并打印结果  
solution = difference_equation(num_terms)  
for i in range(num_terms):  
    print(f"x_{i} = {solution[i]}")
print("学号后四位:3003")

习题3.3

点击查看代码
import numpy as np 
from scipy.sparse.linalg import eigs 
import pylab as plt  
w = np.array([[0, 1, 0, 1, 1, 1],
              [0, 0, 0, 1, 1, 1],
              [1, 1, 0, 1, 0, 0],
              [0, 0, 0, 0, 1, 1],
              [0, 0, 1, 0, 0, 1],
              [0, 0, 1, 0, 0, 0]])
r = np.sum(w,axis=1,keepdims=True)
n = w.shape[0] 
d = 0.85
P = (1-d)/n+d*w/r #利用矩阵广播
w,v = eigs(P.T,1) #求最大特征值及对应的特征向量
v = v/sum(v)
v = v.real 
print("最大特征值为:",w.real)
print("归一化特征向量为:\n",np.round(v,4))
plt.bar(range(1,n+1),v.flatten(),width=0.6)
plt.show() 
print("学号:3003")

posted @ 2024-10-28 18:37  背着空调去上学  阅读(18)  评论(0)    收藏  举报