随机生存100阶线性方程组
import numpy as np
def save_to_csv(A, b, x, filename_prefix="linear_system"):
np.savetxt(f"{filename_prefix}_A.csv", A, delimiter=",")
np.savetxt(f"{filename_prefix}_b.csv", b, delimiter=",")
np.savetxt(f"{filename_prefix}_x.csv", x, delimiter=",")
print(f"数据已保存为 {filename_prefix}_A.csv, {filename_prefix}_b.csv, {filename_prefix}_x.csv")
def load_from_csv(filename_prefix="linear_system"):
A = np.loadtxt(f"{filename_prefix}_A.csv", delimiter=",")
b = np.loadtxt(f"{filename_prefix}_b.csv", delimiter=",")
x = np.loadtxt(f"{filename_prefix}_x.csv", delimiter=",")
print(f"数据已从 {filename_prefix}_A.csv, {filename_prefix}_b.csv, {filename_prefix}_x.csv 加载")
return A, b, x
def generate_linear_system(n=100, low=-10, high=10):
"""
生成一个n阶线性方程组Ax = b,确保存在解x
参数:
n (int): 方程组的阶数
low (float): 随机数下限
high (float): 随机数上限
返回:
A (np.ndarray): n×n系数矩阵
b (np.ndarray): 常数项向量
x (np.ndarray): 解向量(可选)
"""
# 生成随机系数矩阵
A = np.random.uniform(low, high, size=(n, n))
# 生成随机解向量
x = np.random.uniform(low, high, size=n)
# 计算对应的常数项b
b = A @ x
return A, b, x
# 示例:生成100阶方程组
if __name__ == "__main__":
A, b, x = generate_linear_system()
print(f"系数矩阵A的形状:{A.shape}")
print(f"常数向量b的形状:{b.shape}")
# 验证解是否正确(可选)
# 注意:对于大矩阵,避免直接计算,此处仅为示例
residual = np.linalg.norm(A @ x - b)
print(f"残差(验证解的正确性):{residual:.2e}")
# 保存数据到CSV文件
save_to_csv(A, b, x)
# 从CSV文件加载数据
A_loaded, b_loaded, x_loaded = load_from_csv()
# 验证加载的数据是否正确
residual_loaded = np.linalg.norm(A_loaded @ x_loaded - b_loaded)
print(f"加载后的残差(验证解的正确性):{residual_loaded:.2e}")
posted on 2025-03-11 11:37 Indian_Mysore 阅读(7) 评论(0) 收藏 举报
浙公网安备 33010602011771号