同样接之前共轭下降法的帖子,题目要求是两种方法做对比,我上次忘写了。
是在上一篇代码的基础上改的,改的地方不大,就是去掉beta的计算,以及
d=ri 不需要d=ri + beta*di
最后画了误差(范数对10取对数)和计算次数的关系图。
import numpy as np
import math
from math import log
import matplotlib.pyplot as plt
def generate_matrix(n):
# 使用对角矩阵相加得到三对角矩阵A
array_a = np.diag([-2] * n)
array = np.diag([1] * (n-1))
a = np.zeros((n-1))
b = np.zeros(n)
array_b = np.insert(array, 0, values=a, axis=0)# 添加行
array_b = np.insert(array_b, (n-1), values=b, axis=1)# 添加列
array_c = np.insert(array, (n-1), values=a, axis=0)
array_c = np.insert(array_c