python-3.7 - 在python的for循环中使用Ax = b中的先前值x(i-1)获取x(i)数组很热
问题描述
我的代码有问题,欢迎需要帮助。
我从 Excel 文件(此处)创建了一个数组。第一行给出的数据是系统的初始条件。x(i) 应该是我每行的 C1、C2 和 C3。
我在 Ax=b 中求解 x,使用先前的计算值为每一步创建向量 x(i),而不是从 excel 文件中获取先前的值。(我正在使用蜘蛛)
我想解决 x 考虑到之前计算的 x(i-1) 。
有人可以给我一些指导来处理这个问题吗?先感谢您。
# Import data from Excel file:
data = pd.read_excel('3zones_DataObserved_1.xlsx', sheet_name='Sheet1')
# Constant variables:
v1 = 30
v2 = 35
v3 = 30
dt = 5
# Solving x in Ax=b:
dataarray = data.to_numpy()
countr = 1
for i in range(1,len(dataarray)):
# matrix A 3x3
A = np.array([[v1/dt+dataarray[i][4]/2, -dataarray[i][4]/2, -dataarray[i][4]],
[-dataarray[i][5]/2, v2/dt+dataarray[i][5]/2, -dataarray[i][5]/2],
[-dataarray[i][6]/2, -dataarray[i][6]/2, v3/dt+dataarray[i][6]/2]])
# vector A 3x1
b = np.array([[v1*dataarray[i-1][3]/dt-dataarray[i-1][4]*dataarray[i-1][0]/2+dataarray[i][7]/2],
[v2*dataarray[i-1][3]/dt-dataarray[i-1][5]*dataarray[i-1][1]/2+dataarray[i][8]/2],
[v3*dataarray[i-1][3]/dt-dataarray[i-1][6]*dataarray[i-1][2]/2+dataarray[i][9]/2]])
# vector A 3x1
x = np.linalg.solve(A,b)
print ("Ite ",countr,":",x[0],x[1],x[2])
countr += 1
解决方案
我假设您想访问先前计算的 x 值。一种方法是在 for 循环之前移动 x 的定义。然后在循环体中赋值后,再次进入循环时,x 中有旧的 x 值。
推荐阅读
- unit-testing - Jest 异步测试通知测试以失败结束
- microsoft-cognitive - 为 IoT Edge 部署 Azure 人脸 API
- ignite - Ignite 服务器节点在从缓存存储中抛出用户定义的异常时崩溃
- html - 创建标题/内容 CSS 网格布局的更简洁方法
- dynamics-crm - 我无法在 Dynamics365 中禁用用户
- javascript - 将每个字母更改为大写并将其括在括号中
- arrays - 使用 apply 从矩阵构建特征张量
- python - 读取文件并在 tkinter 中写入行的 Python 函数
- etl - 组合不同的数据流并通过排序输出创建 .txt 文件
- python - 如何避免指数项的数值溢出错误?