首页 > 解决方案 > 循环中的荒谬变量更新

问题描述

我是python的初学者。

我正在编写一个简单的脚本来使用克莱默规则计算线性方程组 (Ax= b) 的解。我将系数矩阵 (A) 和常数矩阵 (b) 声明为 numpy 数组,并初始化了一个循环,该循环在原始系数矩阵的列替换后生成三个矩阵。

import numpy as np

A = np.array([[1,2,3],[4,5,6],[7,7,9]])
b = np.array([1,1,1])

var_holder= {}

for i in range(0,3):
    print(A)
    A_changed = np.transpose(A)
    A_changed[i] = b
    var_holder['A_' + str (i+1)] =   np.transpose(A_changed)
    del(A_changed)
    

locals().update(var_holder)
print(A_1)
print(A_2)
print(A_3)

这个输出似乎是三个恒等矩阵,其中 A 在每个迭代步骤中都得到更新。这不是我们想要的。

但是,如果我在循环中声明 A ,它可以解决问题:

import numpy as np

b = np.array([1,1,1])

var_holder= {}

for i in range(0,3):
    A = np.array([[1,2,3],[4,5,6],[7,7,9]])
    print(A)
    A_changed = np.transpose(A)
    A_changed[i] = b
    var_holder['A_' + str (i+1)] =   np.transpose(A_changed)
    del(A_changed)
    

locals().update(var_holder)
print(A_1)
print(A_2)
print(A_3)

我不确定是什么导致变量 A 在每个迭代步骤中更新。请帮助我理解这个问题,以便更清楚。蒂亚!

标签: pythonarraysnumpy

解决方案


推荐阅读