昆仑山:眼中无形心中有穴之穴人合一

夫君子之行,静以修身,俭以养德;非澹泊无以明志,非宁静无以致远。夫学须静也,才须学也;非学无以广才,非志无以成学。怠慢则不能励精,险躁则不能冶性。年与时驰,意与岁去,遂成枯落,多不接世。悲守穷庐,将复何及!

 

随机生存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)    收藏  举报

导航